Il concetto di interfaccia utente in Windows si basa sul concetto di finestra. Dialoghi, pulsanti, pannelli di controllo, elenchi sono tutte finestre. Pertanto, per eseguire qualsiasi azione con qualsiasi elemento dell'interfaccia dell'applicazione propria o di qualcun altro, è necessario ottenere un handle di finestra.
Necessario
- - Pacchetto Platform SDK;
- - compilatore.
Istruzioni
Passo 1
Ottieni la maniglia della finestra creandola. Effettua chiamate alle funzioni API CreateWindow o CreateWindowEx, oppure chiama i metodi wrapper appropriati (sugli oggetti necessari) delle classi del framework o della libreria utilizzati che incapsulano la funzionalità di lavorare con finestre o controlli. Le funzioni CreateWindow e CreateWindowEx restituiscono direttamente il handle della finestra in caso di creazione riuscita. Se chiamati senza successo, restituiscono NULL. Il codice del motivo dell'errore può essere richiesto utilizzando la funzione API GetLastError. Prototipi e descrizioni dettagliate dei parametri delle funzioni CreateWindow e CreateWindowEx possono essere ottenuti dai link https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx e https://msdn.microsoft.com/en-us/libreria/windows/desktop/ms632680% 28v = vs.85% 29.aspx Quando si utilizzano classi di framework diversi, la creazione di oggetti finestra del sistema operativo può avvenire sia esplicitamente (chiamando un metodo) o implicitamente (implementazione della strategia RAII). Pertanto, è meglio ottenere l'handle della finestra su un oggetto inizializzato già pronto. Puoi conoscere i metodi delle classi che restituiscono l'handle della finestra incapsulato dall'oggetto nella documentazione del framework corrispondente. Ad esempio, in MFC, un metodo simile è GetSafeHwnd della classe CWnd.
Passo 2
Ottieni una maniglia per una finestra cercandola. Utilizzare le funzioni API FindWindow e FindWindowEx o i wrapper di oggetti di classe appropriati per il framework che si sta utilizzando FindWindow restituisce un handle alla finestra di primo livello se trovato, o NULL in caso di errore. La ricerca viene eseguita per nome della classe e titolo della finestra. La descrizione dei parametri e degli aspetti della funzione è reperibile al link https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. la funzione FindWindowEx è simile a FindWindow con l'unica differenza che cerca le finestre figlio. La documentazione per FindWindowEx è disponibile all'indirizzo
Passaggio 3
Trova la maniglia della finestra mentre elenchi i loro set. Utilizzare le funzioni API EnumWindows, EnumChildWindows, EnumThreadWindows oi metodi degli oggetti classe del framework in uso. Le funzioni EnumWindows ed EnumChildWindows enumerano rispettivamente le finestre di primo livello e le finestre figlio. La funzione EnumThreadWindows enumera tutte le finestre non figlio del thread specificato. A ciascuna di queste funzioni deve essere passato un puntatore a una procedura di callback, a cui verranno passati gli handle delle finestre trovate come parametri durante l'operazione Combinando le funzioni di enumerazione, ottenendo e analizzando le proprietà della finestra nella procedura di callback, è possibile trovare l'handle di la finestra richiesta. La documentazione per le funzioni descritte è disponibile ai link: - EnumWindows: https://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms633494%28v=vs.85%29.aspx; - EnumThreadWindows: https://msdn.microsoft.com/en-us/library /windows/desktop /ms633495%28v=vs.85%29.aspx.
Passaggio 4
Ottieni una maniglia per una finestra a coordinate note. Le funzioni WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx restituiscono handle alle finestre a cui appartiene il punto specificato La funzione WindowFromPoint è la più semplice da usare, ma non restituisce handle per le finestre nascoste o disabilitate. È possibile trovare la documentazione sul suo utilizzo all'indirizzo https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx Le funzioni ChildWindowFromPoint e ChildWindowFromPointEx trovano gli handle per il bambino finestre di una data finestra padre appartenente a un dato punto. In questo caso, il comportamento di ChildWindowFromPointEx può essere controllato in modo flessibile utilizzando un parametro aggiuntivo. La documentazione per queste funzioni è fornita dai link: - ChildWindowFromPoint: https://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.