Suggerimento 1: come ottenere l'handle della finestra

Suggerimento 1: come ottenere l'handle della finestra


Il concetto di interfaccia utente in Windows è basato sul concetto di finestre. Finestre, pulsanti, pannelli di controllo, elenchi - tutto questo finestre. Pertanto, al fine di eseguire qualsiasi azione con qualsiasi elemento dell'interfaccia della propria applicazione o di qualcun altro, è necessario ottenere descrittore finestre.



Come ottenere la maniglia della finestra


Avrete bisogno



  • - Pacchetto Platform SDK;
  • - Il compilatore.


istruzione


1


ottenere descrittore finestre, creandolo. Effettua chiamate alle funzioni API CreateWindow o CreateWindowEx oppure chiama i metodi wrapper appropriati (sugli oggetti richiesti) delle classi del framework o della libreria utilizzata, incapsulando la funzionalità di lavoro con finestreo controlli. Le funzioni CreateWindow e CreateWindowEx vengono restituite direttamente descrittore finestre se è stato creato con successo. Quando non sono riusciti chiamata valore di ritorno è NULL. causa il codice di errore può essere interrogato utilizzando le API funzioni GetLastError. Prototipi e una descrizione dettagliata dei parametri di CreateWindow e funzioni CreateWindowEx cliccare sui link http://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx e http: // msdn .microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx .Se diversi quadri utilizzare la classe finestre di creazione di oggetto di sistema operativo può avvenire sia in modo esplicito (chiamando) e implicitamente (implementazione della strategia RAII). pertanto descrittore finestre è meglio ricevere sull'oggetto inizializzato pronto. Informazioni sui metodi di restituzione delle classi descrittore finestre, incapsulato dall'oggetto, puoi trovarlo nella documentazione del framework corrispondente. Ad esempio, in MFC, un metodo simile è GetSafeHwnd della classe CWnd.


2


ottenere descrittore finestre cercandolo Utilizzare le funzioni API FindWindow e FindWindowEx oi metodi wrapper corrispondenti degli oggetti classes del framework applicabile. La funzione FindWindow restituisce descrittore finestre livello superiore se è stato trovato o NULL in caso di fallimento. La ricerca viene effettuata per nome della classe e titolo finestre. Descrizione dei parametri e degli aspetti della funzioneè il link http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx .Semantika funzione lavoro FindWindow FindWindowEx è simile con l'unica differenza che produce ricerca finestre figlio. per la documentazione FindWindowEx data dal http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx collegamento.


3


trovare descrittore finestre nel processo di enumerazione dei loro set. Utilizzare le funzioni API EnumWindows, EnumChildWindows, EnumThreadWindows o i metodi degli oggetti classe del framework utilizzato. Elenco delle funzioni EnumWindows e EnumChildWindows finestre di alto livello e bambino finestre rispettivamente. EnumThreadWindows enumera tutti i non-child finestre del flusso specificato. Ciascuna di queste funzioni deve essere passata a un puntatore alla procedura di callback, che nel processo di lavoro verrà trasferita descrittores ha trovato windows come parametri. Combinando le funzioni di enumerazione, ottenendo e analizzando le proprietà di windows nella procedura di callback, è possibile trovare descrittore il richiesto finestre. La documentazione per le funzioni descritte è fornita inlink: - EnumWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: http://msdn.microsoft.com/ it / library / windows / desktop / ms633494% 28v = vs.85% 29.aspx; - EnumThreadWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633495%28v=vs 0,85% 29.aspx.


4


ottenere descrittore finestre da coordinate conosciute. Funzioni WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx return descrittoreLa funzione windowsFromPoint è la più facile da usare, ma non restituisce descrittoreFinestre nascoste e disabilitate. sulla sua documentazione applicazione è il link http://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx .Funktsii ChildWindowFromPoint e trovare ChildWindowFromPointEx descrittores figli del genitore specificato finestre, appartenente a un determinato punto. Così comportamento ChildWindowFromPointEx può essere flessibilmente controllata utilizzando un parametro aggiuntivo. La documentazione per queste funzioni è previsto sui link: - ChildWindowFromPoint: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: http: // msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.



Suggerimento 2: come riconoscere la maniglia


