.NET下如何攔截滑鼠、鍵盤訊息?Win32NET來幫你

.NET下如何攔截滑鼠、鍵盤訊息?Win32NET來幫你

Win32NET是一個Win32API的.NET下封装的類別庫

最後更新 2022/1/20 下午2:12
明月心技术学堂
預計閱讀 3 分鐘
分類
.NET
標籤
.NET C# 攔截鍵盤 攔截滑鼠

Win32NET 是一個 Win32API 的 .NET 下封裝的類別庫,包含:

  1. 常用 Win32 API 的 .NET 封裝
  2. 滑鼠、鍵盤、熱鍵 Hook 鉤子模組
  3. 模擬鍵盤輸入文字(支援各種字元文字、不同語言的文字)、模擬滑鼠點擊移動滾動等操作
  4. 系統硬體資訊查詢

如何使用該 Win32Net 庫呢?可以在 NuGet 套件管理搜尋 Win32Net,

Install-Package Win32Net -Version 1.2.0

或者直接加入參考,

<PackageReference Include="Win32Net" Version="1.2.0" />

如何使用滑鼠鉤子:

首先實例化一個滑鼠鉤子物件,然後定義滑鼠事件回呼方法,啟動監聽即可。當不需要繼續監聽滑鼠資訊,則可以取消監聽。

win32.Hooks.MouseHook mouseHook = new Hooks.MouseHook();//實例化滑鼠鉤子物件
mouseHook.LeftDown += MouseHook_LeftDown;//滑鼠左鍵按下的事件監聽回呼方法
mouseHook.Start();//開始監聽
mouseHook.Stop();//停止監聽

如何使用鍵盤鉤子:

鍵盤鉤子與滑鼠鉤子使用類似,首先實例化一個鍵盤鉤子物件,然後定義鍵盤事件回呼方法,啟動監聽即可。當不需要繼續監聽鍵盤資訊,則可以取消監聽。

Win32.Hooks.KeyboardHook keyboardHook = new Win32.Hooks.KeyboardHook();
  keyboardHook.OnKeyUp += KeyboardHook_OnKeyUp;
  keyboardHook.Start();
  keyboardHook.Stop();

如何註冊全域快速鍵

//WPF 視窗控制代碼
//IntPtr hwnd =   new WindowInteropHelper(WPFWindow物件).Handle;
//WinForms 視窗控制代碼
 IntPtr hwnd = this.Handle;
  //實例化熱鍵物件,需要一個控制代碼,用於接收訊息
 Win32.Hooks.SystemHotKey systemHotKey = new Win32.Hooks.SystemHotKey(hwnd);
//熱鍵ID,要求唯一
 int hotKeyId = 5000;
//註冊 Alt+Q 快速鍵
systemHotKey.AddHotKey(hotKeyId, Win32.KeyModifiers.Alt, Keys.Q,
 () =>
 {
 MessageBox.Show("你按了 Alt+Q 快速鍵");
 }
);
//註冊 ESC 快速鍵
 systemHotKey.AddHotKey(hotKeyId + 1, Win32.KeyModifiers.None, Keys.Escape,
 () =>
 {
 this.Close();
 }
 );

如何取得系統硬體資訊

SystemInfo systemInfo = new SystemInfo();
richTextBox1.AppendText("作業系統:" + systemInfo.operatingSystem.Caption + "\n");
richTextBox1.AppendText("系統ID:" + systemInfo.operatingSystem.SerialNumber + "\n");
richTextBox1.AppendText("作業系統平台:" + systemInfo.operatingSystem.OSLevel + "\n");
richTextBox1.AppendText("系統安裝時間:" + systemInfo.operatingSystem.InstallDate + "\n");
richTextBox1.AppendText("系統最近啟動時間:" + systemInfo.operatingSystem.LastBootUpTime + "\n");
richTextBox1.AppendText("系統時間:" + systemInfo.operatingSystem.LocalDateTime + "\n");
richTextBox1.AppendText("CPU:" + systemInfo.processor.Name + "\n");
richTextBox1.AppendText("CPU廠商:" + systemInfo.processor.Manufacturer + "\n");
richTextBox1.AppendText("CPU序號:" + systemInfo.processor.SerialNumber + "\n");
richTextBox1.AppendText("實體記憶體:" + systemInfo.memory.TotalPhysicalMemory + "\n");
繼續探索

延伸閱讀

更多文章
同分類 / 同標籤 2026/2/7

AOT使用經驗總結

從專案建立伊始,就應養成良好的習慣,即只要添加了新功能或使用了較新的語法,就及時進行 AOT 發布測試。

繼續閱讀