Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracowali: Piotr DejaVu Szawdyński, pekfos
Biblioteki C/C++

AttachConsole

[funkcja] Podłącza się do istniejącej konsoli innego procesu.

Składnia

C/C++
#include <windows.h>

BOOL WINAPI AttachConsole( DWORD dwProcessId );

Argumenty

ArgumentOpis
DWORD dwProcessIdIdentyfikator procesu z którego konsola ma zostać użyta. Ten argument może mieć jedną z następujących wartości:
WartośćZnaczenie
pidWykorzystaj konsolę z określonego procesu.
ATTACH_PARENT_PROCESSWykorzystaj konsolę rodzica aktualnego procesu.

Zwracana wartość

Zwraca wartość różną od zera w przypadku sukcesu. W przeciwnym wypadku funkcja zwraca wartość 0.

Aby uzyskać rozszerzone informacje o błędzie, wywołaj funkcję » WinAPIGetLastError.

Opis szczegółowy

Proces może być powiązany z maksymalnie z jedną konsolą. Jeżeli proces wołający niniejszą funkcję jest już powiązany z konsolą to funkcja » WinAPIGetLastError zwróci kod błędu ERROR_ACCESS_DENIED. Jeżeli określony proces nie ma konsoli to kod błędu zostanie ustawiony na ERROR_INVALID_HANDLE. Jeśli określony proces nie istnieje to zostanie nadany kodem błędu ERROR_GEN_FAILURE.

Dodatkowe informacje

Proces może użyć funkcji » WinAPIFreeConsole aby odłączyć od siebie okno konsoli. Jeżeli konsola jest współdzielona przez kilka procesów to konsola nie zostanie zniszczona ale jednocześnie wołający proces nie może już z niej korzystać. Konsola zostanie zamknięta gdy ostatni proces podłączony do konsoli zostanie zakończony bądź wywoła funkcję » WinAPIFreeConsole. Po wywołaniu funkcji » WinAPIFreeConsole można wywołać funkcję » WinAPIAllocConsole w celu utworzenia nowej konsoli bądź wywołać funkcję AttachConsole by podłączyć się do istniejącej konsoli innego procesu.

Aby skompilować program używający niniejszej funkcji zdefiniuj makro _WIN32_WINNT z wartością 0x0501 lub większą.

Wymagania

Minimalny obsługiwany klientWindows XP
Minimalny obsługiwany serwerWindows Server 2003
BibliotekaKernel32.lib
DLLKernel32.dll

Przykład

C/C++
#define _WIN32_WINNT 0x0501
#include <windows.h>

int main()
{
    if( !AttachConsole( ATTACH_PARENT_PROCESS ) )
    {
        DWORD errorNo = GetLastError();
        switch( errorNo )
        {
        case ERROR_ACCESS_DENIED:
            MessageBoxA( NULL, "Dostęp zabroniony.", "Komunikat", MB_OK );
            break;
        case ERROR_INVALID_HANDLE:
            MessageBoxA( NULL, "Proces nie posiada konsoli.", "Komunikat", MB_OK );
            break;
        case ERROR_GEN_FAILURE:
            MessageBoxA( NULL, "Proces nie posiada rodzica.", "Komunikat", MB_OK );
            break;
            default:
            break;
        }
    }
    return 0;
}

Zagadnienia powiązane

FreeConsoleOdłącza konsolę od aktualnego procesu. (funkcja)
AllocConsoleTworzy nową konsolę dla procesu. (funkcja)

Linki zewnętrzne