Comment faire pour obtenir un handle de fenêtre (HWND) de console

Traductions disponibles Traductions disponibles
Numéro d'article: 124103 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Il peut être utile manipuler une fenêtre associée à une application console. L'API Win32 ne fournit aucune méthode directe permettant d'obtenir le handle de fenêtre associé à une application console. Toutefois, vous pouvez obtenir le handle de fenêtre en appelant FindWindow(). Cette fonction extrait un handle de fenêtre basé sur un nom de classe ou un nom de la fenêtre.

Appelez GetConsoleTitle() pour déterminer le titre de console en cours. Puis fournissez le titre de console en cours à FindWindow().

Plus d'informations

Plusieurs fenêtres pouvant avoir le même titre, vous devez modifier le titre de fenêtre de console en cours pour un titre unique. Cela empêchera le handle de fenêtre incorrect d'être renvoyé. Utilisez SetConsoleTitle() pour modifier le titre de fenêtre de console en cours. Voici le processus :
  1. Appelez GetConsoleTitle() pour enregistrer le titre de fenêtre de console en cours.
  2. Appelez SetConsoleTitle() pour modifier le titre de la console pour un titre unique.
  3. Appelez Sleep(40) pour vérifier que le titre de la fenêtre a été mis à jour.
  4. Appel FindWindow (NULL, uniquetitle) pour obtenir le HWND cet appel retourne le HWND--ou la valeur NULL si l'opération a échoué.
  5. Appel SetConsoleTitle() avec la valeur extraite de l'étape 1, pour restaurer le titre de fenêtre d'origine.
Vous devez tester le HWND obtenu. Par exemple, vous pouvez tester pour voir si le HWND retourné correspond avec le processus en cours en appelant GetWindowText() sur HWND et comparaison du résultat avec GetConsoleTitle().

Le HWND obtenu n'est pas garanti pour convenir à toutes les opérations de handle de fenêtre.

Exemple de code

La fonction suivante extrait le handle de fenêtre application console en cours (HWND). Si la fonction réussit, la valeur de retour est le handle de la fenêtre de console. Si la fonction échoue, la valeur de retour est NULL. Certains vérification des erreurs est omise, par souci de concision.
   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);
   }
				

Propriétés

Numéro d'article: 124103 - Dernière mise à jour: lundi 11 juillet 2005 - Version: 1.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Platform Software Development Kit-January 2000 Edition
Mots-clés : 
kbmt kbhowto kbwndw KB124103 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 124103
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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