Ako získať popisovač okno konzoly (HWND)

Preklady článku Preklady článku
ID článku: 124103
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Môže byť užitočné manipulovať okno spojené s konzolou aplikácia. Rozhranie API systému Win32 poskytuje žiadna priama metóda na získanie okno popisovač priradený aplikácia konzoly. Môžete však získať popisovač okno prostredníctvom volania FindWindow(). Táto funkcia načíta okno popisovač založený na názov triedy alebo názov okna.

Volajte GetConsoleTitle() zistiť aktuálny názov konzoly. Potom dodávky aktuálny názov konzoly na FindWindow().

DALSIE INFORMACIE

Pretože viacero okien môže mať rovnaký názov, môžete zmeniť súčasné konzoly window title do jedinečný názov. Toto pomôže zabrániť nesprávne okno popisovač pred vrátením. SetConsoleTitle() sa používa na zmenu aktuálny názov okna konzoly. Tu je proces:
  1. Volajte GetConsoleTitle() uložiť aktuálny názov okna konzoly.
  2. Volajte SetConsoleTitle() zmeniť názov konzoly na jedinečný názov.
  3. Sleep(40) hovor na zabezpečenie záhlavie okna bol aktualizovaný.
  4. Hovor FindWindow (NULL, uniquetitle), na získanie HWND Táto výzva vráti HWND--alebo NULL, ak operácia zlyhala.
  5. Hovor SetConsoleTitle() s hodnotou načítané z kroku 1, na obnoviť pôvodný názov okna.
Otestovať môžete výsledné HWND. Napríklad, môžete otestovať, či Vráti HWND zodpovedá súčasného procesu volaním GetWindowText() na HWND a porovnáva výsledok so GetConsoleTitle().

Výsledné HWND nie je zaručená vhodný pre všetky okno rukoväť operácie.

Vzorky kód

Nasledujúca funkcia načíta aktuálneho okna konzoly aplikácie Popisovač (HWND). Ak funkcia úspešné, vrátená hodnota je rukoväť okno konzoly. Ak funkcia zlyhá, vrátená hodnota je NULL. Niektoré Kontrola chýb je vynechaný, pre stručnosť.
   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á kontrola: 10. októbra 2011 - Revízia: 2.0
Kľúčové slová: 
kbhowto kbwndw kbmt KB124103 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:124103

Odošlite odozvu

 

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