메뉴 건너뛰기

프로그래밍


다음 샘플은 실행 파일 자체가 리소스로 등록되어 있는 경우 입니다.

이 때 등록된 리소스가 ID_ 계열이 아닌 "TEST.EXE"라는 형태로 되어 있다고 생각하시면 됩니다.

// Get the instance handle - required for loading the resource

HINSTANCE hInst = AfxGetInstanceHandle();

// Load the user-defined resource.

HRSRC hExeFile = ::FindResource(hInst, "TEST.EXE", "EXE_RESOURCE");

HGLOBAL hRes = ::LoadResource(hInst, hExeFile);

DWORD dwSize = ::SizeofResource(hInst, hExeFile);

if (hRes != NULL)

{

UINT FAR* lpnRes = (UINT FAR*)::LockResource(hRes);

TRY

{

// Create the .exe file

CFile file(lpszFileName, CFile::modeCreate or CFile::modeWrite); //lpszFileName은 함수 인자로 넘어온 것입니다.

// Write the user-defined resource to the .exe file

file.WriteHuge(lpnRes, dwSize);

file.Flush();

}

CATCH(CFileException, e)

{

}

END_CATCH

::FreeResource(hRes);

}

리소스의 내용을 고스란히 실행 파일로 복구가 되었다고 보시면 됩니다.

즉, 복구할 때 경로는 윈도우 폴더의 템프 폴더를 주로 이용하셔도 되겠죠..

이미지야 바로 로딩해서 사용하시면 되구요..

특정 바이너리를 열어서 데이터를 읽어서 사용하는경우 위의 LockResource단계에서 부터 해당 포인터 위치에서 시작해서 읽어 나가는 형태를 취하면 됩니다.(즉, 파일 오픈/클로즈가 배제된 형태로 사용하시면 된답니다)

위와 같이 내부에서보다 외부에서 실행해야 할 경우는 임시폴더로 생성후 실행하시면 됩니다.

즉, INF 파일과 같이 외부의 기능을 이용해서 등록을 하는 경우 INF 파일 자체를 임시 폴더에 리소스로부터 생성한 다음

ShellExecute(NULL, "Open", "<생성된 INF 파일>", NULL, <임시폴더까지의경로>, SW_???);

형태로 실행시키면 등록이 된답니다.

그럼 이만..


http://www.devpia.com
안창근(prodori)


예제 소스 링크
/pds2/webbbs.cgi?action=view&value=23&bbs=language





번호 제목 글쓴이 날짜 조회 수
공지 [TIP] PYTHON 에서 "UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 6987: illegal multibyte sequence" 오류 날때... [14] 파이팅건맨 2016.02.20 39572
공지 [TIP] JQuery와 PHP로 이미지 파일을 업로드 하는 간단한 소스 (How to upload image file on PHP server by using JQuery) 파이팅건맨 2015.04.03 6868
공지 [TIP] php로 기상청에서 제공하는 기상정보 API 호출하기 파이팅건맨 2017.01.17 3999
83 register와 volatile 키워드 파이팅건맨 2003.11.06 296
82 Struct Packing 에 관한 설명 파이팅건맨 2003.12.29 168
81 PE 화일의 헤더구조를 보여주는 소스 입니다. 파이팅건맨 2003.09.04 327
80 VB에서 프로세스 실행시 우선순위 주기 파이팅건맨 2003.08.22 347
79 데브피아에 글을 올린 김태완입니다. [1] 김태완 2003.08.21 331
» 필요한 모든 파일 합쳐서 하나의 .exe 파일 만들기 파이팅건맨 2003.08.27 1137
77 [MFC]GIF Animation Control 파이팅건맨 2003.08.05 1266
76 [GCC] C에서 밀리세컨드 구하는 법 (2) 파이팅건맨 2003.07.29 589
75 인터넷 익스플로러 툴바(툴밴드) 관련 소스링크 파이팅건맨 2003.07.23 333
74 scanf, printf와 같이 다수의 파라메터 처리 방법(MSDN) 파이팅건맨 2003.08.20 287
73 PHP,ASP,PERL에서 파일사이즈 알아내는 방법(For GunClient...) 파이팅건맨 2003.05.30 330
72 CRC 체크 C 소스 입니다. 파이팅건맨 2003.03.24 1027
71 HTTP프로토콜을 이용한 파일 업로드 파이팅건맨 2002.12.24 982
70 [Tip] CTRL-ALT-DEL키 막는법(NT,2000,XP,98) 파이팅건맨 2002.07.11 443
69 [Tip]Default 스크린세이버 가동 방법 파이팅건맨 2002.07.11 309
68 TCHAR, UNICODE, 그리고 윈도우 NT 파이팅건맨 2002.02.26 444
67 [C]밀리초를 구현하는 방법 파이팅건맨 2001.08.07 690
66 [TIP]외부 프로그램 실행방법 파이팅건맨 2001.03.15 423
65 [TIP]Convex Hull 알고리즘 파이팅건맨 2000.10.10 358
64 [소켓 2]송신시 바이트 단위로 보내기 파이팅건맨 2000.09.18 619
위로