栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

用清单文件让窗口置顶到比任务管理器、放大镜都顶!

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用清单文件让窗口置顶到比任务管理器、放大镜都顶!


之前无意中看见一篇文章:Windows 10中的窗体Z序
讲到,在win8以上,窗口分Z序段了。一般情况下,我们创建的窗口,不管是普通的,还是TopMost的,都盖不过勾选“置顶”的任务管理器。而任务管理器则盖不过放大镜。它们在不同的Z序段中。
极域、机房管理助手的段都是一般窗口,只不过是定时调用了SetWindowPos()设置成TopMost而已。于是我想,如果要实现超级置顶,只用调整窗口的Z序段即可。上面文章中给的办法是,CreateWindowInBand()和SetWindowBand(),这两个在C/C++头文件里是没有的,要用到GetProcAddress()。但是直接调用它们设置我们喜欢的Z序段,会调用失败,拒绝访问。
绕过方法也很多:

  • 把dll注入到系统进程hook住关键函数(即上面文章提供的绕过法)
  • 遍历进程获取UIAccess令牌
  • ……

老实的绕过法,就是在manifest清单里加入如下语段:

 
     
         
         
         
     

但我看了很多文章,都提到必须的前提条件:应用要有签名,要在系统信任目录(例如Program Files)中运行等
我在dev c++中运行,却没有这么多条件,直接就最顶了。

有可能是因为清单表示程序以能获取到的最高权限运行,这也就代表着不同的机器上,可能有些就取不到UIAccess了。不管怎样,都尽力做到最置顶,是满足淦极域的需求了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号