AttachConsole function

Attaches the calling process to the console of the specified process as a client application.


BOOL WINAPI AttachConsole(
  _In_ DWORD dwProcessId


dwProcessId [in]
The identifier of the process whose console is to be used. This parameter can be one of the following values.

Value Meaning
pid Use the console of the specified process.
ATTACH_PARENT_PROCESS (DWORD)-1 Use the console of the parent of the current process.

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.


A process can be attached to at most one console. If the calling process is already attached to a console, the error code returned is ERROR_ACCESS_DENIED. If the specified process does not have a console, the error code returned is ERROR_INVALID_HANDLE. If the specified process does not exist, the error code returned is ERROR_INVALID_PARAMETER.

A process can use the FreeConsole function to detach itself from its console. If other processes share the console, the console is not destroyed, but the process that called FreeConsole cannot refer to it. A console is closed when the last process attached to it terminates or calls FreeConsole. After a process calls FreeConsole, it can call the AllocConsole function to create a new console or AttachConsole to attach to another console.

This function is primarily useful to applications that were linked with /SUBSYSTEM:WINDOWS, which implies to the operating system that a console is not needed before entering the program's main method. In that instance, the standard handles retrieved with GetStdHandle will likely be invalid on startup until AttachConsole is called. The exception to this is if the application is launched with handle inheritance by its parent process.

To compile an application that uses this function, define _WIN32_WINNT as 0x0501 or later. For more information, see Using the Windows Headers.


Minimum supported client Windows XP [desktop apps only]
Minimum supported server Windows Server 2003 [desktop apps only]
Header ConsoleApi.h (via WinCon.h, include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

See also

Console Functions