Функция 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 |