Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

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

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
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);   }				

Avertissement : cet article a été traduit automatiquement

Propriétés

ID d'article : 124103 - Dernière mise à jour : 07/11/2005 22:34:21 - Révision : 1.3

Microsoft Platform Software Development Kit-January 2000 Edition

  • kbmt kbhowto kbwndw KB124103 KbMtfr
Commentaires
t();