Tips 1: Hvordan få tak i vinduhåndtaket

Tips 1: Hvordan få tak i vinduhåndtaket


Konseptet med brukergrensesnitt i Windows er bygget på konseptet av vinduer. Dialogger, knapper, kontrollpaneler, lister - alt dette vinduer. Derfor, for å kunne utføre handlinger med noe element i grensesnittet til din egen eller andres søknad, må du få descriptor vinduer.



Hvordan få vinduet håndtaket


Du trenger



  • - Platform SDK pakke;
  • - Kompilatoren.


instruksjon


1


descriptor vinduer, skape den. Ringe til API-funksjoner Create eller CreateWindowEx, eller ring Egnede metoder, wrapper (i de obligatoriske fagene) klasser som brukes av rammeverket eller biblioteket som innkapsler funksjonaliteten til å jobbe med vinduereller kontroller. Funksjonene CreateWindow og CreateWindowEx returnerer direkte descriptor vinduer hvis det er opprettet. Hvis samtalen mislykkes, returnerer de en NULL-verdi. Feilsøkningskoden kan forespørres ved hjelp av GetLastError API. Prototyper og en detaljert beskrivelse av parametrene av Create og CreateWindowEx funksjoner klikk på linkene http://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx og http: // MSDN .microsoft.com / no / bibliotek / vinduer / desktop / ms632680% 28V = vs.85% 29.aspx .Hvis ulike rammer bruke klasse objekt oppretting windows operativsystem kan oppstå enten eksplisitt (ved å ringe) og implisitt (implementering av RAII-strategien). derfor descriptor vinduer Det er bedre å motta det ferdige initialiserte objektet. Om metoder for klasser som returnerer descriptor vinduer, innkapslet av objektet, kan du finne ut i dokumentasjonen til det tilsvarende rammeverket. For eksempel, i MFC, er en lignende metode GetSafeHwnd av klasse CWnd.


2


descriptor vinduer ved å søke det. Bruk FindWindow og FindWindowEx API-funksjonene eller de tilsvarende innpakningsmetodene til klassen objekter av gjeldende rammeverk. FindWindow-funksjonen returnerer descriptor vinduer toppnivå hvis det er funnet eller null på feil. Søket er laget etter klassenavn og tittel vinduer. Beskrivelse av parametrene og aspektene av funksjonener linken http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx .Semantika arbeid funksjon FindWindow FindWindowEx er lik med den eneste forskjellen at den produserer søk barnevinduer. for FindWindowEx dokumentasjon gitt av http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx link.


3


finne descriptor vinduer i prosessen med oppregning av deres sett. Bruke API-funksjoner EnumWindows, EnumChildWindows, EnumThreadWindows metoder eller klasser av gjenstander som brukes freymvorka.Funktsii EnumWindows liste og EnumChildWindows vinduer toppnivå og barn vinduer henholdsvis. EnumThreadWindows opplister alle ikke-barn vinduer av den angitte strømmen. Hver av disse funksjonene må sendes en peker til tilbakekallingsprosedyren, som i ferd med å bli overført descriptors finner vinduer som parametere. Ved å kombinere opptellingsfunksjonene, ved å skaffe og analysere egenskapene til Windows i tilbakekallingsprosedyren, kan du finne descriptor den nødvendige vinduer. Dokumentasjonen for de beskrevne funksjonene er gitt ilenker: - EnumWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx, - EnumChildWindows: http://msdn.microsoft.com/ no / bibliotek / vinduer / desktop / ms633494% 28V = vs.85% 29.aspx, - EnumThreadWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633495%28v=vs .85% 29.aspx.


4


descriptor vinduer fra kjente koordinater. Funksjoner WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx retur descriptorWindowsFromPoint-funksjonen er den mest enkle å bruke, men kommer ikke tilbake descriptorSkjulte og deaktiverte vinduer. på sin søknad dokumentasjon er linken http://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx .Funktsii ChildWindowFromPoint og finne ChildWindowFromPointEx descriptors barn av den angitte foreldre vinduer, som tilhører et gitt punkt. Således ChildWindowFromPointEx oppførsel fleksibelt kan kontrolleres ved hjelp av en ytterligere parameter. Dokumentasjon for disse funksjonene er gitt på linkene: - 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.



Tips 2: Hvordan gjenkjenne håndtaket


descriptor Vindu, eller håndteringsvindu, - spesifikkEn identifikator som utstedes av operativsystemet til vinduet under opprettelsen. Hvis du av en eller annen grunn trenger å vite systembeskrivelsen til et vindu (for eksempel når du skriver et program), kan dette gjøres ved hjelp av HWND-programmet.



Hvordan gjenkjenne håndtaket


Du trenger



  • - HWND-programmet.


instruksjon


1


Finn dette programmet gjennom søkemotorerpå Internett og last ned til datamaskinen din. Dette programmet er et gratis program utviklet av programmøren Pavel Lesnikov. Før du pakker ut programarkivet, må du kontrollere de nedlastede dataene med antivirusprogramvare. Unzip arkivet med programmet. Kjør verktøyet ved å klikke to ganger på WHD.exe-filen. Programvinduet har et enkelt grensesnitt: kontroller og et felt for visning av beskrivere. Hvis du ikke har en arkiver, last ned fra Internett et program kalt Win Rar.


2


