我想在程序运行时把本程序加载到一个内存地址里,下面的代码为什么不对啊??
请高手指点!!
var
hFile,hMemory:Cardinal;
OwnFileName:array[0..255]of char;
dwSize,NumberOfBytesReadWritten:Dword;
pMemory:pointer;
a:longbool;
begin
// strpcopy(OwnFileName,Application.ExeName );
GetModuleFileName(hinstance,OwnFileName,256);
hFile:=CreateFile(OwnFileName,GENERIC_READ, FILE_SHARE_READ,
nil,OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE,0);
dwSize:=GetFileSize(hFile,nil);
hMemory:=GlobalAlloc(GMEM_MOVEABLE or GMEM_ZEROINIT,dwSize);
pMemory:=GlobalLock(hMemory);
a:=ReadFile(hFile,pMemory,dwSize,NumberOfBytesReadWritten,nil);
//上句ReadFile总是返回False啊!!
CloseHandle(hFile);
end;
请高手指点!!
var
hFile,hMemory:Cardinal;
OwnFileName:array[0..255]of char;
dwSize,NumberOfBytesReadWritten:Dword;
pMemory:pointer;
a:longbool;
begin
// strpcopy(OwnFileName,Application.ExeName );
GetModuleFileName(hinstance,OwnFileName,256);
hFile:=CreateFile(OwnFileName,GENERIC_READ, FILE_SHARE_READ,
nil,OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE,0);
dwSize:=GetFileSize(hFile,nil);
hMemory:=GlobalAlloc(GMEM_MOVEABLE or GMEM_ZEROINIT,dwSize);
pMemory:=GlobalLock(hMemory);
a:=ReadFile(hFile,pMemory,dwSize,NumberOfBytesReadWritten,nil);
//上句ReadFile总是返回False啊!!
CloseHandle(hFile);
end;
后面当然更是了主要是
GetModuleFileName(hinstance,OwnFileName,256);得到的是你现在的程序名
to keyz(keyz) 谢谢了!!