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

另請參閱

主控台函式

主控台

AllocConsole

FreeConsole

GetConsoleProcessList