kkuzil.own@gmail.com

Posted
Filed under Development/Delphi
.EXE 파일의 리소스를 열고 고치고 싶어서...


LoadLibrary(..)  > FindResource() > SizeOfResource() > LoadResource() > LockResource() >
FreeLibrary() > BeginUpdateResource() > UpdateResource() > EndUpdateResource()

뭐 이런 절차로 하려고 하는데 아무리해도 UpdateResource() 여기서 적용이 안되는거다..
GetLastError()를 찍어봐도 문제가 없고...! LoadResource(), LockResource() 이걸로 리소스도 잘 가져오는데!
아놔~! 뭐가 문젠지 한참을 고민하다 보니,

LoadLibrary([Path]) > FreeLibrary() 이렇게 하고 구동한 프로그램이 종료될때까지 [Path]가 제대로 지워지지

않는 문제가 있는거다.
원인은... LoadLibrary([Path]) 이거다. 요넘은.. .

LoadLibrary([Path])  이렇게 열면... 열어서 쓰는거 까지 좋은데 FreeLibrary() 이걸로 잘(?) 안닫힌다.

이 후에 수정작업은 먹통이되버린다. (UpdateResource()등등)

.DLL만 잘 불러오게 하는 그런게(?) 있나부다.
msdn에는 .EXE에는 쓰지마라 이런말은 없고 블라블라~~

암튼, 요렇게 하면 된다.

hModule := LoadLibraryEx([Path], 0, LOAD_LIBRARY_AS_DATAFILE);

....
....
FreeLibrary(hModule)

이렇게 하면 해제 잘되서 이 후에 리소스 수정작업도 잘된다~

끝.
2012/10/04 22:10 2012/10/04 22:10