:15.523KB : :1 :2022-08-21 15:45:59
* 获取当前屏幕的HDC,直接绘制你的图形
* 创建一个无边框窗口,然后在窗口上面绘制
然而第一种方案对于动态变化的窗口适应性不太好,容易产生残影,另外还需要考虑DPI缩放,比较复杂。第二种在以前版本的Windows下没问题,但从Windows8以后,就需要面对新的情况:窗口拿不到最高Z序。
普通的应用无论是否使用总在最前属性(或WS_EX_TOPMOST),窗口的Z序总低于一些特定的程序。
可以在这篇文章中找到一些解释
简单的说,微软从Windows8开始,引入了其他窗口段,这导致了你窗口的Z序始终低于设置过其他ZBID段的窗口。
要让你的窗口Z序最前,除了文中提到的CreateWindowInBand/SetWindowBand外(调用成功的条件过于苛刻),还有一个方法,就是启用UIAccess。启用UIAccess后,设置窗口总在最前,即可让你的窗口位于最高Z序:ZBID_UIACCESS。
根据微软的文档,要使用UIAccess也需要很多条件,参见这里
此模块则使用不那么正规的方法,尝试获取UIAccess权限。为了达成这一目的,程序需要管理员权限,不过这比官方提到的条件更宽松。
10-05QT实现屏幕截图
09-18Qt实现 屏幕截图
06-14检索屏幕截图差异
12-10android屏幕截图开发实例
01-30屏幕截图工具组件开发
10-11酷Q屏幕截图、插件出错提示
03-16去除易语言隐藏窗口升级工具可用版
10-04ppt幻灯片屏幕截图的图片导入方法
08-29word屏幕截图方法图解