如何从一个HWND 中得到其应用程序名?(50分)

  • 主题发起人 主题发起人 mynlxx
  • 开始时间 开始时间
M

mynlxx

Unregistered / Unconfirmed
GUEST, unregistred user!
代码:
        myHand := GetForeGroundWindow;
        while GetParent(myHand) <> nil do
            myHand := GetParent(myHand);
 
可以从整个进程列表里查找,用Process32First()和Process32Next()
 
从HWND中就无法得到吗?
 
uses TLHelp32;

procedure TForm1.Button1Click(Sender: TObject);
var
vProcessId: DWORD;
vProcessEntry32: TProcessEntry32;
vHandle: THandle;
vBool: Boolean;
vBuffer: array[0..255] of Char;
begin
GetWindowThreadProcessId(Handle, @vProcessId); //根据窗体句柄查找进程ID
vHandle := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
vBool := Process32First(vHandle, vProcessEntry32);
while vBool do begin //遍历进程
if vProcessEntry32.th32ProcessID = vProcessId then begin
GetModuleFileName(vProcessEntry32.th32ModuleID, vBuffer, 255); //获取程序所在文件
ShowMessage(vBuffer);
Break;
end;
vBool := Process32Next(vHandle, vProcessEntry32);
end;
DeleteObject(vHandle);
end;
 
接受答案了.
 
后退
顶部