Come ottenere un handle di finestra (HWND) di console

Traduzione articoli Traduzione articoli
Identificativo articolo: 124103 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Può essere utile modificare una finestra associata a un'applicazione console. L'API di Win32 non fornisce alcun metodo diretto per ottenere l'handle di finestra associato a un'applicazione console. Tuttavia, è possibile ottenere l'handle di finestra da FindWindow() chiamante. Questa funzione recupera un handle di finestra basato su una nome di classe o il nome della finestra.

Chiamare GetConsoleTitle() per determinare il titolo della console corrente. Quindi specificare il titolo della console corrente per FindWindow().

Informazioni

Poiché più finestre possono avere lo stesso titolo, è necessario modificare il titolo di finestra di console corrente in un titolo univoco. Questo consente di impedire l'handle di finestra non valido restituito. Utilizzare SetConsoleTitle() per modificare il titolo della finestra console corrente. Di seguito è il processo:
  1. Chiamare GetConsoleTitle() per salvare il titolo della finestra console corrente.
  2. Chiamare SetConsoleTitle() per modificare il titolo della console in un titolo univoco.
  3. È stato aggiornato Sleep(40) chiamata per garantire il titolo della finestra.
  4. Chiamata FindWindow (NULL, uniquetitle) per ottenere l'HWND questa chiamata restituisce l'HWND--o di un NULL se l'operazione non è riuscita.
  5. SetConsoleTitle() chiamata con il valore recuperato dal passaggio 1, per ripristinare il titolo della finestra originale.
È necessario verificare l'HWND risultante. Ad esempio, è possibile verificare se corrisponde l'HWND restituito con il processo corrente chiamando GetWindowText() su HWND e confronto del risultato con GetConsoleTitle().

Non è garantita l'HWND risultante è adatto per tutte le operazioni di handle di finestra.

Codice di esempio

La funzione riportata di seguito recupera l'handle (HWND) della finestra dell'applicazione corrente di console. Se la funzione ha esito positivo, il valore restituito sarà l'handle della finestra della console. Se la funzione non riesce, il valore restituito è NULL. Alcuni controlli di errore viene omesso, per maggiore concisione.
   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);
   }
				

Proprietà

Identificativo articolo: 124103 - Ultima modifica: lunedì 11 luglio 2005 - Revisione: 1.3
Le informazioni in questo articolo si applicano a:
  • Microsoft Platform Software Development Kit-edizione gennaio 2000
Chiavi: 
kbmt kbhowto kbwndw KB124103 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 124103
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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