码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SetWindowDisplayAffinity 函数设置窗体透明


    #define WDA_NONE        0x00000000
    #define WDA_MONITOR     0x00000001
    #define WDA_EXCLUDEFROMCAPTURE 0x00000011

    c#调用示例

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Runtime.InteropServices;
    8. using System.Text;
    9. using System.Threading.Tasks;
    10. using System.Windows.Forms;
    11. //using Windows.UI.ViewManagement;
    12. namespace WindowsFormsApp1
    13. {
    14. public partial class Form1 : Form
    15. {
    16. public Form1()
    17. {
    18. InitializeComponent();
    19. }
    20. // 导入函数定义
    21. [DllImport("user32.dll")]
    22. private static extern uint SetWindowDisplayAffinity(IntPtr hwnd, uint dwAffinity);
    23. private void button1_Click(object sender, EventArgs e)
    24. {
    25. // 获取窗口句柄
    26. IntPtr hwnd = this.Handle;
    27. uint WDA_EXCLUDEFROMCAPTURE = 0x00000011; //透明
    28. //uint WDA_MONITOR = 0x00000001; //显示为黑色
    29. // 设置窗口的透明属性
    30. SetWindowDisplayAffinity(hwnd, WDA_EXCLUDEFROMCAPTURE);
    31. timer1.Enabled = true;
    32. }
    33. private void button2_Click(object sender, EventArgs e)
    34. {
    35. }
    36. private void timer1_Tick(object sender, EventArgs e)
    37. {
    38. timer1.Enabled = false;
    39. // 获取窗口句柄
    40. IntPtr hwnd = this.Handle;
    41. uint WDA_NONE = 0x00000000;
    42. // 设置窗口不透明
    43. SetWindowDisplayAffinity(hwnd, WDA_NONE);
    44. }
    45. }
    46. }

    函数的说明参考下面网页

    SetWindowDisplayAffinity 函数 (winuser.h) - Win32 apps | Microsoft Learnicon-default.png?t=N7T8https://learn.microsoft.com/zh-CN/windows/win32/api/winuser/nf-winuser-setwindowdisplayaffinity

    其中 winuser.h 定义了其中的第二个参数值

    winuser.h中关于此函数的参数记录如下

    1. #define WDA_NONE 0x00000000
    2. #define WDA_MONITOR 0x00000001
    3. #define WDA_EXCLUDEFROMCAPTURE 0x00000011

    此函数和 GetWindowDisplayAffinity 旨在支持 Windows 7 中新增的窗口内容保护功能。 此功能使应用程序能够保护自己的屏幕窗口内容,防止通过一组特定的公共操作系统功能和 API 捕获或复制。 但是,仅当桌面窗口管理器 (DWM) 撰写桌面时,它才有效。

    请务必注意,与安全功能或数字版权管理 (DRM) 实现不同,不能保证使用 SetWindowDisplayAffinity 和 GetWindowDisplayAffinity 以及其他必要功能(如 DwmIsCompositionEnabled)将严格保护窗口化内容,例如有人拍摄屏幕照片。

    从 Windows 10 版本 2004 开始,WDA_EXCLUDEFROMCAPTURE 是受支持的值。 在以前版本的 Windows 上将显示关联设置为WDA_EXCLUDEFROMCAPTURE的行为就像应用了WDA_MONITOR一样。

    特此记录

    anlog

    2023年9月9日

  • 相关阅读:
    matplotlib 使用
    如何使用adb command来设置cpu频率和核数
    OPTEE:CA-TA会话的创建(二)
    机器学习深度学习——向量化
    JavaWeb03-HTTP协议,Tomcat,Servlet
    【毕业设计】基于STM32的自动加油站加油系统 -物联网 单片机 嵌入式
    数字文创产权版权登记保护多少重要
    Vue 依赖注入 - Provide/Inject
    安装VSCode,提升工作效率!iPad Pro生产力进阶之路
    【漏洞复现】Aapache_Tomcat_AJP协议_文件包含漏洞(CVE-2020-1938)
  • 原文地址:https://blog.csdn.net/anlog/article/details/132781066
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号