AttachConsole 関数
呼び出しプロセスを、指定されたプロセスのコンソールにクライアント アプリケーションとしてアタッチします。
構文
BOOL WINAPI AttachConsole(
_In_ DWORD dwProcessId
);
パラメーター
dwProcessId [in]
コンソールを使用するプロセスの識別子。 このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
pid | 指定したプロセスのコンソールを使用します。 |
ATTACH_PARENT_PROCESS (DWORD)-1 |
現在のプロセスの親のコンソールを使用します。 |
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
プロセスは、最大 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 (デスクトップ アプリのみ) |
ヘッダー | ConsoleApi.h (WinCon.h 経由、Windows.h をインクルード) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |