Das Konzept der Benutzeroberfläche in Windows basiert auf dem Konzept eines Fensters. Dialoge, Schaltflächen, Bedienfelder, Listen sind alle Fenster. Um eine Aktion mit einem beliebigen Element der Benutzeroberfläche Ihrer eigenen Anwendung oder der Anwendung einer anderen Person auszuführen, müssen Sie daher ein Fenster-Handle erhalten.
Notwendig
- - Plattform-SDK-Paket;
- - Compiler.
Anweisungen
Schritt 1
Holen Sie sich das Handle zum Fenster, indem Sie es erstellen. Rufen Sie die API-Funktionen CreateWindow oder CreateWindowEx auf oder rufen Sie die entsprechenden Wrapper-Methoden (für die erforderlichen Objekte) der Klassen des verwendeten Frameworks oder der Bibliothek auf, die die Funktionalität der Arbeit mit Fenstern oder Steuerelementen kapseln Fenstergriff bei erfolgreicher Erstellung. Bei erfolglosem Aufruf geben sie NULL zurück. Der Fehlerursachencode kann mit der API-Funktion GetLastError angefordert werden. Prototypen und detaillierte Beschreibungen der Parameter der Funktionen CreateWindow und CreateWindowEx finden Sie unter den Links https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx und https:// msdn.microsoft.com/en-us/library/windows/desktop/ms632680% 28v = vs.85% 29.aspx Bei der Verwendung von Klassen verschiedener Frameworks kann die Erstellung von Betriebssystemfensterobjekten entweder explizit erfolgen (durch Aufruf einer Methode) oder implizit (Implementierung der RAII-Strategie). Daher ist es besser, das Fensterhandle für ein vorgefertigtes initialisiertes Objekt zu erhalten. Die Methoden der Klassen, die das vom Objekt gekapselte Window-Handle zurückgeben, erfahren Sie in der Dokumentation des entsprechenden Frameworks. Eine ähnliche Methode ist beispielsweise in MFC GetSafeHwnd der CWnd-Klasse.
Schritt 2
Holen Sie sich ein Handle zu einem Fenster, indem Sie danach suchen. Verwenden Sie die API-Funktionen FindWindow und FindWindowEx oder die entsprechenden Klassenobjekt-Wrapper für das verwendete Framework FindWindow gibt ein Handle an das Fenster der obersten Ebene zurück, wenn es gefunden wird, oder NULL bei einem Fehler. Die Suche erfolgt nach Klassenname und Fenstertitel. Eine Beschreibung der Parameter und Aspekte der Funktion finden Sie unter dem Link https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx die FindWindowEx-Funktion ähnelt FindWindow mit dem einzigen Unterschied, dass sie nach untergeordneten Fenstern sucht. Die Dokumentation für FindWindowEx ist unter https://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx verfügbar.
Schritt 3
Finden Sie den Griff zum Fenster, während Sie ihre Sets auflisten. Verwenden Sie die API-Funktionen EnumWindows, EnumChildWindows, EnumThreadWindows oder Methoden von Klassenobjekten des verwendeten Frameworks. Die Funktionen EnumWindows und EnumChildWindows zählen Fenster der obersten Ebene bzw. untergeordnete Fenster auf. Die EnumThreadWindows-Funktion zählt alle nicht untergeordneten Fenster des angegebenen Threads auf. Jeder dieser Funktionen muss ein Zeiger auf eine Callback-Prozedur übergeben werden, der während des Betriebs die Handles der gefundenen Fenster als Parameter übergeben. Durch Kombinieren von Aufzählungsfunktionen, Abrufen und Analysieren von Fenstereigenschaften in der Callback-Prozedur können Sie das Handle von das gewünschte Fenster. Die Dokumentation zu den beschriebenen Funktionen finden Sie unter den Links: - 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.
Schritt 4
Holen Sie sich ein Handle für ein Fenster an bekannten Koordinaten. Die Funktionen WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx geben Handles für die Fenster zurück, zu denen der angegebene Punkt gehört Die WindowFromPoint-Funktion ist am einfachsten zu verwenden, gibt jedoch keine Handles für ausgeblendete oder deaktivierte Fenster zurück. Eine Dokumentation zur Verwendung finden Sie unter https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx Die Funktionen ChildWindowFromPoint und ChildWindowFromPointEx finden Handles für das Kind Fenster eines gegebenen Elternfensters, die zu einem gegebenen Punkt gehören. In diesem Fall kann das Verhalten von ChildWindowFromPointEx über einen zusätzlichen Parameter flexibel gesteuert werden. Die Dokumentation zu diesen Funktionen wird über die Links bereitgestellt: - 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.