AllowSetForegroundWindow 関数 (winuser.h)

SetForegroundWindow 関数を使用して、指定したプロセスでフォアグラウンド ウィンドウを設定できるようにします。 呼び出し元プロセスは、フォアグラウンド ウィンドウを既に設定できる必要があります。 詳細については、このトピックで後述する「解説」を参照してください。

構文

BOOL AllowSetForegroundWindow(
  [in] DWORD dwProcessId
);

パラメーター

[in] dwProcessId

型: DWORD

フォアグラウンド ウィンドウを設定するために有効にするプロセスの識別子。 このパラメーターが ASFW_ANYの場合、すべてのプロセスでフォアグラウンド ウィンドウを設定できるようになります。

戻り値

種類: BOOL

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 呼び出し元のプロセスがフォアグラウンド ウィンドウを設定できない場合、関数は失敗します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

フォアグラウンド ウィンドウを設定できるプロセスが制限されます。 通常、次の場合にのみ SetForegroundWindow 関数を呼び出すことで、プロセスでフォアグラウンド ウィンドウを設定できます。

  • 次の条件はすべて当てはまります。
    • 呼び出しプロセスはデスクトップ アプリケーションに属し、UWP アプリや、Windows 8 または 8.1 用に設計された Windows ストア アプリには属していません。
    • 前景プロセスでは、 LockSetForegroundWindow 関数の以前の呼び出しによって SetForegroundWindow の呼び出しが無効にされていません。
    • フォアグラウンド ロックタイムアウトの有効期限が切れています (「SystemParametersInfoSPI_GETFOREGROUNDLOCKTIMEOUT」を参照してください)。
    • アクティブなメニューはありません。
  • さらに、次の条件の少なくとも 1 つが当てはまります。
    • 呼び出し元のプロセスがフォアグラウンド プロセスです。
    • 呼び出し元のプロセスは、フォアグラウンド プロセスによって開始されました。
    • 現在、フォアグラウンド ウィンドウがないため、フォアグラウンド プロセスはありません。
    • 呼び出し元のプロセスは、最後の入力イベントを受信しました。
    • フォアグラウンド プロセスまたは呼び出し元プロセスのいずれかがデバッグ中です。

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

要件

要件
サポートされている最小のクライアント 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 で導入)

関連項目

概念

LockSetForegroundWindow

リファレンス

SetForegroundWindow

Windows