如何获取托盘程序的窗口句柄?

XD王 2011-11-17 11:31:34
一个进程最小化,任务栏没有显示,只有托盘图标,
这个时候如何让去提取该进程的主窗口句柄??

已知该进程的 PID号,用 EnumWindows(@EnumWindowsProc, Integer(@EI)); 去枚举,能枚举到该PID,但是
得到的 HND 值不正确,不知道该怎么修改 EnumWindowsProc 函数。


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);
// (not IsWindowVisible(WND)) or
// (not IsWindowEnabled(WND)) or
// (not IsIconic(WND));
if not Result then
EI.HWND := WND;
end;

...全文
319 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
funxu 2011-11-17
  • 打赏
  • 举报
回复
用EnumWindows获得的顶层窗体句柄先别急着用,用getwindowtext获取标题看看是不是你要的窗体,因为有时候EnumWindows先找到的是application题窗体,然后才是你的窗体

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