hur.cn - 华软网

 热门搜索

如何获取系统当前最顶层的窗口句柄

  作者:未知    来源:网络    更新时间:2011/9/27
系统最上面的窗口句柄,可能在不激活状态。

测试过GetForegroundWindow,它能获取前台活动窗口,但不一定是最上面的。
GetForegroundWindow(0)返回的句柄不知道是哪个窗口的,不是想要的。
---华软 网友回答---
最顶层...
如果有多个ws_ex_topmost的窗口,又没有互相覆盖,哪个才是你要的呢?
---华软网友回复---
GetTopWindow(0),是这个吗?
---华软网友回复---
如果有多个ws_ex_topmost的窗口,总会有个在上面。

例如任务管理器置顶的,但活动窗口是另外一个,这时使用GetForegroundWindow获取的是活动窗口,而不是我需要的任务管理器句柄。

GetTopWindow(0)能获取句柄,但不知道是哪个的,我再测试下。
---华软网友回复---
HWND hWnd = ::GetLastActivePopup(::GetForegroundWindow());
---华软网友回复---
也许我的想法有问题

我有个窗口A未设置置顶,另外有个窗口B置顶;这是我点击窗口A,活动窗口应该是窗口A,但窗口B因为置顶了,所以还在窗口A上面;我想得到的就是窗口B,即最上面的窗口句柄,而不是活动窗口
---华软网友回复---
HWND hWnd = ::GetForegroundWindow();
HWND hChildWnd = ::GetTopWindow(hWnd);
---华软网友回复---
谢谢所有的回复,可能没有我的这种需求,呵呵
---华软网友回复---
置顶操作应该是特殊操作      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。