怎样判断自己的窗口是否处于激活状态?

ilovecplusplus07 2009-11-14 10:54:35
除了用下面这两个函数得到激活窗口的句柄,然后跟自己窗口的句柄比较。
GetForegroundWindow
GetActiveWindow

这个isActiveWindow 好像也可以吧。

请问大家还有其他的方法吗?
...全文
2957 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-07-31
  • 打赏
  • 举报
回复
奉劝楼主不要把有限的生命浪费在无限的加密解密死循环中!
用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
傻X 2012-07-31
  • 打赏
  • 举报
回复
2年前的帖子啊,掘尸啊
fronz 2012-07-31
  • 打赏
  • 举报
回复
我提不出新东西,
但我觉得这个问题很有趣,自己的状态要从系统的角度看,却不希望其他程序通过系统来检测。
很难。
rushdown2012 2012-07-31
  • 打赏
  • 举报
回复
刚好也需要用到这方面的东西,我现在就用的GetActiveWindow 也想知道到底还有哪些方法!顶一个!
WizardK 2010-02-21
  • 打赏
  • 举报
回复
GetActiveWindow比较正统,其他的方式就是相应WM_SETFOCUS、WM_ACTIVATE甚至WM_WINDOWPOSCHANGED这些消息。
zhiweikongfu 2010-02-21
  • 打赏
  • 举报
回复
我觉得应该就是这个了:GetForegroundWindow
windviki 2010-02-21
  • 打赏
  • 举报
回复
屏蔽别人在后台操作我的程序 我觉得不是窗口激活不激活的问题
如果你的目的只是不让别人操作你的程序,那么你应该尝试防止别人取得你的窗体指针以及窗体句柄
用hook的方法躲掉FindWindow,EnumWindow等API的检测或许是一种办法
daiweb 2010-02-21
  • 打赏
  • 举报
回复
窗口回调里面判断 自己是否是在active 如果不是 就不往下执行了.
ilovecplusplus07 2010-02-20
  • 打赏
  • 举报
回复
继续耐心等待... ...
lllyyy2403 2010-01-01
  • 打赏
  • 举报
回复
一个思路:遍历所有窗口,然后考虑激活窗口有哪些特征来甄别。
GKatHere 2010-01-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ilovecplusplus07 的回复:]
一定还有更另类的方法,我的目的就是屏蔽别人在后台操作我的程序。所以我要继续找下去... ...
谢谢楼上的回复,等结贴的时候我会奉上分数的。
[/Quote]
屏蔽别人在后台操你的的程序,不必在寻找前台窗口下功夫吧。。。。
ilovecplusplus07 2010-01-01
  • 打赏
  • 举报
回复
继续等待... ...
jyh_baoding 2009-11-20
  • 打赏
  • 举报
回复
帮顶一下
向立天 2009-11-20
  • 打赏
  • 举报
回复
我也凑个热闹
可以枚举桌面窗口
这样可以得到窗口的z_order
不过即便自己的窗口在最前面也不能保证是激活窗口
还是得判断一下
ilovecplusplus07 2009-11-19
  • 打赏
  • 举报
回复
我觉的还有其他的方法,故此没有结贴,请大家谅解。
WaistCoat13 2009-11-15
  • 打赏
  • 举报
回复
HWND GetActiveWindow(VOID);
cnzdgs 2009-11-15
  • 打赏
  • 举报
回复
用keybd_event模拟键盘输入,看自己是否收到相应的消息。
ilovecplusplus07 2009-11-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jameshooo 的回复:]
SetWindowPos(...,SWP_NOACTIVATE);
[/Quote]

这位朋友说的我觉得也是可行的,谢谢。

我继续等其他的方法,使这个帖子更完美一些。也许某天别人在百度上会找到,会用到的。

分数等结贴的时候一起给大家,谢谢。
MoXiaoRab 2009-11-15
  • 打赏
  • 举报
回复
我就得8#说得已经不错了
FireBirdCN 2009-11-14
  • 打赏
  • 举报
回复
敢问 有isActiveWindow这个函数么?
加载更多回复(5)
如何设置让一个窗口总在最前(Exaware OnTop和PushPin)软件下载 Windows中打开一个新窗口或切换任务时,原有的活动窗口就会被它所覆盖。不过,像Winamp等软件,却有一个能让自己的操作窗口总在最前的功能,非常实用。其实,只要你安装了像ExaWare OnTop和PushPin这样的免费小软件,也一样可以让任意Windows操作窗口总在最前面,不让其他的窗口挡住它! 1.好用的ExaWare OnTop 下载并安装该软件后,双击桌面上的ExaWare OnTop 图标启动程序,我们看不到它的任何窗口界面,但在系统托盘上可以发现它的图标。单击该图标会弹出一个菜单,在这里列出了当前系统中所有窗口的标题。要想让某个窗口总在最前面,只要将鼠标移到相应的窗口标题项并点击鼠标(左右键均可)即可,如图所示。单击后该窗口标题前面的图标也相应地多了一个方框(如果没有图标则会显示一个对勾),表明该窗口已经设置成功。这时打开该窗口,再打开其他程序窗口,看看它是否一直总在其他窗口的前面而不被遮住?怎么样,是不是有种高高在上的感觉?要想取消 OnTop 状态,只要重复一遍上面的操作就可以了。 看到这里你是不是有一个疑问:如果同时将两个窗口设置为总在最前(Always OnTop)的状态,那将会发生什么事情呢?其实也很简单,如果两个(或多个)窗口同时处于总在最前的状态,那说明它们的地位平等,这时先激活谁谁就在最上面(和设置前一样看待)。另外还有一个问题需要注意:如果需要退出该软件,建议点击系统托盘上的软件图标并选择菜单中的“Exit and Restore”命令,这样在退出软件的同时可以恢复各个窗口的原始状态,以免给使用带来不便。 2.小巧的PushPin 相对于ExaWare OnTop 来说,PushPin 的体积更为小巧,只有区区的22KB 下载得到的是一个压缩包,由于它是一款绿色软件,我们只要直接将该压缩包解压缩到某个指定的目录下即可运行(主程序文件名为Pushpin.exe),同样看不到主程序窗口,只会发现系统托盘处多了一个图标。要想让某个操作窗口总在最前面,只要在其标题栏上(在任务栏按钮上也可)单击鼠标右键并从弹出的菜单中选择“Always on top”命令即可。要退出程序只需用鼠标右击系统托盘上的软件图标,并从弹出的菜单中选择“Remove”命令即可

16,472

社区成员

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

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

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