GetModuleFileName这个函数怎么用?(35分)

  • 主题发起人 主题发起人 devil_li
  • 开始时间 开始时间
D

devil_li

Unregistered / Unconfirmed
GUEST, unregistred user!
GetModuleFileName这个函数怎么用?<br>是不是可以用来返回内存中某个程序可执行文件的名字?<br>它的参数怎么得到?
 
他返回当前进程中被加载的某个模块的文件名.
 
GetModuleFileName的API宣告如下:<br>DWORD GetModuleFileName(<br>&nbsp; HMODULE hModule, &nbsp; &nbsp;// handle to module<br>&nbsp; LPTSTR lpFilename, &nbsp;// file name of module<br>&nbsp; DWORD nSize &nbsp; &nbsp; &nbsp; &nbsp; // size of buffer<br>);<br>Delphi宣告如下<br>function GetModuleFileName(hModule: THandle; lpFileName: PChar; nSize: DWord): DWord; stdcall;<br><br>hModule 參數是傳入在Process中所載入的Module(Exe, dll)的Handle, 可以由API <br>&nbsp; EnumProcessModules取得所有Process所載入的Module<br>lpFileName, 必需傳入承接Module FileName的Buffer的內存位置<br>nSize, 指出由lpFileName傳入的Buffer的大小, 以Byte來計算<br>以下範例:<br>function GetModuleName(hModule: THandle): string;<br>&nbsp; var Buf: array[0..MAX_PATH] of Char;<br>begin<br>&nbsp; if GetModuleName(hModule, Buf, MAX_PATH) = 0 then RaiseLastWin32Error;<br>&nbsp; Result := string(Buf);<br>end;<br>
 
hModule怎么得到?没有EnumProcessModules这个函数呀。<br>能由窗体句柄得到hModule吗?
 
hmodule 用findwindow
 
我只知道在PB中这么定义:<br>Function uint GetModuleFileNameA(ulong hModule,ref string lpFilename,ulong nSize) Library "kernel32.dll"
 
win9x/win2000 可以用<br>Module32First Module32Next 得到 module handle
 
Module32First 怎么用阿,好像得不到HModule阿
 
后退
顶部