descrittore Finestra, o Finestra maniglia, - specificaUn identificatore che viene rilasciato dal sistema operativo alla finestra durante la sua creazione. Se per qualche motivo hai bisogno di conoscere il descrittore di sistema di una finestra (ad esempio, quando scrivi un'applicazione), ciò può essere fatto usando il programma HWND.



Come riconoscere la maniglia


Avrete bisogno



  • - Programma HWND.


istruzione


1


Trova questa applicazione attraverso i motori di ricercasu Internet e scaricare sul tuo computer. Questo programma è un'applicazione gratuita sviluppata dal programmatore Pavel Lesnikov. Prima di decomprimere l'archivio del programma, controllare i dati scaricati con il software antivirus. Decomprimere l'archivio con il programma. Eseguire l'utilità facendo doppio clic sul file WHD.exe. La finestra del programma ha un'interfaccia semplice: controlli e un campo per la visualizzazione dei descrittori. Se non si possiede un archiviatore, scaricare da Internet un programma chiamato Win Rar.


2


Impostare l'interruttore su "From thecursore "e premere CapsLock sulla tastiera. Dopo questa operazione, gli identificatori di tutte le finestre su cui passa il cursore del mouse vengono automaticamente visualizzati nel campo di output dei descrittori. Per disabilitare questa procedura, fai di nuovo clic su CapsLock. Immettere la classe della finestra di cui si desidera conoscere il descrittore.


3


Fare clic sul pulsante "OK" e verrà visualizzato il campo sottostante.ricerca id. Per chiudere la finestra del programma, fare clic sulla croce nell'angolo in alto a destra. Per contattare lo sviluppatore del programma, visitare http://vokinsel.dviger.com. Sarai in grado di ottenere consigli in tempo reale, oltre a conoscere la disponibilità di nuove versioni del software.


4


Questa utility non richiede installazione e moltofacile da usare Gli identificatori di finestre ottenuti in questo modo possono essere successivamente utilizzati in altre applicazioni per accedere ai servizi Windows e Windows di programmi in esecuzione. Se non sai come usare questi programmi, leggi l'aiuto. In genere, gli sviluppatori descrivono i principi di base del lavoro con i programmi.




Suggerimento 3: come ottenere la maniglia


Interfaccia di programmazione dell'applicazionei sistemi operativi della famiglia Windows sono rappresentati da un insieme di funzioni. Quando vengono chiamati, è possibile creare vari oggetti (file, processi, thread, oggetti di sincronizzazione, ecc.). Per garantire un accesso abbastanza astratto e unificato a questi oggetti, la loro identificazione viene effettuata utilizzando descrittori - valori numerici "impersonali".



Come ottenere la maniglia


Avrete bisogno



  • - traduttore da un linguaggio di programmazione che consente l'utilizzo dell'API di Windows;
  • - Forse l'SDK della piattaforma Windows.


istruzione


1


Ottieni i descrittori della finestra. Questo può essere fatto in tanti modi. Il metodo specifico dipende dall'obiettivo finale: utilizzare l'API CreateWindow o CreateWindowEx per creare una finestra. Restituiscono un descrittore in caso di esito positivo e NULL in caso di errore. Effettua una ricerca delle finestre di livello superiore e delle finestre secondarie mediante vari parametri, rispettivamente utilizzando le funzioni FindWindow e FindWindowEx. Se la ricerca ha esito positivo, verrà ricevuto il descrittore della finestra. Enumera le finestre con le funzioni EnumWindows, EnumChildWindows, EnumThreadWindows. I descrittori delle finestre trovate verranno passati come parametro della funzione di callback.Ricerca l'handle della finestra che si trova in una certa posizione sullo schermo. Chiama una delle funzioni: WindowFromPoint, ChildWindowFromPoint o ChildWindowFromPointEx.


2


Ottieni descrittori di processo. Creare un nuovo processo chiamando l'API-funzione CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW o CreateProcessWithLogonW. Tutti restituiscono un handle a un nuovo processo nella struttura di tipo PROCESS_INFORMATION campo hProcess, un puntatore alla quale deve essere trasmessa al loro ultimo handle di processo parametrom.Naydite al suo identificatore noto. Usa la chiamata OpenProcess. ID di tutti i processi in esecuzione possono essere ottenute, ad esempio, utilizzando le funzioni CreateToolhelp32Snapshot e Process32First Process32Next Libreria utensili Help.Izvlekite pseudo-descrittore del processo corrente, utilizzando la funzione GetCurrentProcess.


3


Ottieni i descrittori di thread. Le funzioni CreateThread e CreateRemoteThread creano thread nel proprio e in altri processi, rispettivamente, restituendo i propri descrittori. Per aprire uno stream esistente usando il suo identificatore, avendo ricevuto un descrittore corrispondente, è possibile tramite la funzione OpenThread. Lo pseudo descrittore del flusso corrente viene restituito quando viene chiamato GetCurrentThread.


4


Descrittori per file, directory, fisicidischi, volumi, console, risorse di comunicazione (porte I / O), mail slot e named pipe possono essere ottenuti chiamando una singola funzione - CreateFile.


5


I descrittori di file per gli oggetti di visualizzazione dei file vengono restituiti quando si chiama CreateFileMapping e OpenFileMapping.


6


Le funzioni CreateMutex, CreateSemaphore eCreateEvent viene creato e le funzioni OpenMutex, OpenSemaphore e OpenEvent aprono oggetti di sincronizzazione esistenti (mutex, semafori ed eventi). Tutti restituiscono descrittori.


7


Manipolazione di tutti gli oggetti GDI (come ad esempioi contesti del dispositivo, i caratteri, i pennelli, le matite, i raster indipendenti e dipendenti dall'hardware, le sezioni DIB, ecc.) sono prodotti mediante i relativi descrittori. Le funzioni per la creazione di oggetti GDI sono numerose e per ottenere informazioni su di esse è necessario fare riferimento alla sezione corrispondente di MSDN.


8


Un descrittore ottenuto in un unico processo, comeregola, non può essere utilizzato in un altro. Tuttavia, in alcuni casi è possibile ottenere un descrittore-duplicato corrispondente all'oggetto primario. Chiamare la funzione API DuplicateHandle per implementare il descrittore duplicato. Questo può essere usato, ad esempio, per implementare l'uso simultaneo di oggetti o canali di sincronizzazione senza nome con diversi processi.