WinCE 응용 프로그램 이 자동 으로 실행 되 는 또 다른 방법 (flash, U 디스크, SD 카드 모두 가능) - 전재

WinCE 응용 프로그램 이 켜 지면 자동 으로 실행 되 는 또 다른 방법 키워드: WinCE 자동 실행
최근 개발 과정 에서 WinCE 응용 프로그램 이 켜 져 자동 으로 실행 되 는 문제 에 부 딪 혀 인터넷 에서 찾 아 보 니 다음 과 같은 세 가지 방법 이 있 었 다.
1. 이미지 에 프로그램 과 프로그램 단축 키 를 추가 하고 StartUp 디 렉 터 리 에 단축 키 를 추가 하면 시스템 이 실 행 된 후에 프로그램 이 자동 으로 실 행 됩 니 다.2. Wince 의 SHELL 을 직접 교체 합 니 다. 즉, 레 지 스 트 를 수정 합 니 다.
[HKEY_LOCAL_MACHINE/init]"Launch50"="explorer.exe""Depend50"=hex:14,00, 1e,00
이 explorer. exe 를 응용 프로그램 으로 바 꿉 니 다 (예: MyApp. exe).3. 이미지 에 프로그램 을 추가 하고 레 지 스 트 를 수정 합 니 다.
[HKEY_LOCAL_MACHINE/init]"Launch80"="MyApp.exe""Depend80"=hex:1E,00
시작 순서 와 의존 프로그램 을 설정 할 수 있 습 니 다.
상기 방법 은 모두 가능 하지만 문제 가 존재 합 니 다. 바로 응용 프로그램 이 NK 에 통합 되 었 다 는 것 입 니 다. 즉, 업그레이드 할 때마다 응용 프로그램 이 커 널 을 다시 컴 파일 하고 다운로드 하 는 것 이 번 거 롭 습 니 다. 특히 프로그램 디 버 깅 단계 에 서 는 응용 프로그램 을 SD 카드 에 두 기 를 원 합 니 다. 이렇게 하면 업데이트 가 비교적 쉽 습 니 다.세 번 째 방법 을 통 해 'Launch 80' = 'MyApp. exe' 를 'Launch 80' = '/STdcard/MyApp. exe' (stdCard 는 SD 카드 디 렉 터 리) 로 수정 할 수 있다 고 하 는데 성공 하지 못 했 습 니 다. Launch 80 이 실 행 될 때 SD 카드 의 파일 구동 이 불 러 오지 않 아 MyApp. exe 파일 을 찾 을 수 없 었 기 때 문 입 니 다.SD 카드 에 있 는 프로그램 을 바로 불 러 오 는 것 도 불가능 하 다.그래서 저 는 다른 방법 을 사 용 했 습 니 다. 예 를 들 어 ShellExe. exe 라 는 작은 프로그램 을 만 들 었 습 니 다. 이 프로그램 을 이미지 에 추가 하고 StartUp 단축 키 를 통 해 ShellExe 를 호출 했 습 니 다. ShellExe 는 SD 카드 의 응용 프로그램 을 호출 했 습 니 다. 구체 적 인 실현 절 차 는 다음 과 같 습 니 다. 1. eVC 에서 다음 과 같은 코드 를 번역 합 니 다.
int WINAPI WinMain(HINSTANCE hInstance,
		HINSTANCE hPrevInstance,
		LPTSTR    lpCmdLine,
		int       nCmdShow)
{
	WIN32_FIND_DATA fd;
	HANDLE hd=INVALID_HANDLE_VALUE;
	int iCount = 20;
	while(iCount--)
	{
		hd=::FindFirstFile(lpCmdLine,&fd);
		Sleep(500);
		if(INVALID_HANDLE_VALUE!=hd) break;
	}
	if(0==iCount) return 0;
	FindClose(hd);
	SHELLEXECUTEINFO ShExeInfo={0};
	ShExeInfo.cbSize=sizeof(SHELLEXECUTEINFO);
	ShExeInfo.fMask=SEE_MASK_NOCLOSEPROCESS;
	ShExeInfo.hwnd=NULL;
	ShExeInfo.lpVerb=NULL;

	ShExeInfo.lpFile=lpCmdLine;
	ShExeInfo.lpParameters=L"";
	ShExeInfo.lpDirectory=NULL;
	ShExeInfo.nShow=SW_SHOW;
	ShExeInfo.hInstApp=NULL;

	ShellExecuteEx(&ShExeInfo);
	return 0;
}
ShellExe. exe 의 실행 가능 한 파일 을 생 성 합 니 다. 이 코드 의 주요 기능 은 지정 한 프로그램 을 찾 은 다음 에 실행 하 는 것 입 니 다.다음 코드 는 SD 카드 파일 시스템 이 올 바 르 게 불 러 온 후에 야 프로그램 을 실행 할 수 있 습 니 다.
while(iCount--)
{
	hd=::FindFirstFile(lpCmdLine,&fd);
	Sleep(500);
	if(INVALID_HANDLE_VALUE!=hd) break;
}
파일 의 이름과 경 로 는 명령 행 매개 변수 에 의 해 지 정 됩 니 다.
ShExeInfo.lpFile=lpCmdLine;

2. Autorun. lnk 와 같은 단축 키 를 새로 만 들 고 다음 과 같은 방식 으로 내용 을 편집 합 니 다.
21#/windows/shellexe.exe /stdcard/MyApp.exe

그 중에서/stdcard/MyApp. exe 응용 프로그램의 절대 경로;
3. MyApp. exe 와 Autorun. lnk 를 NK 에 추가 하 는 방법 은 procject. bib 파일 에 다음 과 같은 내용 을 추가 하 는 것 입 니 다.
ShellExe.exe f:/WINCE420/PBWORKSPACES/LioetEnTer/RelDir/ShellExe.exe NK S
Autorun.lnk f:/WINCE420/PBWORKSPACES/LioetEnTer/RelDir/Autorun.lnk NK S

메모: ShellExe. exe 의 속성 은 H (숨 기기) 를 가 져 갈 수 없습니다.
4. procject. dat 에 다음 과 같은 내용 을 추가 합 니 다.
Directory("/Windows/Startup"):-File("Autorun.lnk","/Windows/Autorun.lnk")

5. Make Image 생 성 이미지 (물론 Build 도 괜 찮 습 니 다. 천천히) 를 선택 하여 FLASH 에 태 우 고 켜 서 실행 하면 SD 카드 에 있 는 MyApp. exe 가 올 바 르 게 실 행 된 것 을 볼 수 있 습 니 다.
총결산
이런 방법 은 사용 하기에 비교적 편리 하 다. ShellExe. exe 는 매번 다시 컴 파일 할 필요 가 없다. 응용 프로그램 경로 에 따라 Autorun. lnk 를 수정 하면 플래시, USB, SD 카드 의 응용 프로그램 을 불 러 올 수 있다.디 버 깅 및 업그레이드 프로그램 은 커 널 을 다시 태 울 필요 가 없다.원본 주소:http://blog.csdn.net/lanruoshui/archive/2007/05/23/1622263.aspx

좋은 웹페이지 즐겨찾기