C# キー イベントの手続き型生成
アプリケーション開発では、ユーザー入力をシミュレートしたり、イベント処理メカニズムをテストしたりするために、プログラムで主要なイベントを生成することが必要になることがよくあります。この記事では、WPF、WinForms、Win32 の特定のメソッドを含むさまざまなメソッドを使用して、C# でこのようなイベントを作成する方法について説明します。
WPF 固有のメソッド
WPF アプリケーションの場合、KeyEventArgs
クラス構造を使用して主要なイベントをシミュレートし、RaiseEvent
メソッドを使用してターゲット要素でそれを発生させることができます。たとえば、Insert キーの KeyDown イベントを現在フォーカスされている要素に送信するには:
<code class="language-csharp">var key = Key.Insert; // 要发送的键 var target = Keyboard.FocusedElement; // 目标元素 var routedEvent = Keyboard.KeyDownEvent; // 要发送的事件 target.RaiseEvent( new KeyEventArgs( Keyboard.PrimaryDevice, PresentationSource.FromVisual(target), 0, key) { RoutedEvent=routedEvent } );</code>
WinForms 固有のメソッド
WinForms では、SendKeys.Send
メソッドを使用して主要なイベントをシミュレートできます。たとえば、挿入キーストロークを送信するには:
<code class="language-csharp">SendKeys.Send("{INSERT}");</code>
Win32 固有のメソッド
キーストローク シミュレーションを低レベルで制御するには、Windows API の keybd_event
関数を使用できます。この機能を使用すると、キー イベントをシミュレートする仮想キー コード、スキャン コード、およびその他のパラメーターを指定できます。たとえば、Insert キーの keydown イベントを送信するには:
<code class="language-csharp">// 导入必要的头文件。 [DllImport("user32.dll")] private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo); // ... // 定义keydown事件的参数。 const byte VK_INSERT = 0x2D; // Insert键的虚拟键代码。 keybd_event(VK_INSERT, 0, 0, 0); // 发送keydown事件。</code>
その他の指示
target.RaiseEvent(...)
メタ処理を行わずにイベントをターゲット要素に直接送信します。通常、これが理想的です。ただし、実際のキーボードのキーをシミュレートしたい場合は、代わりに InputManager.ProcessInput()
を使用してください。 以上がC# でキー押下イベントをプログラム的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。