AttachConsole 函式
將呼叫進程附加至指定進程的主控台做為客戶端應用程式。
語法
BOOL WINAPI AttachConsole(
_In_ DWORD dwProcessId
);
參數
dwProcessId [in]
要使用的主控台之進程的識別碼。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
pid | 使用指定進程的主控台。 |
ATTACH_PARENT_PROCESS (DWORD)-1 |
使用目前進程的父代控制台。 |
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
進程最多可以連結至一個控制台。 如果呼叫進程已經附加至主控台,則傳回的錯誤碼會 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 |