SendKeys.SendWait(String) メソッド


特定のキーをアクティブなアプリケーションに送信し、メッセージが処理されるまで待機します。Sends the given keys to the active application, and then waits for the messages to be processed.

 static void SendWait(System::String ^ keys);
public static void SendWait (string keys);
static member SendWait : string -> unit
Public Shared Sub SendWait (keys As String)



送信するキーストロークの文字列。The string of keystrokes to send.


キーストローク SendWait またはキーストロークの組み合わせをアクティブなアプリケーションに送信し、キーストロークメッセージが処理されるまで待機するには、を使用します。Use SendWait to send keystrokes or combinations of keystrokes to the active application and wait for the keystroke messages to be processed. このメソッドを使用して、キーストロークをアプリケーションに送信し、キーストロークによって開始されたプロセスが完了するまで待機することができます。You can use this method to send keystrokes to an application and wait for any processes that are started by the keystrokes to be completed. これは、アプリケーションを続行する前に他のアプリケーションを終了する必要がある場合に重要です。This can be important if the other application must finish before your application can continue.


別のアプリケーションをアクティブ化するマネージメソッドがないため、現在のアプリケーション内でこのクラスを使用するか、やなどのネイティブ Windows メソッドを使用して、 FindWindow SetForegroundWindow 他のアプリケーションにフォーカスを移すことができます。Because there is no managed method to activate another application, you can either use this class within the current application or use native Windows methods, such as FindWindow and SetForegroundWindow, to force focus on other applications.


.NET Framework 3.0 の SendKeys クラスが更新され、Windows Vista で実行されるアプリケーションで使用できるようになりました。The SendKeys class has been updated for the .NET Framework 3.0 to enable its use in applications that run on Windows Vista. Windows Vista の強化されたセキュリティ、(ユーザー アカウント制御または UAC と呼ばれます) により、前の実装は想定どおり機能できません。The enhanced security of Windows Vista (known as User Account Control or UAC) prevents the previous implementation from working as expected.

SendKeys クラスはタイミングの問題が発生する可能性があり、一部の開発者は回避策を取る必要がありました。The SendKeys class is susceptible to timing issues, which some developers have had to work around. 更新された実装は、引き続きタイミングの問題が発生する可能性がありますが、速度が少し向上し、回避策の変更が必要となる可能性があります。The updated implementation is still susceptible to timing issues, but is slightly faster and may require changes to the workarounds. SendKeys クラスは、最初に前の実装を使用しようとし、失敗した場合に、新しい実装を使用します。The SendKeys class tries to use the previous implementation first, and if that fails, uses the new implementation. その結果、 SendKeys クラスが別のオペレーティング システムと異なる動作を取る可能性があります。As a result, the SendKeys class may behave differently on different operating systems. さらに、 SendKeys クラスは、新しい実装を使用した場合、 SendWait メソッドが別のプロセスに送信されたときにメッセージの処理を待機しません。Additionally, when the SendKeys class uses the new implementation, the SendWait method will not wait for messages to be processed when they are sent to another process.

アプリケーションが、オペレーティング システムに関係なく一貫した動作に依存する場合、app.config ファイルに次のアプリケーション設定を追加することで、 SendKeys クラスが新しい実装を使用するよう強制することができます。If your application relies on consistent behavior regardless of the operating system, you can force the SendKeys class to use the new implementation by adding the following application setting to your app.config file.


<add key="SendKeys" value="SendInput"/>


SendKeys クラスが前の実装を使用するよう強制するには、代わりに値 "JournalHook" を使用します。To force the SendKeys class to use the previous implementation, use the value "JournalHook" instead.