Jak získat popisovač okna konzoly (HWND)

Překlady článku Překlady článku
ID článku: 124103
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Může být užitečné pro práci s oknem spojených s konzolou aplikace. Poskytuje rozhraní Win32 API žádná přímá metoda pro získání Popisovač okna přidružené aplikace konzoly. Můžete však Získejte popisovač okna pomocí volání FindWindow(). Tato funkce zkopíruje Popisovač okna na základě názvu třídy nebo název okna.

Volání GetConsoleTitle() zjistit aktuální název konzoly. Potom dodat aktuální název konzoly pro FindWindow().

Další informace

Protože více oken může mít stejný název, měli byste změnit aktuální název okna konzoly jedinečný název. To pomůže zabránit okno chybný popisovač z vracených. Změnit pomocí SetConsoleTitle() aktuální název okna konzoly. Zde je proces:
  1. Volání GetConsoleTitle() uložit aktuální záhlaví okna konzoly.
  2. Volání SetConsoleTitle() změna názvu konzolu jedinečný název.
  3. Volání Sleep(40), aby že byl aktualizován název okna.
  4. Volání FindWindow (NULL, uniquetitle), získat HWND Volání vrátí HWND--nebo NULL, pokud operace se nezdařila.
  5. Volání SetConsoleTitle() s hodnotou načíst z kroku 1, Obnovte původní záhlaví okna.
Je vhodné otestovat výsledný HWND. Například můžete otestovat a zjistěte, zda vrácený že hWnd odpovídá aktuální proces voláním GetWindowText() na HWND a porovná výsledek s GetConsoleTitle().

Výsledné HWND je nemusí být vhodné pro všechny popisovač okna operace.

Ukázkový kód

Následující funkce načte aktuální okno aplikace konzoly Popisovač (HWND). Pokud je funkce úspěšné, vrácená hodnota je popisovač okno konzoly. Pokud dojde k selhání funkce, vrácená hodnota je NULL. Některé Kontrola chyb je vynechán, pro stručnost.
   HWND GetConsoleHwnd(void)
   {
       #define MY_BUFSIZE 1024 // Buffer size for console window titles.
       HWND hwndFound;         // This is what is returned to the caller.
       char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
                                           // WindowTitle.
       char pszOldWindowTitle[MY_BUFSIZE]; // Contains original
                                           // WindowTitle.

       // Fetch current window title.

       GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);

       // Format a "unique" NewWindowTitle.

       wsprintf(pszNewWindowTitle,"%d/%d",
                   GetTickCount(),
                   GetCurrentProcessId());

       // Change current window title.

       SetConsoleTitle(pszNewWindowTitle);

       // Ensure window title has been updated.

       Sleep(40);

       // Look for NewWindowTitle.

       hwndFound=FindWindow(NULL, pszNewWindowTitle);

       // Restore original window title.

       SetConsoleTitle(pszOldWindowTitle);

       return(hwndFound);
   }
				

Vlastnosti

ID článku: 124103 - Poslední aktualizace: 23. dubna 2011 - Revize: 3.0
Klíčová slova: 
kbhowto kbwndw kbmt KB124103 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:124103

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com