1

SendKeys.SendWait()は単なるラッパーであり、これら2つのコードスニペットは同一ですか?

const int VK_ESCAPE = 0x1B;
keybd_event(VK_ESCAPE, 0, 0, 0);
keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0);

System.Windows.Forms.SendKeys.SendWait("{ESC}");

そうでない場合、一方を他方の上に使用する理由はありますか?

4

2 に答える 2

5

keybd_event()はレガシーAPIであり、最近はSendInput()を使用することになっています。SendKeysは、.configファイルの設定に応じて、ジャーナリングフックまたはSendInputのいずれかを使用します。ジャーナリングフックはレガシーであり、依然としてデフォルトです。SendInputは、Vista以降でより適切に機能し、.NET 3以降で使用できます。したがって、大まかに言って、それらは同じです。構成設定は次のとおりです。

<appSettings> 
    <add key="SendKeys" value="SendInput"/> 
</appSettings> 
于 2011-02-23T21:19:53.330 に答える
1

最新バージョンのSystem.Windows.Forms.SendKeys使用SendInput。ただし、そうするように構成する必要があります。ハンスは、の代替ジャーナリングフック方法について説明しましたSendKeys

SendInputは、入力を偽造するための公式に認可されたAPI呼び出しです。記載するドキュメントkeybd_event

この機能は置き換えられました。代わりにSendInputを使用してください。

SendKeysはるかに簡単なので、おそらく使用する必要があります。

于 2011-02-23T21:18:47.513 に答える