C#实现实现桌面上的遮罩层(鼠标穿透)主要通过一下几个API函数来实现:GetWindowLong,SetWindowLong,SetLayeredWindowAttributes。其中有一个Windows 消息 WS_EX_TRANSPARENT 比较重要,它实现了鼠标穿透的功能。 下面来看看完整的实现代码:

using System;  
using System.Drawing;  
using System.Windows.Forms;  
using System.Runtime.InteropServices;  
namespace WindowsApplication40  
{  
  public partia lclass Form1:Form  
  {  
    public Form1()  
    {  
      InitializeComponent();  
    }  
    [DllImport("user32.dll",EntryPoint="GetWindowLong")]  
    public static extern long GetWindowLong(IntPtr hwnd,int nIndex);  
    [DllImport("user32.dll",EntryPoint="SetWindowLong")]  
    public static extern long SetWindowLong(IntPtr hwnd,int nIndex,long dwNewLong);  
    [DllImport("user32",EntryPoint="SetLayeredWindowAttributes")]  
    public static extern int SetLayeredWindowAttributes(IntPtr Handle,int crKey,byte bAlpha,int dwFlags);  
    const int GWL_EXSTYLE=-20;  
    const int WS_EX_TRANSPARENT=0x20;  
    const int WS_EX_LAYERED=0x80000;  
    const int LWA_ALPHA=2;  
 
    private void Form1_Load(objec tsender,EventArgs e)  
    {  
      this.BackColor=Color.Silver;  
      this.TopMost=true;  
      this.FormBorderStyle=FormBorderStyle.None;  
      this.WindowState=FormWindowState.Maximized;  
      SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE)|WS_EX_TRANSPARENT|WS_EX_LAYERED);  
      SetLayeredWindowAttributes(Handle,0,128,LWA_ALPHA);  
    }  
  }  
} 

以上就是介绍C#使用Windows API实现桌面上的遮罩层(鼠标穿透),希望对你有所帮助。

转载于:https://www.cnblogs.com/top5/archive/2010/03/17/1688087.html

C#使用Windows API实现桌面上的遮罩层(鼠标穿透)相关推荐

  1. Windows 7/Vista 桌面上为何有两个隐含的 Desktop.INI

    笔者今天在微软中文论坛看到有人又问起一个不算新问题的问题:当我们通过 Windows 7/Vista 的文件夹 选项设置允许显示隐含的文件后,会在 Windows 7/Vista 桌面上看到两个同名的 ...

  2. css如何实现鼠标移至图片上显示遮罩层及文字

    css如何实现鼠标移至图片上显示遮罩层及文字 问题:一张图片当鼠标移动到上方时,会显示一个遮罩层,并且显示一些提示文字 html: <div class="contentimg&quo ...

  3. 鼠标悬停 -css如何实现鼠标移至图片上显示遮罩层及文字

    搜索这个效果的时候,很多人都是用css结合jQuery实现的,其实直接用css也可以实现哦~ 效果前: 效果后: 代码: <!DOCTYPE html> <html lang=&qu ...

  4. linux桌面环境 mac os,在Windows或Linux桌面上使用Mac OS Dashboard Widget | MOS86

    Windows Vista中引入了 Gadgets,并在Windows 7中继续使用.它们允许您从最新的新闻更新到月球的各个阶段查看各种信息,并在桌面上使用一些有用的实用程序.我们以前写过一个程序,允 ...

  5. Windows 2012系统桌面上没有我的电脑

    1.WIN+R调出运行窗口: 2.在运行窗口框输入     rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0    然后点击确定按钮,勾选想要在桌 ...

  6. Windows实现在桌面上双击图标,自动进入到指定网址

    功能实现步骤 创建一个快捷方式,右键点击桌面上的空白区域,选择"新建"->"快捷方式". 在弹出的"创建快捷方式"对话框中,输入你想要 ...

  7. html页面添加遮罩层,在浏览器窗口上添加遮罩层的方法

    如何在浏览器窗口上添加一个遮罩层 背景 在web2.0中,页面弹窗是一个很常见的交互方式,这样既可以避免不必要的页面跳转,也可以改进界面的布局和可交互性. 但是,浏览器原生的弹窗函数(alert, c ...

  8. Windows API参考大全

    第一章 Win32 API概论 1.1为什么使用 Wu32 API 在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API 函数.这些函数在程序员手中犹如" ...

  9. 保存和恢复桌面上的图标位置

    保存和恢复桌面上的图标位置 - CodeProject 本文介绍如何在 Windows 桌面上保存和还原图标的位置. 下载源代码 - 181.9 KB 介绍 最近,我的公司为我的笔记本电脑提供了一个扩 ...

最新文章

  1. Rainbow的相关资料
  2. php文件名函数,php 获取文件名basename()函数的用法总结
  3. 戴尔发布面向制造、生命科学和研究的高性能计算系统
  4. 编写程序,删除数组中重复的元素,并统计各元素出现的次数
  5. 每天进步一点点《ML - K-means》
  6. python免费教学视频400集-如何入门 Python 爬虫?400集免费教程视频带你从0-1全面掌握...
  7. C#租房管理系统(课程设计)
  8. 调试和测试 Swing 代码
  9. java安装cab破损,Visual Studio 2005 Professional Edition损坏的CAB文件
  10. 三维地图之cesium入门使用
  11. 微信小程序加载效果和取消加载效果
  12. 【我的世界】自定义局域网服务器-LanServerPropertie-1.17.x-自定义端口+关正版验证
  13. Python快速实现人脸识别
  14. vue单页面背景颜色修改
  15. October 20th 2017 Week 42nd Friday
  16. vb.net程序可以在触摸屏上运行么_【干货】触摸屏控制变频器的方法与步骤
  17. 《2021当代青年婚恋状态研究报告》:觅伊打破交友困境
  18. 中兴N880e升级android4.1版本体验
  19. 求正多边形各顶点的坐标(数学)
  20. 用一用Vant组件库

热门文章

  1. springboot在intellij中的热部署(Hot swapping)配置
  2. org.apache.hadoop.hbase.NotServingRegionException: hbase:meta,,1 is not online问题(暂时没有解决)
  3. $lookup做关联表查询
  4. ImportError: No module named Cython.Build
  5. linux cvs服务,Linux环境下轻松搭建CVS服务器
  6. mysql慢查询检查流程_简单谈谈MySQL优化利器-慢查询
  7. 常用的几种简单的内部排序方法
  8. 搭建Vue.js环境,建立一个简单的Vue项目
  9. [转]写好shell脚本的13个技巧
  10. LoaderManager使用详解(一)---没有Loader之前的世界