ホームページ > バックエンド開発 > C++ > C# でキー押下イベントをプログラム的に生成するにはどうすればよいですか?

C# でキー押下イベントをプログラム的に生成するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-16 20:33:13
オリジナル
407 人が閲覧しました

How Can I Programmatically Generate Keypress Events in C#?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート