呼び出し元プロセスを、指定されたプロセスのコンソールにクライアント アプリケーションとしてアタッチします。
構文
BOOL WINAPI AttachConsole(
_In_ DWORD dwProcessId
);
パラメーター
dwProcessId [in]
コンソールを使用するプロセスの識別子。 このパラメーターには、次の値のいずれかを指定できます。
| [値] | 意味 |
|---|---|
| pid | 指定したプロセスのコンソールを使用します。 |
ATTACH_PARENT_PROCESS(DWORD)-1 |
現在のプロセスの親のコンソールを使用します。 |
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
注釈
1 つのプロセスは、最大で 1 つのコンソールにアタッチできます。 呼び出し元プロセスが既にコンソールにアタッチされている場合、返されるエラー コードは ERROR_ACCESS_DENIED です。 指定したプロセスにコンソールがない場合、返されるエラー コードは ERROR_INVALID_HANDLE です。 指定したプロセスが存在しない場合、返されるエラー コードは ERROR_INVALID_PARAMETER です。
プロセスでは、FreeConsole 関数を使用してコンソールからそのプロセス自体をデタッチできます。 他のプロセスがコンソールを共有している場合、コンソールは破棄されませんが、FreeConsole を呼び出したプロセスはそれを参照できなくなります。 コンソールにアタッチされている最後のプロセスが終了するか FreeConsole を呼び出すと、コンソールは閉じられます。 プロセスは、FreeConsole を呼び出した後で、AllocConsole 関数を呼び出して新しいコンソールを作成したり、AttachConsole を呼び出して別のコンソールにアタッチしたりできます。
この関数は、主に /SUBSYSTEM:WINDOWS を使用してリンクされたアプリケーションに役立ちます。これは、プログラムのメイン メソッドに入る前はコンソールが必要ないことをオペレーティング システムに示します。 その場合、GetStdHandle で取得される標準ハンドルは、起動時に AttachConsole が呼び出されるまで無効になっている可能性があります。 これに対する例外は、アプリケーションがその親プロセスによるハンドル継承を使用して起動される場合です。
この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT を 0x0501 以降として定義します。 詳細については、「Windows ヘッダーの使用」を参照してください。
要件
| サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
| サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ] |
| Header | ConsoleApi.h (WinCon.h 経由、Windows.h をインクルード) |
| ライブラリ | Kernel32.lib |
| DLL | Kernel32.dll |