Astuce 1: Comment obtenir la poignée de la fenêtre

Astuce 1: Comment obtenir la poignée de la fenêtre


Le concept de l'interface utilisateur dans Windows est construit sur le concept de fenêtres. Dialogues, boutons, panneaux de contrôle, listes - tout cela fenêtres. Par conséquent, afin d'effectuer des actions avec n'importe quel élément de l'interface de votre propre ou l'application de quelqu'un d'autre, vous devez obtenir descripteur fenêtres.



Comment obtenir la poignée de la fenêtre


Vous aurez besoin



  • - Package SDK de plate-forme;
  • - Le compilateur.


Instructions


1


Obtenir descripteur fenêtres, en le créant. Faire des appels à l'API fonctions CreateWindow ou CreateWindowEx, ou appeler les méthodes appropriées, l'emballage (dans les matières obligatoires) classes utilisées par le cadre ou d'une bibliothèque qui encapsulent la fonctionnalité de travailler avec fenêtresou contrôles Les fonctions CreateWindow et CreateWindowEx retournent directement descripteur fenêtres si elle est créée avec succès. Quand ils ont échoué appel valeur de retour est NULL. cause du code d'erreur peut être interrogé à l'aide de l'API-fonctions getLastError. Prototypes et une description détaillée des paramètres de CreateWindow et fonctions CreateWindowEx cliquez sur les liens http://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx et http: // msdn .microsoft.com / fr-fr / bibliothèque / windows / bureau / ms632680% = 28V vs.85% 29.aspx .Si différents cadres utilisent les fenêtres de création d'objets de classe système d'exploitation peut se produire soit explicitement (en appelant) et implicitement (mise en œuvre de la stratégie RAII). Par conséquent, descripteur fenêtres il est préférable de recevoir sur l'objet initialisé prêt. A propos des méthodes de retour des classes descripteur fenêtres, encapsulé par l'objet, vous pouvez trouver dans la documentation du cadre correspondant. Par exemple, dans MFC, une méthode similaire est GetSafeHwnd de classe CWnd.


2


Obtenir descripteur fenêtres par sa recherche. Utilisez l'API FindWindow fonction et FindWindowEx ou des méthodes appropriées, les objets de classe wrapper utilisés retours freymvorka.Funktsiya FindWindow descripteur fenêtres niveau supérieur s'il est trouvé ou NULL en cas d'échec. La recherche est effectuée par nom de classe et par titre fenêtres. Description des paramètres et aspects de la fonctionest le lien http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx .Semantika fonction de travail FindWindow FindWindowEx est similaire à la seule différence qu'elle produit la recherche fenêtres d'enfants. pour la documentation FindWindowEx donnée par lien http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx.


3


Trouver descripteur fenêtres dans le processus de dénombrement de leurs ensembles. Utilisez les fonctions d'API EnumWindows, EnumChildWindows, EnumThreadWindows ou les méthodes des objets de classe de l'infrastructure utilisée: Liste des fonctions EnumWindows et EnumChildWindows fenêtres haut niveau et enfant fenêtres respectivement. EnumThreadWindows énumère tous les non-enfants fenêtres du flux spécifié. Chacune de ces fonctions doit être passé un pointeur vers la procédure de rappel, qui dans le processus de travail sera transféré descripteurs a trouvé des fenêtres en tant que paramètres.En combinant les fonctions d'énumération, en obtenant et en analysant les propriétés des fenêtres dans la procédure de rappel, vous pouvez trouver descripteur le nécessaire fenêtres. La documentation pour les fonctions décrites est donnée dansLiens: - EnumWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: http://msdn.microsoft.com/ fr-fr / bibliothèque / windows / bureau / ms633494% = 28V vs.85% 29.aspx; - EnumThreadWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633495%28v=vs .85% 29.aspx.


4


Obtenir descripteur fenêtres à partir de coordonnées connues. Fonctions WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx descripteurLa fonction windowsFromPoint est la plus facile à utiliser, mais ne retourne pas descripteurFenêtres cachées et désactivées. sur la documentation de l'application est le lien http://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx .Funktsii ChildWindowFromPoint et trouver ChildWindowFromPointEx descripteurs enfants du parent spécifié fenêtres, appartenant à un point donné. Ainsi, le comportement ChildWindowFromPointEx peut être contrôlé de manière flexible à l'aide d'un paramètre supplémentaire. La documentation de ces fonctions est fourni sur les liens: - 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.



Astuce 2: Comment reconnaître la poignée


Descripteur Fenêtre ou Fenêtre de poignée, spécifiqueUn identifiant qui est émis par le système d'exploitation à la fenêtre lors de sa création. Si, pour une raison quelconque, vous avez besoin de connaître le descripteur de système d'une fenêtre (par exemple, lors de l'écriture d'une application), cela peut être fait en utilisant le programme HWND.



Comment reconnaître la poignée


Vous aurez besoin



  • - Programme HWND.


Instructions


1


Localisez cette application via les moteurs de recherchesur Internet et télécharger sur votre ordinateur. Ce programme est une application gratuite développée par le programmeur Pavel Lesnikov. Avant de déballer l'archive du programme, vérifiez les données téléchargées avec un logiciel antivirus. Décompressez l'archive avec le programme. Exécutez l'utilitaire en cliquant deux fois sur le fichier WHD.exe. La fenêtre du programme a une interface simple: des contrôles et un champ pour afficher les descripteurs. Si vous n'avez pas d'archiveur, téléchargez sur Internet un programme appelé Win Rar.


