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

tyong 2011-09-27 09:12:28
系统最上面的窗口句柄,可能在不激活状态。

测试过GetForegroundWindow,它能获取前台活动窗口,但不一定是最上面的。
GetForegroundWindow(0)返回的句柄不知道是哪个窗口的,不是想要的。
...全文
1593 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuxin425 2011-09-27
  • 打赏
  • 举报
回复
置顶操作应该是特殊操作
tyong 2011-09-27
  • 打赏
  • 举报
回复
谢谢所有的回复,可能没有我的这种需求,呵呵
sdl2005lyx 2011-09-27
  • 打赏
  • 举报
回复
HWND hWnd = ::GetForegroundWindow();
HWND hChildWnd = ::GetTopWindow(hWnd);
tyong 2011-09-27
  • 打赏
  • 举报
回复
也许我的想法有问题

我有个窗口A未设置置顶,另外有个窗口B置顶;这是我点击窗口A,活动窗口应该是窗口A,但窗口B因为置顶了,所以还在窗口A上面;我想得到的就是窗口B,即最上面的窗口句柄,而不是活动窗口
Eleven 2011-09-27
  • 打赏
  • 举报
回复
HWND hWnd = ::GetLastActivePopup(::GetForegroundWindow());
tyong 2011-09-27
  • 打赏
  • 举报
回复
如果有多个ws_ex_topmost的窗口,总会有个在上面。

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

GetTopWindow(0)能获取句柄,但不知道是哪个的,我再测试下。
ndy_w 2011-09-27
  • 打赏
  • 举报
回复
GetTopWindow(0),是这个吗?
ndy_w 2011-09-27
  • 打赏
  • 举报
回复
最顶层...
如果有多个ws_ex_topmost的窗口,又没有互相覆盖,哪个才是你要的呢?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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