使用例
HotKeysManager manager = new HotKeysManager(); manager.AddHotKey(new HotKeyCombination(() => { MessageBox.Show(", !"); }) { Keys.LControlKey, Keys.H });
現在押されているキーが組み合わせとして取得される場所を追加する別のオプションは、ユーザーが自分で組み合わせを割り当てる場合に便利です。 デモには、このような組み合わせレコードの例があります。
manager.AddHotKey(new HotKeyCombination(HookManager.CurrentDownedKeys.ToArray(), () => { MessageBox.Show(", !"); }));
これで、LeftCtrl + H(またはH + LeftControl)の組み合わせを押すと、ウェルカムメッセージが表示されます。
どうした
グローバルクリックインターセプトには、3つのWinAPI関数が使用されます。
/// <summary> /// /// </summary> [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] private static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam); /// <summary> /// /// </summary> [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)] private static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, int dwThreadId); /// <summary> /// /// </summary> [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)] private static extern int UnhookWindowsHookEx(int idHook);
イベントを受信すると、キーが押されたか放されたかをチェックし、現在押されたキーのリストが生成されます。その後、組み合わせチェックが呼び出され、一致する場合はアラートが送信されます。
組み合わせの可用性に応じて、クリック代行受信が自動的にオン/オフになります。
機能的
クラスHotKeysManager
方法
- EnableHotKeys / DisableHotKeys-キーの組み合わせチェックの無効化を手動で有効にします
- AddHotKey(文字列、HotKeyCombination) -キーの組み合わせをコレクションに追加し、キーを示します
- AddHotKey(HotKeyCombination) -自動キー生成によるキーの組み合わせの追加(キーはKey1 + Key2 + ... + Keynとして生成されます)
- RemoveHotKey(文字列) -コレクション内のキーとの組み合わせを削除します
- RemoveHotKey(HotKeyCombination) -組み合わせを削除します。キーは自動的に生成されます(Key1 + Key2 + ... + Keyn)。このようなキーとの組み合わせがない場合、例外はスローされません。
イベント:
- NewCombination-新しい組み合わせの出現を通知します;フォーム(文字列){}のデリゲートが使用され、文字列Key1 + Key2 + ... + Keynがパラメーターとして渡されます
HookManagerクラス(静的クラス)
プロパティ:
- CurrentDownedKeys-押されたキーのリスト(List <Keys>)
- CurrentDownedKeysDescription-押されたキーの説明を含む文字列(Key1 + Key2 + ... + Keyn)
イベント:
- ChangeKeyState-キーストロークのセットの変更について通知し、パラメータなしでデリゲートします
ダウンロード(ソース+ bin_x86)
使用するときは、変換がグローバルであることを覚えておく価値があります。プログラムのアクティブウィンドウでのみアクションを制御する場合は、追加のチェックを入力する必要があります。