前往我的主页以获得更好的阅读体验Windows桌面暗水印方法与C++实现 - DearXuan的主页https://blog.dearxuan.com/2021/12/04/Windows%E6%A1%8C%E9%9D%A2%E6%9A%97%E6%B0%B4%E5%8D%B0%E6%96%B9%E6%B3%95%E4%B8%8EC-%E5%AE%9E%E7%8E%B0/

窗体实现

使用C++创建一个窗体,并置顶,为窗体设置合适的透明度,就能达到透明水印效果。

为了让被覆盖的其它窗体能正常响应鼠标事件,需要屏蔽自己窗体的鼠标事件

本文所讲的方法就是使用窗体实现

显卡驱动

在进入全屏模式或者平板模式时,窗体结构会被打破。另外如果有其它软件(例如QQ)也设置了置顶,则会挡住水印窗体,因此最好的办法是直接修改显卡输出的画面

半透明窗体

使用Qt创建一个窗体,修改windowOpacity值为0.5,即可实现半透明

事件传递与窗体属性

句柄

获取Qt窗体的句柄

hwnd = (HWND)this->winId();

鼠标事件

透明的窗体仍会响应鼠标事件,使用 WA_TransparentForMouseEvents 属性即可让窗体将鼠标事件传递到窗体下方,此时可以隔着窗体操作下面的其它窗体,甚至隔着窗体玩游戏

//将鼠标事件传递到窗体之下
this->setAttribute(Qt::WA_TransparentForMouseEvents, true);

窗体属性

修改窗体属性

SetWindowLong(hwnd, GWL_EXSTYLE, widgetStyle);
//永远置顶
this->setWindowFlags(Qt::WindowStaysOnTopHint);
//删除边框
this->setWindowFlags(Qt::FramelessWindowHint);
//不在任务栏显示
this->setWindowFlags(Qt::Tool);

其中widgetStyle为窗体属性,各参数解释如下:

//WS_EX_COMPOSITED:
//启用窗体双缓冲,减少闪烁//WS_EX_LAYERED:
//修改窗口为分层窗口//WS_EX_NOACTIVATE:
//窗口不会在单击时成为前台窗口//WS_EX_TOPMOST:
//窗口处于所有非最顶层窗口的上方并保持//WS_EX_TRANSPARENT:
//在所有统计窗口重绘之后才重绘本窗口//WS_EX_TOOLWINDOW:
//该窗口为悬浮窗,悬浮窗将不会出现在任务管理器或Alt+Tab菜单中//WS_EX_APPWINDOW:
//窗体将被放置到任务栏之上

以上代码都是在窗体展示之前做的,下面的代码用于在窗体展示之后设置最大化并置顶

this->setWindowState(Qt::WindowMaximized);//窗体最大化
SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);//置顶

运行结果

源文件

在第十三届软件外包大赛期间,不提供源代码

Windows桌面暗水印方法与C++实现相关推荐

  1. 手工删除Windows桌面搜索的方法

    最近不慎被Windows自动更新装上了桌面搜索. 这个玩意速度很慢不说,关键是还查不到文件. 要卸载桌面搜索,正常情况可以通过控制面板或 执行"%WINDOWS%$NtUninstallKB ...

  2. python修改电脑桌面壁纸_python设置windows桌面壁纸的方法

    #!/usr/bin/env python # -*- coding: UTF-8 -*- #----------------------------------------------------- ...

  3. python代码桌面壁纸_Python实现设置windows桌面壁纸代码

    Python实现设置windows桌面壁纸代码 发布于 2015-04-07 16:59:42 | 122 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...

  4. python安装到桌面的路径是什么_Python 获取windows桌面路径的5种方法小结

    这里介绍了5中python获取window桌面路径的方法,获取这个路径有什么用呢?一般是将程序生成的文档输出到桌面便于查看编辑. 前两个方法是通过注册表来获取当前windows桌面绝对路径,比较推荐使 ...

  5. win7桌面上显示html,win7桌面图标不见了怎么办,显示Windows 7桌面图标的方法

    打开电脑发现电脑桌面没有任何图标的显示,默认的Windows 7桌面就只有一个垃圾桶,"我的电脑"."Internet Explorer图标".及"我 ...

  6. [服务器]Windows server 2008 R2远程桌面授权破解方法

    Windows server 2008 R2远程桌面授权破解方法  从Windows 2008 R2开始,windows 2008 r2的终端服务器已经更改为远程桌面服务器,但windows 2008 ...

  7. Windows Server 2016远程桌面服务配置方法

    Windows Server 2016远程桌面服务配置方法 Server 2016只能单用户远程访问,如果想要多用户访问,可以通过添加远程桌面授权解决: 第一步:服务器管理-添加角色功能 第二步:添加 ...

  8. 利用Powershell每天自动设置提取Win10的windows聚焦图片(Spotlight)作为桌面壁纸的方法

    微软在 Windows 10 上新增了一项功能 Windows 聚焦 (Windows Spotlight),它会自动随机下载并更换锁屏界面的壁纸 (Lockscreen),让你每次打开电脑都有不一样 ...

  9. Windows 10操作系统自带的远程桌面的使用方法

    本文主要介绍 Windows 10 操作系统自带的远程桌面的使用方法. 1 局域网(同一子网)环境 本章介绍在局域网(同一子网)环境下的两台机器,通过系统自带的远程桌面进行连接的方法. 假设某局域网中 ...

最新文章

  1. Nginx+Tomcat实现反向代理与动静分离
  2. 华为路由器ospf路由表解读_华为动态路由OSPF实例详解之多区域配置-华为路由器设置...
  3. 使用spring + ActiveMQ 总结
  4. MTK深圳公司嵌入式软件工程师笔试题(含部分答案)
  5. NET中的异步编程(二)- 传统的异步编程
  6. STM32的CAN总线的接收双FIFO使用方法
  7. Android Binder 分析——通信模型
  8. java超出gc开销_通过这5个简单的技巧减少GC开销
  9. Bootstrap表单控件的尺寸
  10. js判断变量类型是否为字符串,不符合条件则赋值为‘无’
  11. win10家庭版安装iis 微软web服务器 windows安装IIS web服务器
  12. learning docker steps(3) ----- docker services 初次体验
  13. 数值方法与计算机方法是,计算机数值方法.pdf
  14. 一种简单的短路检测电路设计
  15. (转)国企,私企与外企利弊通观--关键时刻给应届毕业生及时点拨5
  16. 高并发系统的限流算法与实现
  17. 计算机64位只有2g,电脑插了4G内存,但只有2G左右可以用,为什么 WIN7 64位
  18. 马哥2016linux就业班+架构班+运维班全套
  19. 中药材鉴别-方法:聚类;PCA 主成分分析;线性判别式分析;判别式检验
  20. 908c语言程序设计,2021考研大纲:武汉轻工大学908C语言程序设计2021年硕士研究生入学考试初试科目考试大纲...

热门文章

  1. Python挺酷的 | 识别蓝牙MIDI(基于ESP32开发板)
  2. HTML5 原生API input file 来实现多图上传,并大图预览
  3. Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
  4. 求与下面谓词公式等值的前束范式_数理逻辑(4)——谓词逻辑的等值、范式和推理演算...
  5. 今年快30岁的我,还是选择了裸辞···
  6. 差分电流采样电路解读
  7. CTF从零到一 信息收集 常见的搜集
  8. Condition的使用
  9. 安泰测试Agitek-TH2817A型LCR数字电桥
  10. 4415U 核显直通 HDMI输出