C#-窗体鼠标穿透
#region 窗体鼠标穿透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);/// <summary>/// 声明委托类/// </summary>/// <param name="MsgStr"></param>public delegate void FormCt();/// <summary>/// 定义委托/// </summary>public static FormCt Ct;/// <summary> /// 设置窗体具有鼠标穿透效果 /// </summary> private void SetPenetrate(){if (this.InvokeRequired){this.Invoke(Ct);}else{this.TopMost = true;GetWindowLong(this.Handle, GWL_EXSTYLE);SetWindowLong(this.Handle, GWL_EXSTYLE, WS_EX_TRANSPARENT | WS_EX_LAYERED);SetLayeredWindowAttributes(this.Handle, 0, 100, LWA_ALPHA);}}#endregion
总结
- 上一篇: C#-Stmp发邮件
- 下一篇: C#-窗体移动