CD 아무거나 자동실행

Posted at 2009/08/30 12:18 // in Note/Windows // by drDorothy
옆새님 께서 물어본 내용에 대한 답변..
질문 : CD를 집어넣으면 동영상 뜨게 하고 싶어염..
답변 : CD삽입후 재빨리 열어서 동영상 클릭하세요.

아무튼 CD 자동실행을 하려면..
간단한 autorun.inf 파일을 만들어서 CD에 넣어버림 그만이다.
그러나!.. 문제가 있었으니... xxx.avi 나 xxx.bmp 이런건 안된다는거...

그럼 무슨 방법이 있을까!?..
간단한 Launcher 만들면 그만이졈..
(but.. How??..)

우리에겐 윈도님께서 허락하신 ShellExecuteEx 라는 축복이 있으니..
이 함수로 실행하면 그만임..호호
그러면 알아서 연결된 응용프로그램으로 실행 가능하졈~
(폴더옵션 파일형식의 동작에 있는거면 다 되지만.. 깊은 내용은 패스~)

축복의 Launcher.c 파일 내용
#include 

int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdParam, int nCmdShow)
{
	HANDLE hInfo;
	DWORD size, ret;
	char* file;
	char path[MAX_PATH];
	SHELLEXECUTEINFO sei = {0,};

	hInfo = CreateFile("Launcher.dat", GENERIC_READ, FILE_SHARE_READ, NULL,
				OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hInfo == INVALID_HANDLE_VALUE)
		return 0;

	if ((size = GetFileSize(hInfo, NULL)) == 0)
		return CloseHandle(hInfo), 0;

	file = (char*) LocalAlloc(LPTR, size+1);

	if (!ReadFile(hInfo, file, size, &ret, NULL))
		goto fin;

	if ((DWORD) FindExecutable(file, NULL, path) > 32)
	{
		sei.cbSize = sizeof(sei);
		sei.lpVerb = TEXT("Open");
		sei.lpFile = file;
		sei.nShow  = SW_SHOWNORMAL;

		ShellExecuteEx(&sei);
	}
fin:
	CloseHandle(hInfo);
	LocalFree(file);
	return 0;
}


그럼 간략 사용법..
(매번 파일명 바꿔 컴파일 하기 귀찮아서 Launcer.dat 에서 파일명 읽어옴)

  1. 실행시키고픈 파일명을 dat 파일에 쓰기~
  2. autorun.infLauncher.exe 를 실행하도록 표시
  3. 3종 파일(inf, dat, Launcher) 을 CD에 넣고, 필요한 파일들 추가
  4. CD 굽고, 다시 넣어보고 테스트 해보고 끝내기

초 간단한듯..ㅋㅋ (참고 : CD의 아이콘도 넣고싶다면.. Autorun.inf 수정하세염)
첨부파일의 Launcher.exe 는 UPX 압축이며.. 잡다 DLL 디펜던시 없음..!
2009/08/30 12:18 2009/08/30 12:18

http://d-story.net/tc/lab/trackback/296

1 ... 8 9 10 11 12 13 14 15 16 ... 74