AttachConsole function (Windows)

Switch View :
ScriptFree
AttachConsole function

Applies to: desktop apps only

Attaches the calling process to the console of the specified process.

Syntax

BOOL WINAPI AttachConsole(
  __in  DWORD dwProcessId
);

Parameters

dwProcessId [in]

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

ValueMeaning
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.

Remarks

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 (5). If the specified process does not have a console, the error code returned is ERROR_INVALID_HANDLE (6). If the specified process does not exist, the error code returned is ERROR_GEN_FAILURE (31).

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.

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

Requirements

Minimum supported client

Windows XP

Minimum supported server

Windows Server 2003

Header

Wincon.h (include Windows.h)

Library

Kernel32.lib

DLL

Kernel32.dll

See also

Console Functions
Consoles
AllocConsole
FreeConsole
GetConsoleProcessList

 

 

Send comments about this topic to Microsoft

Build date: 2/3/2012

Community Content

rogerdpack
must copy descriptors, too
If you want to actually use this newly attached console for default printf output (et al), you'll need to subsequently reopen your file descriptors, viz: http://dslweb.nwnexus.com/~ast/dload/guicon.htm

ScottJ1s
Beware using AttachConsole on Windows 2000
There is a bug in the header file wincon.h, on line 753, which defines AttachConsole conditionally with:

#if

(_WIN32_WINNT >= 0x0500)

Note that 0x0500 is what _WIN32_WINNT_WIN2K defines to, on line 24 of sdkddkver.h:

#define

_WIN32_WINNT_WIN2K 0x0500
We just shipped product that crashes on startup for our Windows 2000 clients, because of this.