<Return[WXYZ]><Top>

WaitForInputIdle

Declare Function Api_WaitForInputIdle& Lib "user32" Alias "WaitForInputIdle" (ByVal hProcess&, ByVal dwMilliseconds&)

Declare Function WaitForInputIdle Lib "user32" (ByVal hProcess As Long, ByVal dwMilliseconds As Long) As Long

指定されたプロセスで未処理の入力が存在せず、ユーザーからの入力を待っている状態になるまで、またはタイムアウト時間が経過するまで待機する。

パラメータ
hProcess
    プロセスのハンドルを指定する。このプロセスがコンソールアプリケーションである場合、またはこのプロセスにメッセージキューが割り当てられ

    ていない場合、WaitForInputIdle 関数は即座に制御を返す。
dwMilliseconds
    タイムアウト時間をミリ秒(ms)単位で指定する。INFINITE を指定すると、プロセスがアイドル状態になるまで制御を返さない。

戻り値
    次の表は、発生する可能性のある戻り値を示す。

    値                            

意味                                                                                                          

    0

待機条件が成立した。

    WAIT_TIMEOUT

タイムアウト時間が経過したために、待機状態を終了した。

    -1

関数が失敗し、エラーが発生した。拡張エラー情報を取得するには、 関数を使う。

 

解説
    WaitForInputIdle 関数を使うと、指定したプロセスの初期化が完了し、未処理の入力が存在せず、ユーザーの入力を待っている状態に

    なるまで、スレッドを中断させることができる。

    この関数は、親プロセスと新しく作成したプロセスを同期させたい場合に役立つ。親プロセスが CreateProcess 関数を使って子プロセスを作

    成すると、CreateProcess 関数は子プロセスが初期化を終了させるまで待たずに制御を返す。

    親プロセスは、子プロセスとの通信を試みる前に、WaitForInputIdle 関数を使って、子プロセスの初期化が完了した時点でそのことを検

    出する。

    たとえば、親プロセスは、子プロセスに関連付けられているウィンドウの検索を開始する前に、WaitForInputIdle 関数を使うべきである。
    WaitForInputIdle 関数は、アプリケーションの起動時だけでなく、任意の時点で利用できる。