博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 鼠标穿透窗体功能
阅读量:7251 次
发布时间:2019-06-29

本文共 1312 字,大约阅读时间需要 4 分钟。

通过以下代码,在窗体启动后调用方法SetPenetrate() 即可实现窗体的穿透功能。

同样该功能需要加载命名空间

using System.Runtime.InteropServices;

     private const uint WS_EX_LAYERED = 0x80000;        private const int WS_EX_TRANSPARENT = 0x20;        private const int GWL_STYLE = (-16);        private const int GWL_EXSTYLE = (-20);        private const int LWA_ALPHA = 0;         [DllImport("user32", EntryPoint = "SetWindowLong")]        private static extern uint SetWindowLong(        IntPtr hwnd,        int nIndex,        uint dwNewLong        );         [DllImport("user32", EntryPoint = "GetWindowLong")]        private static extern uint GetWindowLong(        IntPtr hwnd,        int nIndex        );         [DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")]        private static extern int SetLayeredWindowAttributes(        IntPtr hwnd,        int crKey,        int bAlpha,        int dwFlags        );  ///   /// 设置窗体具有鼠标穿透效果  ///   /// true穿透,false不穿透  public void SetPenetrate(bool flag = true)  {    uint style = GetWindowLong(this.Handle, GWL_EXSTYLE);    if (flag)      SetWindowLong(this.Handle, GWL_EXSTYLE, style | WS_EX_TRANSPARENT | WS_EX_LAYERED);    else      SetWindowLong(this.Handle, GWL_EXSTYLE, style & ~(WS_EX_TRANSPARENT | WS_EX_LAYERED));    SetLayeredWindowAttributes(this.Handle, 0, 100, LWA_ALPHA);  }

原文地址:

转载地址:http://ajhbm.baihongyu.com/

你可能感兴趣的文章
Dubbo Mesh在闲鱼生产环境的落地实践
查看>>
微软Build 2017第二天:跨平台跨硬件开发体验
查看>>
精益项目管理的可行性分析
查看>>
Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能
查看>>
举重若轻的人人车移动端数据平台
查看>>
建立自组织敏捷团队
查看>>
PayPal API风格指南和设计模式
查看>>
02-Docker新手入门网络篇
查看>>
大神 Linus Torvalds 语录
查看>>
[LintCode/LeetCode] Find Median From / Data Stream Median
查看>>
Android开发套路收集整理与讨论
查看>>
代码规范的重要性,我已经放弃治疗
查看>>
笨办法学C 练习30:自动化测试
查看>>
mui初级入门教程(五)— 聊聊即时通讯(IM),基于环信 web im SDK
查看>>
[vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件
查看>>
JS 设计模式二(封装)
查看>>
JavaScript “跑马灯”抽奖活动代码解析与优化(一)
查看>>
为什么我们选择 segmentfault 写作?
查看>>
多模型融合推荐算法在达观数据的运用
查看>>
JDK 11 马上就要来了!JDK 12 还会远吗?
查看>>