<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      在C#中引用win32動態連接庫

      Windows API

      使用Windows API編程和C#編程的區別

      • 靈活性和控制粒度
        Windows API:可以攔截和處理系統級別的所有消息,包括鍵盤、鼠標、窗口消息等,提供了極高的控制粒度。
        高級編程語言庫:通常只能處理特定類型的消息(只限于C#封裝好的方法),且需要通過重寫方法來實現,靈活性較差。
      • 功能范圍
        Windows API:可以發送任意消息到任意窗口,甚至是系統消息,功能非常廣泛。
        高級編程語言庫:功能有限,通常只能發送和處理應用程序內的消息。
      • 性能和效率
        Windows API:直接調用系統底層函數,性能高效。
        高級編程語言庫:通過封裝實現,可能有額外的性能開銷。
      • 實現復雜度
        Windows API:需要了解系統級編程,有一定的實現復雜度。
        高級編程語言庫:實現簡單,易于使用
      • 語言獨立性
        Windows API 是操作系統級的接口,幾乎所有編程語言都可以調用:許多跨平臺 GUI 庫在 Windows 平臺上也是通過調用 Windows API 實現的。

      鉤子

      參考來源: 王旭(http://www.wxzzz.com

      概述

      作用:

      鉤子允許應用程序監視和干預系統和其他應用程序的行為,攔截系統或應用程序中的消息,以便在特定事件發生時執行自定義代碼。

      種類:

      常見的鉤子類型

      • 鍵盤鉤子、
      • 鼠標鉤子、
      • 窗口消息鉤子、
      • 系統消息鉤子等。

      范圍:

      鉤子可以是全局的(系統范圍內的鉤子,能夠監視和干預所有應用程序),也可以是局部的(只針對特定應用程序)。

      應用場景

      C#客戶端(winform,VB,WPF)的事件的觸發機制:通過設置勾子監聽系統或應用程序中的消息,再配合C#中的event事件實現

      困擾我4年-_-

      用到的win32API

      //安裝鉤子
      [DllImport("user32.dll")]
      private static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId);
      //下一個鉤子
      [DllImport("user32.dll")]
      private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
      // 卸載鉤子
      [DllImport("user32.dll")]
      private static extern int UnhookWindowsHookEx(int idHook);
      

      鼠標點擊事件的觸發原理

      public partial class Form1 : Form
      {
          public Form1()
          {
              InitializeComponent();
              MouseHelper mouseHelper = new MouseHelper();
      
              mouseHelper.MouseEvent += (() => { MessageBox.Show("HaHa"); });
              mouseHelper.Listen();
          }
      }
      public class MouseHelper
      {
          // WH_MOUSE_LL 是一種低級鼠標鉤子,允許對鼠標事件進行全局監視,無論事件發生在哪個窗口中。
          // 用于攔截和監視鼠標事件,如鼠標移動、按鍵等。
          private const int WH_MOUSE_LL = 14;
          //全局事件
          public event Action MouseEvent;
          // 鉤子處理函數委托
          private delegate IntPtr HookProc(int nCode, IntPtr wParam, IntPtr lParam);
          /// <summary>
          /// 此字段不客觀需要的,但我們需要保持一個供參考的將被傳遞給非托管代碼的委托。
          /// 為了避免GC把它清理干凈。
          /// </summary>
          private static HookProc s_MouseDelegate;
          // 從 user32.dll 導入 SetWindowsHookEx 函數
          [DllImport("user32.dll")]
          private static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId);
      
          // 從 user32.dll 導入 CallNextHookEx 函數
          [DllImport("user32.dll")]
          private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
          [DllImport("user32.dll")]
          private static extern int UnhookWindowsHookEx(int idHook);
          // 鉤子處理函數
          private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
          {
              if (nCode >= 0 && wParam == (IntPtr)0x0201) // WM_LBUTTONDOWN
              {
                  //觸發點擊事件
                  MouseEvent?.Invoke(); 
                  // 在這里處理鼠標左鍵按下事件
                  Console.WriteLine("左鍵按下");
              }
              // 繼續傳遞消息
              return CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam);
          }
          public void Listen()
          {
              //為了避免GC把它清理干凈。
              s_MouseDelegate = HookCallback;
              //安裝鉤子
              //要傳入靜態的s_MouseDelegate,避免GC把它清理掉
              SetWindowsHookEx(WH_MOUSE_LL, s_MouseDelegate, IntPtr.Zero, 0);
          }
      }
      
      posted @ 2024-06-03 16:35  回首起了風沙  Views(44)  Comments(0)    收藏  舉報
      主站蜘蛛池模板: 国产欧美亚洲精品第一页在线| 少妇人妻偷人精品免费| 精品亚洲国产成人性色av| 亚欧成人精品一区二区乱| 免费人成在线视频无码| 亚洲黄日本午夜一区二区| 国产午夜精品久久久久免费视| 激情内射亚洲一区二区三区| 在线一区二区中文字幕| 人成午夜免费视频在线观看| 亚洲一久久久久久久久| 漂亮人妻中文字幕丝袜| 老熟妇老熟女老女人天堂| 精品一区二区三区少妇蜜臀| 亚洲爆乳WWW无码专区| 久99久热精品免费视频| 丰满人妻一区二区三区色| 国产精品香港三级国产av| 又黄又爽又色的少妇毛片| 女同亚洲精品一区二区三| 成人福利国产午夜AV免费不卡在线 | 久久88香港三级台湾三级播放| 宅男噜噜噜66在线观看| 国产精品成人观看视频国产奇米 | 六十路熟妇乱子伦| 精品三级在线| 野外做受三级视频| 无码专区一va亚洲v专区在线| 中文无码妇乱子伦视频| 国产精品免费看久久久| 精品久久精品久久精品久久| 国产黄色一区二区三区四区 | 18禁成人免费无码网站| 国产美女深夜福利在线一| 日韩人妻无码精品久久| 亚洲欧洲日产国无高清码图片| 亚洲国产成人精品综合色| 无码精品一区二区免费AV| 亚洲色大成网站www看下面| 2019国产精品青青草原| 亚洲国产精品久久久久婷婷图片|