10

プログラムで1つの文字をDelphiグリッドのセルに入力する必要があります(他のアプリケーションの場合)。

これを手動で行うには、次の手順が必要です。

  1. F3ボタンを押します。
  2. 右矢印キーを3回押します。
  3. スペースボタンを押します。
  4. キーボードで文字「E」を入力します。
  5. 右矢印キーを押します。

     // Press F3 button         
     keybd_event(VK_F3, 0, 0, 0);         
     // Press right arrow key 3 times
     keybd_event(VK_RIGHT, 0, 0, 0);
     keybd_event(VK_RIGHT, 0, 0, 0);
     keybd_event(VK_RIGHT, 0, 0, 0);
    
     // Press the space button
     keybd_event(VK_SPACE, 0, 0, 0);
    
     // Type letter E
     keybd_event(Ord('E'), 0, 0, 0);
    
     // Move to the right
     keybd_event(VK_RIGHT, 0, 0, 0);
    

しかし、それは機能しません。このコードを実行しても、何も起こらないようです。

実際にユーザー入力をシミュレートするように、このコードをどのように変更する必要がありますか?

4

1 に答える 1

16

キーを押すたびに、キーが押され、次にキーが押されます。keybd_eventしたがって、キーを押すごとに 2 つの呼び出しが必要です。たとえば、F3 を押すには:

keybd_event(VK_F3, 0, KEYEVENTF_KEYDOWN, 0);
keybd_event(VK_F3, 0, KEYEVENTF_KEYUP, 0);

KEYEVENTF_KEYDOWN実際には、Windows ヘッダー ファイルまたは Delphi 翻訳によって定義されていないことに注意してください。と定義します0。ただし、明示的に書き出されたコードはより明確になります。

当然のことながら、ペアの呼び出しでコードを散らかすことはありませんkeybd_event。ただし、代わりに、対になった呼び出しをヘルパー関数にラップします。

状況によっては、2 番目のパラメーターであるスキャン コードを指定する必要がある場合があります。しかし、多くの場合、それは必要ありません。

于 2012-10-18T09:10:54.927 に答える