• 
    

      <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
      1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>

        C#鼠標鉤子帶你走出Form的區(qū)域限制-創(chuàng)新互聯(lián)

        記一次鼠標鉤子的使用

        公司專注于為企業(yè)提供網(wǎng)站建設、成都網(wǎng)站制作、微信公眾號開發(fā)、商城系統(tǒng)網(wǎng)站開發(fā),小程序開發(fā),軟件定制制作等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。

             惰性啊,好久沒寫東西了,但是今天這東西太重要,所以決心記下來,后續(xù)可以看看。

             鼠標鉤子(MouseHock),很少使用的一個功能,偶爾要用了也會因為各種涉及操作系統(tǒng)底層的接口讓我這種水貨避而遠之,話又說回來了,興趣是最好的老師,這次我Get了這個技能,但由于這個功能太過于強大,屬于非托管資源,用完請立即釋放鉤子,否則你QQ回車發(fā)送的東西能傳到你調試的XXXAPI你信不。。。

             顧名思義,圍繞著鼠標的操作而進行的,提前附上鼠標的相關Intptr值:

              private const int WM_MOUSEMOVE   = 0x200;

              private const int WM_LBUTTONDOWN = 0x201;

              private const int WM_RBUTTONDOWN = 0x204;

              private const int WM_MBUTTONDOWN = 0x207;

              private const int WM_LBUTTONUP   = 0x202;

              private const int WM_RBUTTONUP   = 0x205;

              private const int WM_MBUTTONUP   = 0x208;

              private const int WM_LBUTTONDBLCLK = 0x203;

              private const int WM_RBUTTONDBLCLK = 0x206;

              private const int WM_MBUTTONDBLCLK = 0x209;  十六進制的值,注意和十進制之間的轉換

        1. 鉤子源碼網(wǎng)上很多就不敲了,使用過程簡單說一下:

        2. 創(chuàng)建對象

        3. 安裝鉤子

        4. 綁定事件

        5. 卸載鉤子(釋放資源)

        鉤子里有這樣一段代碼,說下用的時候存在的坑:

              private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)

              {

                  Win32Api.MouseHookStruct MyMouseHookStruct = (Win32Api.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32Api.MouseHookStruct));

                  if (nCode < 0)

                  {

                      return Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam);

                  }

                  else

                  {

                      //判斷是否是鼠標點擊  規(guī)避鼠標移動函數(shù)

                      if (wParam.ToString("X2") == "201" || wParam.ToString("X2") == "204")

                      {

                          MouseButtons button = MouseButtons.Left;

                          var e = new MouseEventArgs(button, 1, point.X, point.Y, 0);

                          MouseClickEvent?.Invoke(this, e);

                          this.Point = new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y);

                          //return Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam);

                      }

                      return default(int);

                  }

              }

            注: 標記區(qū)域是因為我的任務需求是需要鼠標執(zhí)行單擊操作,而不是千篇一律的將鉤子抓取的所有操作都傳出來,一方面是資源開銷大,一方面是確實不需要,判斷的地方寫的很Low,直接對比上附的十六進制值務必注意釋放鉤子?。?!

        文章名稱:C#鼠標鉤子帶你走出Form的區(qū)域限制-創(chuàng)新互聯(lián)
        分享網(wǎng)址:http://www.jbt999.com/article0/djjhoo.html

        成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷虛擬主機、品牌網(wǎng)站制作、網(wǎng)站設計、網(wǎng)站收錄、服務器托管

        廣告

        聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

        手機網(wǎng)站建設

      2. 
        

          <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
          1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>
            精品国产AV网站 | 国产三级黄片 | 亚洲免费AV电影 | AAAA毛片 | av无码精品一区二区三区宅噜噜 | www爱射AV | 男女草逼| 男女拍拍视频免费 | 美日韩一级黄色片 | 黑人操屄视屏 |