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 の呼び出しが無効にされていません。
- フォアグラウンド ロックタイムアウトの有効期限が切れています (「SystemParametersInfo のSPI_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 で導入) |
関連項目
概念
リファレンス