Cómo obtener un identificador de ventana de consola (HWND)

Seleccione idioma Seleccione idioma
Id. de artículo: 124103 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Puede ser útil manipular una ventana asociada a una aplicación de consola. La API de Win32 se proporciona ningún método directo para obtener el identificador de ventana asociado a una aplicación de consola. Sin embargo, puede obtener el identificador de ventana por FindWindow() llamada. Esta función recupera un identificador de ventana según un nombre de clase o el nombre de la ventana.

Llame a GetConsoleTitle() para determinar el título de la consola actual. A continuación, proporcione el título de consola actual a FindWindow().

Más información

Porque varias ventanas pueden tener el mismo título, debe cambiar el título de ventana de consola actual a un título único. Esto ayudará a impedir que se devuelve el identificador de ventana incorrectos. Utilice SetConsoleTitle() para cambiar el título de ventana de consola actual. Aquí es el proceso:
  1. Llame a GetConsoleTitle() para guardar el título de ventana de consola actual.
  2. Llame a SetConsoleTitle() para cambiar el título de la consola a un título único.
  3. Se actualizó Sleep(40) de llamada para garantizar el título de la ventana.
  4. Llamada a FindWindow (NULL, uniquetitle) para obtener el objeto HWND esta llamada devuelve el HWND--o NULL si no se pudo realizar la operación.
  5. Llamada SetConsoleTitle() con el valor se recupera del paso 1, para restaurar el título de ventana original.
Debe probar el HWND resultante. Por ejemplo, puede probar para ver si el objeto HWND devuelto se corresponde con el proceso actual llamando a GetWindowText() en el objeto HWND y comparar el resultado con GetConsoleTitle().

No se garantiza que el objeto HWND resultante sea adecuado para todas las operaciones de identificador de ventana.

Código de ejemplo

La función siguiente recupera el identificador de ventana de aplicación de consola actual (HWND). Si la función tiene éxito, el valor devuelto es el identificador de la ventana de consola. Si la función falla, el valor devuelto es NULL. Algunos comprobación de errores se omite, para mayor brevedad.
   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);
   }
				

Propiedades

Id. de artículo: 124103 - Última revisión: lunes, 11 de julio de 2005 - Versión: 1.3
La información de este artículo se refiere a:
  • Microsoft Platform Software Development Kit-January 2000 Edition
Palabras clave: 
kbmt kbhowto kbwndw KB124103 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 124103

Enviar comentarios

 

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