Konceptet med användargränssnittet i Windows bygger på konceptet med ett fönster. Dialoger, knappar, kontrollpaneler, listor är alla fönster. Därför måste du skaffa ett fönsterhandtag för att kunna utföra någon åtgärd med något element i gränssnittet för din egen eller någon annans applikation.
Nödvändig
- - SDK-paket för plattform;
- - kompilator.
Instruktioner
Steg 1
Ta handtaget till fönstret genom att skapa det. Ringa samtal till funktionerna CreateWindow eller CreateWindowEx API, eller ring lämpliga omslagsmetoder (på de nödvändiga objekten) för klasserna i det använda ramverket eller biblioteket som inkapslar funktionaliteten för att arbeta med windows eller kontroller. Funktionerna CreateWindow och CreateWindowEx returnerar direkt fönsterhandtag vid framgångsrik skapelse. Om de inte lyckas, returnerar de NULL. Felorsakskoden kan begäras med hjälp av GetLastError API-funktionen. Prototyper och detaljerade beskrivningar av parametrarna för funktionerna CreateWindow och CreateWindowEx kan erhållas från länkarna https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx och https:// msdn.microsoft.com / en-us / bibliotek / windows / desktop / ms632680% 28v = vs.85% 29.aspx När du använder klasser av olika ramar kan skapandet av operativsystems fönsterobjekt ske antingen uttryckligen (genom att anropa en metod) eller implicit (implementering av RAII-strategin). Därför är det bättre att få fönsterhandtaget på ett färdigt initialiserat objekt. Du kan lära dig om metoderna för klasserna som returnerar fönsterhandtaget inkapslat av objektet i dokumentationen för motsvarande ramverk. Till exempel i MFC är en liknande metod GetSafeHwnd av CWnd-klassen.
Steg 2
Ta hand om ett fönster genom att söka efter det. Använd funktionerna FindWindow och FindWindowEx API eller lämpliga klassobjektomslag för det ramverk du använder. FindWindow returnerar ett handtag till toppnivåfönstret om det hittas, eller NULL vid misslyckande. Sökningen utförs efter klassnamn och fönstertitel. Beskrivning av parametrarna och aspekterna av funktionen finns på länken https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. Semantiken i FindWindowEx-funktionen liknar FindWindow med bara skillnaden att den söker efter underordnade fönster. Dokumentationen för FindWindowEx finns på
Steg 3
Hitta handtaget till fönstret medan du listar deras uppsättningar. Använd API-funktionerna EnumWindows, EnumChildWindows, EnumThreadWindows eller metoder för klassobjekt i det ramverk du använder. EnumWindows- och EnumChildWindows-funktionerna räknar upp fönster på högsta nivå respektive underfönster. EnumThreadWindows-funktionen räknar upp alla fönster som inte är underordnade i den angivna tråden. Var och en av dessa funktioner måste skickas en pekare till en återuppringningsprocedur, som skickas handtagen på de hittade fönstren som parametrar under drift. Genom att kombinera uppräkningsfunktioner, få och analysera fönsteregenskaper i återuppringningsproceduren kan du hitta önskat fönster. Dokumentationen för de beskrivna funktionerna ges på länkarna: - 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.
Steg 4
Ta hand om ett fönster vid kända koordinater. Funktionerna WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx returnerar handtag till de fönster som den angivna punkten tillhör. WindowFromPoint-funktionen är den enklaste att använda, men returnerar inte handtag för dolda eller inaktiverade fönster. Du kan hitta dokumentation om dess användning på https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. Funktionerna ChildWindowFromPoint och ChildWindowFromPointEx hittar handtag för barnet fönster i ett visst överordnat fönster som tillhör en given punkt. I det här fallet kan beteendet hos ChildWindowFromPointEx kontrolleras flexibelt med en ytterligare parameter. Dokumentationen för dessa funktioner tillhandahålls av länkarna: - 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.