So erhalten Sie eine Konsole Fensterhandle (HWND)

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 124103 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Es kann hilfreich zum Bearbeiten eines Fensters eine Konsolenanwendung zugeordnet sein. Die Win32-API bietet keine direkte Methode zum Abrufen des das Fensterhandles einer Konsolenanwendung zugeordnet. Allerdings können Sie das Fensterhandle durch Aufrufen von FindWindow() abrufen. Diese Funktion Ruft ein Fensterhandle basierend auf einer Klassennamen oder Fenstername ab.

Rufen Sie GetConsoleTitle() den aktuellen Konsolentitel fest. Geben Sie dann den aktuellen Konsolentitel zu FindWindow().

Weitere Informationen

Da mehrere Fenster denselben Titel haben können, sollten Sie den aktuellen Konsole Fenstertitel an eine eindeutige Titel ändern. Dadurch können verhindern, dass das falsche Fensterhandle zurückgegeben werden. Verwenden Sie SetConsoleTitle(), um den aktuelle Konsole Fenstertitel ändern. Hier ist der Prozess:
  1. Rufen Sie GetConsoleTitle(), um den Fenstertitel für aktuelle Konsole speichern.
  2. Rufen Sie SetConsoleTitle() den Konsolentitel der auf einen eindeutigen Titel zu ändern.
  3. Rufen Sie Sleep(40), damit der Titel des Fensters aktualisiert wurde.
  4. Aufruf FindWindow (NULL, Uniquetitle) zu dem HWND dieser Aufruf gibt die HWND-- oder NULL zurück, wenn der Vorgang fehlgeschlagen ist.
  5. Aufruf SetConsoleTitle() mit dem Wert aus Schritt 1, zum Wiederherstellen des ursprünglichen Fenstertitel abgerufen.
Sie sollten den resultierenden HWND testen. Beispielsweise können Sie testen finden Sie unter Wenn der zurückgegebene HWND mit dem aktuellen Prozess, entspricht durch Aufrufen von GetWindowText() für das HWND und vergleichen das Ergebnis mit GetConsoleTitle().

Das resultierende HWND ist nicht unbedingt für alle Fenster-Handle Vorgänge geeignet.

Beispielcode

Der folgenden Funktion wird das aktuellen Konsole Anwendung das Fensterhandle (HWND) abgerufen. Wenn die Funktion erfolgreich ist, ist der Rückgabewert das Handle des Konsolenfensters. Wenn die Funktion fehlschlägt, ist der Rückgabewert NULL. Einige Fehlerüberprüfung wird, der Kürze halber weggelassen.
   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);
   }
				

Eigenschaften

Artikel-ID: 124103 - Geändert am: Montag, 11. Juli 2005 - Version: 1.3
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Platform Software Development Kit January 2000 Edition
Keywords: 
kbmt kbhowto kbwndw KB124103 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 124103
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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