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 |