SetForegroundWindow 関数 (winuser.h)

指定したウィンドウを作成したスレッドをフォアグラウンドに移動し、ウィンドウをアクティブにします。 キーボード入力がウィンドウに送られ、ユーザーのさまざまな視覚的な手掛かりが変更されます。 システムは、フォアグラウンド ウィンドウを作成したスレッドに、他のスレッドよりも少し高い優先順位を割り当てます。

構文

BOOL SetForegroundWindow(
  [in] HWND hWnd
);

パラメーター

[in] hWnd

型: HWND

アクティブ化してフォアグラウンドに移動する必要があるウィンドウへのハンドル。

戻り値

型: BOOL

ウィンドウがフォアグラウンドに移動された場合、戻り値は 0 以外です。

ウィンドウがフォアグラウンドに移動されなかった場合、戻り値は 0 になります。

注釈

フォアグラウンド ウィンドウを設定できるプロセスが制限されます。 プロセスは、次のいずれかの条件に該当する場合にのみ、フォアグラウンド ウィンドウを設定できます。

  • プロセスはフォアグラウンド プロセスです。
  • プロセスはフォアグラウンド プロセスによって開始されました。
  • プロセスは最後の入力イベントを受信しました。
  • フォアグラウンド プロセスはありません。
  • プロセスがデバッグ中です。
  • フォアグラウンド プロセスは、モダン アプリケーションでもスタート画面でありません。
  • フォアグラウンドがロックされていません ( LockSetForegroundWindow を参照)。
  • フォアグラウンド ロックタイムアウトの有効期限が切れています (SystemParametersInfoのSPI_GETFOREGROUNDLOCKTIMEOUTを参照してください)。
  • アクティブなメニューはありません。
ユーザーが別のウィンドウを操作している間、アプリケーションはウィンドウをフォアグラウンドに強制できません。 代わりに、Windows はウィンドウのタスク バー ボタンを点滅してユーザーに通知します。

フォアグラウンド ウィンドウを設定できるプロセスでは、 AllowSetForegroundWindow 関数を呼び出すことによって、別のプロセスでフォアグラウンド ウィンドウを設定できます。 dwProcessId で指定されたプロセスでは、ユーザーが次に入力を生成したときにフォアグラウンド ウィンドウを設定する機能が失われます。ただし、入力がそのプロセスで送信されない限り、または次にプロセスが AllowSetForegroundWindow を呼び出す場合は、そのプロセスが指定されていない限りです。

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

次のコード例は、SetForegroundWindow の使用方法を示しています

// If the window is invisible we will show it and make it topmost without the
// foreground focus. If the window is visible it will also be made the
// topmost window without the foreground focus. If wParam is TRUE then
// for both cases the window will be forced into the foreground focus

if (uMsg == m_ShowStageMessage) {

    BOOL bVisible = IsWindowVisible(hwnd);
    SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0,
                    SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW |
                    (bVisible ? SWP_NOACTIVATE : 0));

    // Should we bring the window to the foreground
    if (wParam == TRUE) {
        SetForegroundWindow(hwnd);
    }
    return (LRESULT) 1;
}

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll
API セット ext-ms-win-ntuser-window-l1-1-0 (Windows 8 で導入)

こちらもご覧ください

AllowSetForegroundWindow

概念

FlashWindowEx

GetForegroundWindow

LockSetForegroundWindow

その他のリソース

リファレンス

SetActiveWindow

Windows