2


Réglez l'interrupteur sur "De lacurseur "et appuyez sur CapsLock sur le clavier. Après cette opération, les identifiants de toutes les fenêtres sur lesquelles passe le curseur de la souris sont automatiquement affichés dans le champ de sortie des descripteurs. Pour désactiver cette procédure, cliquez à nouveau sur CapsLock. Entrez la classe de la fenêtre dont vous voulez connaître le descripteur.


3


Cliquez sur le bouton "OK" et le champ ci-dessous apparaîtra.ID de recherche Pour fermer la fenêtre du programme, cliquez sur la croix dans le coin supérieur droit. Pour contacter le développeur du programme, rendez-vous sur http://vokinsel.dviger.com. Vous pourrez y obtenir des conseils en temps réel, ainsi que découvrir la disponibilité des nouvelles versions du logiciel.


4


Cet utilitaire ne nécessite pas d'installation et trèsfacile à utiliser. Les identifiants de fenêtre obtenus de cette manière peuvent ensuite être utilisés dans d'autres applications pour accéder aux fenêtres de service Windows et aux fenêtres des programmes en cours d'exécution. Si vous ne savez pas comment utiliser ces programmes, lisez l'aide. Généralement, les développeurs décrivent les principes de base du travail avec les programmes.




Astuce 3: Comment obtenir le handle


Interface de programmation d'applicationles systèmes d'exploitation de la famille Windows sont représentés par un ensemble de fonctions. Lorsqu'ils sont appelés, divers objets (fichiers, processus, threads, objets de synchronisation, etc.) peuvent être créés. Pour assurer un accès assez abstrait et unifié à ces objets, leur identification est faite en utilisant des descripteurs - des valeurs numériques «impersonnelles».



Comment obtenir la poignée


Vous aurez besoin



  • - traducteur à partir d'un langage de programmation permettant l'utilisation de l'API Windows;
  • - peut-être le Windows Platform SDK.


Instructions


1


Obtenez les descripteurs de fenêtre. Cela peut être fait de tant de façons. La méthode spécifique dépend de l'objectif final: utilisez l'API CreateWindow ou CreateWindowEx pour créer une fenêtre. Ils renvoient un descripteur en cas de succès et NULL en cas d'échec Effectuent une recherche pour les fenêtres de haut niveau et les fenêtres enfants par différents paramètres à l'aide des fonctions FindWindow et FindWindowEx, respectivement. Si la recherche réussit, le descripteur de fenêtre sera reçu. Énumérer les fenêtres avec les fonctions EnumWindows, EnumChildWindows, EnumThreadWindows. Les descripteurs des fenêtres trouvées seront transmis en tant que paramètre de la fonction de rappel.Trouver le handle de la fenêtre située dans une certaine position sur l'écran. Appelez l'une des fonctions: WindowFromPoint, ChildWindowFromPoint ou ChildWindowFromPointEx.


2


Obtenir des descripteurs de processus. Créer un nouveau processus en appelant la fonction API CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW ou CreateProcessWithLogonW. Ils renvoient tous une poignée à un nouveau processus dans le domaine hProcess structure de type PROCESS_INFORMATION, un pointeur vers qui doit leur être transmis la dernière poignée de processus de parametrom.Naydite de son identifiant bien connu. Utilisez l'appel OpenProcess. ID de tous les processus en cours d'exécution peuvent être obtenus, par exemple, en utilisant les fonctions de CreateToolHelp32Snapshot et Process32First pseudo-descripteur Process32Next Tool Library Help.Izvlekite du processus en cours, en utilisant la fonction GetCurrentProcess.


3


Obtenez les descripteurs de thread. Les fonctions CreateThread et CreateRemoteThread créent respectivement des threads dans leurs propres processus et dans d'autres processus, renvoyant leurs descripteurs. Pour ouvrir un flux existant en utilisant son identifiant, ayant reçu un descripteur correspondant, il est possible au moyen de la fonction OpenThread. Le pseudo-descripteur du flux en cours est renvoyé lorsque GetCurrentThread est appelé.


4


Descripteurs pour fichiers, répertoires, physiquesdisques, volumes, consoles, ressources de communication (ports d'E / S), emplacements de courrier et canaux nommés peuvent être obtenus en appelant une seule fonction - CreateFile.


5


Les descripteurs de fichier pour les objets d'affichage de fichier sont renvoyés lors de l'appel de CreateFileMapping et OpenFileMapping.


6


Les fonctions CreateMutex, CreateSemaphore etCreateEvent est créé et les fonctions OpenMutex, OpenSemaphore et OpenEvent ouvrent les objets de synchronisation existants (mutex, sémaphores et événements). Tous renvoient des descripteurs.


7


Manipulation de tous les objets GDI (tels quecontextes de périphériques, polices, pinceaux, crayons, rasters dépendants du matériel et indépendants, sections DIB, etc.) sont produits au moyen de leurs descripteurs. Les fonctions de création d'objets GDI sont nombreuses et pour obtenir des informations à leur sujet, il est nécessaire de se référer à la section correspondante de MSDN.


8


Un descripteur obtenu dans un processus, commerègle, ne peut pas être utilisé dans un autre. Cependant, dans certains cas, il est possible d'obtenir un descripteur-doublon correspondant à l'objet primaire. Appelez la fonction API DuplicateHandle pour implémenter le descripteur en double. Cela peut être utilisé, par exemple, pour implémenter l'utilisation simultanée d'objets ou de canaux de synchronisation sans nom par plusieurs processus.