SetForegroundWindow

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

BOOL SetForegroundWindow(
    HWND  hWnd    // ウィンドウハンドル
);

USER32.DLL

引数

hWnd

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

戻り値

成功した場合は 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 以降