標籤:
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實現案頭上的遮罩層(滑鼠穿透),希望對你有所協助。
C#使用Windows API實現案頭上的遮罩層(滑鼠穿透)