SetForegroundWindow 関数を使用して、指定したプロセスでフォアグラウンド ウィンドウを設定できるようにします。 呼び出し元のプロセスは、フォアグラウンド ウィンドウを既に設定できる必要があります。 詳細については、このトピックで後述する「解説」を参照してください。
構文
BOOL AllowSetForegroundWindow(
[in] DWORD dwProcessId
);
パラメーター
[in] dwProcessId
型: DWORD
フォアグラウンド ウィンドウの設定が有効になるプロセスの識別子。 このパラメーターが ASFW_ANYされている場合、すべてのプロセスがフォアグラウンド ウィンドウを設定できるようになります。
戻り値
型: BOOL
関数が成功した場合、戻り値は 0 以外です。
関数が失敗した場合、戻り値は 0 です。 呼び出し元のプロセスがフォアグラウンド ウィンドウを設定できない場合、関数は失敗します。 拡張エラー情報を取得するには、GetLastError
注釈
フォアグラウンド ウィンドウを設定できるプロセスは、システムによって制限されます。 通常、プロセスは、次の場合にのみ SetForegroundWindow 関数を呼び出すことによってフォアグラウンド ウィンドウを設定できます。
- 次の条件はすべて当てはまります。
- 呼び出しプロセスは、UWP アプリや Windows 8 または 8.1 用に設計された Windows ストア アプリではなく、デスクトップ アプリケーションに属しています。
- 前景プロセスでは、 LockSetForegroundWindow 関数の以前の呼び出しによって SetForegroundWindow の呼び出しが無効にされていません。
- アクティブなメニューはありません。
- さらに、次の条件のうち少なくとも 1 つが当てはまります。
- フォアグラウンド ロックタイムアウトの有効期限が切れています (SystemParametersInfoのSPI_GETFOREGROUNDLOCKTIMEOUTを参照してください)。
- 呼び出し元のプロセスがフォアグラウンド プロセスです。
- 呼び出し元のプロセスは、フォアグラウンド プロセスによって開始されました。
- 現在、フォアグラウンド ウィンドウがないため、フォアグラウンド プロセスはありません。
- 呼び出し元のプロセスは、最後の入力イベントを受信しました。
- フォアグラウンド プロセスまたは呼び出し元プロセスのいずれかがデバッグ中です。
フォアグラウンド ウィンドウを設定できるプロセスでは、 AllowSetForegroundWindow を呼び出すことによって、別のプロセスでフォアグラウンド ウィンドウを設定できます。 dwProcessId パラメーターで指定されたプロセスは、ユーザーが次に入力を生成したときにフォアグラウンド ウィンドウを設定する機能を失います。ただし、入力がそのプロセスで送信されない限り、または次に AllowSetForegroundWindow を呼び出す場合は、AllowSetForegroundWindow の前の呼び出しと同じプロセスが指定されている場合を除きます。
Requirements
Requirement | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
Windows |
Header | winuser.h (Windows.h を含む) |
Library | User32.lib |
DLL | User32.dll |
API セット | ext-ms-win-ntuser-window-l1-1-0 (Windows 8 で導入) |
こちらも参照ください
概念
リファレンス