SetForegroundWindow

指定されたウィンドウを作成したスレッドをフォアグラウンドにし、そのウィンドウをアクティブにします。以後、このウィンドウにキーボード入力が送られます。システムは、他のスレッドよりもわずかに高い優先度を、フォアグラウンドウィンドウを作成したスレッドに割り当てます。

BOOL SetForegroundWindow(
    HWND  hWnd           // window handle
);

USER32.DLL

引数

hWnd

フォアグラウンドにするウィンドウのハンドルを指定します。/p>

戻り値

ウィンドウがフォアグラウンドになった場合は0以外の値が返ります。

ウィンドウがフォアグラウンドにならなかった場合は0が返ります。

解説

フォアグラウンドウィンドウはZオーダーが最も上のウィンドウです。

Windows 98/Me/2000/XP: システムはフォアグラウンドを設定することのできるプロセスを制限しています。以下のいずれかの条件を満たす場合にのみ、フォアグラウンドウィンドウが設定されます。

この変更のため、ユーザーが別のウィンドウで作業している間は、アプリケーションはウィンドウをフォアグラウンドに設定することができません。代わりにFlashWindowEx関数が呼び出されてウィンドウがフラッシュされ、ユーザーに知らされます。ただし、Windows 98/Meでは、もしフォアグラウンドでないスレッドがSetForegroundWindow関数を呼び出して、呼び出しスレッド以外のスレッドによって作成されたウィンドウのハンドルを渡した場合は、ウィンドウはタスクバー上でフラッシュされません。SetForegroundWindow関数をWindows 95/Windows NT 4.0と同じように振舞わせるには、アプリケーションインストール時にSystemParametersInfo関数にSPI_SETFOREGROUNDLOCKTIMEOUTを指定することによってフォアグラウンドロックタイムアウトの値を0に変更します。ただし、Windows 2000/XPでは、呼び出しスレッドがフォアグラウンドを変更できる状態にない場合にはSystemParametersInfo関数は失敗してしまうので、この関数はセットアップアプリケーションやパッチアプリケーションによって呼び出されるべきです。

フォアグラウンドウィンドウを設定できる状態にあるプロセスは、AllowSetForegroundWindow関数を呼び出すことによって、他のプロセスがフォアグラウンドウィンドウを設定できるようにすることができます。

フォアグラウンドプロセスは、LockSetForegroundWindow関数を呼び出すことによって、SetForegroundWindow関数呼び出しを無効化させることができます。

対応情報

Windows 95 以降 / Windows NT 3.1 以降