16,749
社区成员
发帖
与我相关
我的任务
分享
type
PEnumInfo = ^TEnumInfo;
TEnumInfo = record
ProcessID: DWORD;
HWND: THandle;
end;
function EnumWindowsProc(Wnd: DWORD; var EI: TEnumInfo): Bool; stdcall;
var
PID: DWORD;
begin
GetWindowThreadProcessID(Wnd, @PID);
Result := (PID <> EI.ProcessID) or (not IsWindowVisible(WND)) or (not IsWindowEnabled(WND));
if not Result then
EI.HWND := WND;
end;
function TUpdateFrm.FindMainWindow(PID: DWORD): DWORD;
var
EI: TEnumInfo;
begin
EI.ProcessID := PID;
EI.HWND := 0;
EnumWindows(@EnumWindowsProc, Integer(@EI));
Result := EI.HWND;
end;
//跟据ProcessId获取进程的窗口句柄
function TUpdateFrm.GetHWndByPID(const hPID: THandle): THandle;
begin
if hPID <> 0 then
Result := FindMainWindow(hPID)
else
Result := 0;
end;