Programmeringsgrensesnittet for Windows-operativsystemer er representert med et sett med funksjoner. Når de kalles, kan forskjellige objekter (filer, prosesser, tråder, synkroniseringsobjekter, etc.) opprettes. For å gi tilstrekkelig abstrakt og enhetlig tilgang til disse objektene, blir identifikasjonen utført ved hjelp av beskrivelser - "upersonlige" numeriske verdier.
Nødvendig
- - en oversetter fra et programmeringsspråk som tillater bruk av Windows API;
- - muligens Windows Platform SDK.
Bruksanvisning
Trinn 1
Få vindushåndtak. Det er mange måter å gjøre dette på. Den nøyaktige metoden avhenger av sluttmålet.
Bruk CreateWindow eller CreateWindowEx APIer for å opprette et vindu. De gir et grep om suksess og NULL for fiasko.
Søk etter toppvinduer og underordnede vinduer etter forskjellige parametere ved hjelp av henholdsvis FindWindow og FindWindowEx-funksjonene. Ved vellykket søk vil vindushåndtaket fås.
Oppregne vinduer med EnumWindows, EnumChildWindows, EnumThreadWindows-funksjoner. Håndtakene til de funnet vinduene vil bli sendt som en parameter til tilbakeringingsfunksjonen.
Finn håndtaket til vinduet som ligger på en bestemt plassering på skjermen. Ring en av funksjonene: WindowFromPoint, ChildWindowFromPoint eller ChildWindowFromPointEx.
Steg 2
Få prosesshåndtak. Opprett en ny prosess ved å ringe funksjonene CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW eller CreateProcessWithLogonW API. De returnerer alle et håndtak til den nye prosessen i hProcess-feltet i PROCESS_INFORMATION-strukturen, der pekeren skal sendes til dem som den siste parameteren.
Finn håndtaket til prosessen ved hjelp av den kjente identifikatoren. Bruk OpenProcess-samtalen. IDene til alle kjørende prosesser kan fås, for eksempel ved hjelp av funksjonene CreateToolhelp32Snapshot, Process32First og Process32Next i Tool Help-biblioteket.
Hent pseudohåndtaket til den nåværende prosessen ved hjelp av GetCurrentProcess-funksjonen.
Trinn 3
Få beskrivelser av tråder. Funksjonene CreateThread og CreateRemoteThread oppretter tråder i henholdsvis sin egen og andres prosess, og returnerer håndtakene. Du kan åpne en eksisterende tråd ved hjelp av dens identifikator og få det tilsvarende håndtaket ved hjelp av OpenThread-funksjonen. Pseudohåndtaket til den aktuelle strømmen returneres når GetCurrentThread kalles.
Trinn 4
Beskrivelser for filer, kataloger, fysiske disker, diskvolumer, konsoller, kommunikasjonsressurser (I / O-porter), e-postautomater og navngitte rør kan fås ved å ringe til en enkelt funksjon, CreateFile.
Trinn 5
Objektbeskrivere for fil-til-minne-kartlegging returneres ved anrop til CreateFileMapping og OpenFileMapping.
Trinn 6
Funksjonene CreateMutex, CreateSemaphore og CreateEvent oppretter, og funksjonene OpenMutex, OpenSemaphore og OpenEvent åpner eksisterende synkroniseringsobjekter (mutexes, semafores og hendelser). De returnerer alle beskrivelser.
Trinn 7
Alle GDI-objekter (for eksempel enhetskontekster, skrifter, børster, blyanter, maskinvareavhengige og uavhengige bitmapper, DIB-seksjoner osv.) Manipuleres gjennom beskrivelsene. Funksjonene for å lage GDI-objekter er mange og bør konsulteres i MSDN-delen for informasjon om dem.
Trinn 8
En deskriptor som er oppnådd i en prosess, kan som regel ikke brukes i en annen. Imidlertid er det i noen tilfeller mulig å skaffe en duplikatbeskrivelse som tilsvarer det primære objektet. Ring DuplicateHandle API for å duplisere håndtaket. Dette kan for eksempel brukes til å dele navngitte synkroniseringsobjekter eller kanaler mellom flere prosesser.