C#使用Windows API实现桌面上的遮罩层(鼠标穿透)
生活随笔
收集整理的這篇文章主要介紹了
C#使用Windows API实现桌面上的遮罩层(鼠标穿透)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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實現桌面上的遮罩層(鼠標穿透),希望對你有所幫助。
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实现桌面上的遮罩层(鼠标穿透)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 撩妹又污又霸气的昵称大全113个
- 下一篇: 项目管理一些体会