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 (via WinCon.h, include Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

控制台函数

控制台

AllocConsole

FreeConsole

GetConsoleProcessList