我想在程序运行时把本程序加载到一个内存地址里,下面的代码为什么不对啊??
请高手指点!!
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;