win32net 是一個 win32api 的.net 下封裝的類庫,包含:
- 常用 win32 的 api 的 net 封裝
- 滑鼠、鍵盤、熱鍵 hook 鉤子模塊,
- 模擬鍵盤輸入文字(支持各種字符文字、不同語言的文字)、模擬滑鼠點擊移動滾動等操作
- 系統硬體信息查詢
如何使用該 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;
//winform 窗口句柄
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");