Sett bryteren på "Fra"markør "og trykk CapsLock på tastaturet. Etter denne operasjonen vises identifikatorene til alle vinduene som musepekeren overgår automatisk i utskriftsfeltene til beskrivelsene. For å deaktivere denne prosedyren, klikk på CapsLock igjen. Skriv inn klassen av vinduet hvis beskrivende du vil vite.


3


Klikk på "OK" knappen og feltet under vises.søke id. For å lukke programvinduet, klikk på krysset øverst til høyre. For å kontakte programutvikleren, gå til http://vokinsel.dviger.com. Du vil kunne få råd der i sanntid, samt lære om tilgjengeligheten av nye versjoner av programvaren.


4


Dette verktøyet krever ikke installasjon og veldigenkel å bruke. Vinduets identifikatorer som er oppnådd på denne måten, kan senere brukes i andre applikasjoner for å få tilgang til Windows-tjenestevinduer og Windows for å kjøre programmer. Hvis du ikke vet hvordan du bruker disse programmene, kan du lese hjelpen. Vanligvis beskriver utviklere de grunnleggende prinsippene for å jobbe med programmer.




Tips 3: Hvordan få tak i håndtaket


Programmeringsgrensesnittoperativsystemer i Windows-familien er representert av et sett med funksjoner. Når de blir kalt, kan forskjellige objekter (filer, prosesser, tråder, synkroniseringsobjekter, etc.) opprettes. For å sikre en ganske abstrakt og enhetlig tilgang til disse objektene, blir identifikasjonen deres gjort ved hjelp av beskrivere - "upersonlige" numeriske verdier.



Hvordan få tak i håndtaket


Du trenger



  • - Oversetter fra et programmeringsspråk som tillater bruk av Windows API;
  • - kanskje Windows Platform SDK.


instruksjon


1


Få vindusbeskrivelsene.Dette kan gjøres på så mange måter. Den spesifikke metoden avhenger av det endelige målet. Bruk CreateWindow eller CreateWindowEx API for å lage et vindu. De returnerer en deskriptor hvis det lykkes og NULL i tilfelle feil. Lag et søk etter vinduene og barnevinduene på toppnivå ved hjelp av ulike parametere ved hjelp av FindWindow og FindWindowEx-funksjonene. Hvis søket lykkes, vil vindusbeskrivelsen bli mottatt. Oppsummer vinduene med funksjonene EnumWindows, EnumChildWindows, EnumThreadWindows. Beskrivelsene av de funnet vinduene vil bli sendt som en parameter for tilbakeringingsfunksjonen. Finn håndtaket til vinduet som ligger i en bestemt posisjon på skjermen. Ring en av funksjonene: WindowFromPoint, ChildWindowFromPoint eller ChildWindowFromPointEx.


2


Hent prosessbeskrivelser.Opprett en ny prosess ved å ringe API-funksjonen CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW eller CreateProcessWithLogonW. De alle returnerer en referanse til en ny prosess i felten hProcess PROCESS_INFORMATION typen struktur, hvortil er en peker som skal overføres til dem siste parametrom.Naydite prosess håndtaket på velkjente identifikator. Bruk OpenProcess-anropet. IDer for alle prosesser kan oppnås, for eksempel ved bruk av CreateToolhelp32Snapshot funksjoner, og Process32First Process32Next bibliotek Tool Help.Izvlekite pseudo-deskriptor for den aktuelle prosessen, ved bruk av funksjonen GetCurrentProcess.


3


Få trådbeskrivelsene.Funksjonene CreateThread og CreateRemoteThread lager tråder i henholdsvis egne og andre prosesser, og returnerer sine beskrivere. For å åpne en eksisterende strøm ved hjelp av sin identifikator, etter å ha mottatt en tilsvarende deskriptor, er det mulig ved hjelp av funksjonen OpenThread. Pseudo-deskriptoren for strømmen returneres når GetCurrentThread kalles.


4


Beskrivelser for filer, kataloger, fysiskdisker, volumer, konsoller, kommunikasjonsressurser (I / O-porter), postspor og navngitte rør kan fås ved å ringe en enkelt funksjon - CreateFile.


5


Filbeskrivelser for fildisplayobjekter blir returnert når du ringer CreateFileMapping og OpenFileMapping.


6


Funksjonene CreateMutex, CreateSemaphore ogCreateEvent er opprettet, og OpenMutex, OpenSemaphore og OpenEvent-funksjonene åpner eksisterende synkroniseringsobjekter (mutexes, semaforer og hendelser). Alle av dem returnerer beskrivere.


7


Manipulering av alle GDI objekter (for eksempelenhetskontekster, fonter, pensler, blyanter, maskinvareavhengige og uavhengige raster, DIB-seksjoner, etc.) produseres ved hjelp av sine beskrivere. Funksjonene for å lage GDI-objekter er mange, og for å få informasjon om dem er det nødvendig å referere til den tilsvarende delen av MSDN.


8


En deskriptor oppnådd i en prosess, somregelen, kan ikke brukes i en annen. Imidlertid er det i enkelte tilfeller mulig å oppnå et beskrivelses-duplikat som svarer til det primære objektet. Ring til DuplicateHandle API-funksjonen for å implementere duplikatbeskrivelsen. Dette kan for eksempel brukes til å implementere samtidig bruk av ikke navngitte synkroniseringsobjekter eller -kanaler ved flere prosesser.