Win32NET は Win32API の .NET 向けラッパークラスライブラリです。以下を含みます:
- 一般的な Win32 API の .NET ラッパー
- マウス、キーボード、ホットキーのフックモジュール
- キーボード入力シミュレーション(各種文字、異なる言語の文字に対応)、マウスクリック・移動・スクロールなどの操作シミュレーション
- システムハードウェア情報の取得
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("OSプラットフォーム:" + 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");