C#創建鼠標能穿透的窗體

          本功能應用廣泛,出自一時的興趣。編出如下代碼進行記錄,便于以后查閱。主要使用WinApi函數為:SetWindowLong,GetWindowLong,SetLayeredWindowAttributes。
          [code lang=”csharp”]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 = 0x2;

          [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
          );

          ///

          /// 設置窗體具有鼠標穿透效果
          ///

          public void SetPenetrate()
          {
          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);
          }[/code]
          把SetPenetrate()方法放到Load事件里面就可以把當前窗口設置成具有鼠標穿透效果的窗體。

          本博客所有文章如無特別注明均為原創

          如果覺得對你有幫助,可以通過下方打賞對作者表示鼓勵

          本文采用知識共享署名-非商業性使用-相同方式共享

          如若轉載,請注明出處:《C#創建鼠標能穿透的窗體》http://www.solariosolutions.com/55.html

          (1)
          打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
          鋒哥的頭像鋒哥管理員
          上一篇 2012年5月3日 10:14
          下一篇 2013年5月2日 17:30

          相關推薦

          發表回復

          登錄后才能評論
          国产厨房乱子伦露脸,XXXXAAA欧美,日本 888 XXXX,国产欧美日韩一区二区图片