【发布时间】:2018-01-05 00:23:51
【问题描述】:
当打开一个弹出菜单时,使用函数TrackPopupMenu,它接受参数“拥有该菜单的窗口的句柄”。
我想知道屏幕上可见的任何弹出菜单的所有者窗口是什么。
是否可以获得这样的窗口的句柄,即使它属于另一个进程?
我已经尝试了以下 WinAPI 调用但没有成功:
GetParent(menuHWND) ; //returns null
GetWindow(menuHWND, GW_OWNER) ; //returns null
GetAncestor(menuHWND, GA_ROOTOWNER) ; //returns menuHWND
编辑:
我使用函数WindowFromPoint获得了菜单句柄
【问题讨论】:
-
在您的示例中,您是如何获得 menuHWND 的?您不是在问如何从 HMENU 获取 menuHWND 吗?
-
你是如何识别菜单的?
-
你如何获得弹出菜单的句柄?
-
@Michael,我在 10 分钟前编辑了这个问题,提到了这个细节。
-
HMENU 不是“子窗口”,因此您可以通过这样的功能获得其父窗口。传递给 TrackPopupMenu 的值只是菜单关闭时发送消息的句柄,而不是真正的“父级”。