Kuinka Saada Kuvaaja

Sisällysluettelo:

Kuinka Saada Kuvaaja
Kuinka Saada Kuvaaja

Video: Kuinka Saada Kuvaaja

Video: Kuinka Saada Kuvaaja
Video: funktio ja funktion kuvaaja 2024, Huhtikuu
Anonim

Windows-käyttöjärjestelmien sovellusohjelmointirajapintaa edustaa joukko toimintoja. Kun niitä kutsutaan, voidaan luoda erilaisia objekteja (tiedostot, prosessit, ketjut, synkronointiobjektit jne.). Tarjotakseen riittävän abstraktin ja yhtenäisen pääsyn näihin kohteisiin, niiden tunnistaminen suoritetaan käyttämällä kuvaajia - "persoonattomia" numeerisia arvoja.

Kuinka saada kuvaaja
Kuinka saada kuvaaja

Tarpeellinen

  • - kääntäjä ohjelmointikielestä, joka sallii Windows-sovellusliittymän käytön;
  • - mahdollisesti Windows Platform SDK.

Ohjeet

Vaihe 1

Hanki ikkunankahvat. Tähän on monia tapoja. Tarkka menetelmä riippuu lopputavoitteesta.

Luo ikkuna CreateWindow- tai CreateWindowEx-sovellusliittymien avulla. He palauttavat kahvan menestykseen ja NULL epäonnistumiseen.

Etsi ylätason ikkunoita ja lapsiikkunoita useilla parametreilla käyttämällä vastaavasti FindWindow- ja FindWindowEx-toimintoja. Onnistuneen haun yhteydessä saadaan ikkunan kahva.

Luettele ikkunat EnumWindows-, EnumChildWindows-, EnumThreadWindows-toiminnoilla. Löydettyjen ikkunoiden kahvat välitetään parametrina takaisinsoittotoiminnolle.

Etsi ikkunan kahva, joka sijaitsee tietyssä ruudun kohdassa. Kutsu yksi toiminnoista: WindowFromPoint, ChildWindowFromPoint tai ChildWindowFromPointEx.

Vaihe 2

Hanki prosessikahvat. Luo uusi prosessi kutsumalla CreateProcess-, CreateProcessAsUser-, CreateProcessWithTokenW- tai CreateProcessWithLogonW-sovellusliittymäfunktiot. Ne kaikki palauttavat kahvan uuteen prosessiin PROCESS_INFORMATION-rakenteen hProcess-kentässä, johon osoitin on välitettävä heille viimeisenä parametrina.

Etsi prosessin kahva sen tunnetun tunnuksen perusteella. Käytä OpenProcess-puhelua. Kaikkien käynnissä olevien prosessien tunnukset voidaan hankkia esimerkiksi käyttämällä työkalun ohjekirjaston CreateToolhelp32Snapshot-, Process32First- ja Process32Next-toimintoja.

Hae nykyisen prosessin näennäinen kahva GetCurrentProcess-funktiolla.

Vaihe 3

Hanki ketjujen kuvaimet. CreateThread- ja CreateRemoteThread-toiminnot luovat ketjut omassa prosessissaan ja jonkun toisen prosessissa palauttamalla kahvat. Voit avata olemassa olevan ketjun sen tunnisteella ja hankkia vastaavan kahvan OpenThread-toiminnon avulla. Nykyisen virtauksen pseudokahva palautetaan, kun GetCurrentThread kutsutaan.

Vaihe 4

Tiedostojen, hakemistojen, fyysisten levyjen, levytiedostojen, konsolien, viestintäresurssien (I / O-portit), postiaukkojen ja nimettyjen putkien kuvaimet voidaan saada kutsumalla yksi funktio, CreateFile.

Vaihe 5

Tiedosto muistiin -kartoitusobjektikuvaajat palautetaan kutsuilla CreateFileMapping- ja OpenFileMapping-sovelluksiin.

Vaihe 6

CreateMutex-, CreateSemaphore- ja CreateEvent-toiminnot luovat, ja OpenMutex-, OpenSemaphore- ja OpenEvent-toiminnot avaavat olemassa olevat synkronointiobjektit (muteksit, semaforit ja tapahtumat). Ne kaikki palauttavat kuvaimet.

Vaihe 7

Kaikkia GDI-objekteja (kuten laitekonteksteja, fontteja, harjoja, lyijykyniä, laitteistosta riippuvia ja riippumattomia bittikarttoja, DIB-osioita jne.) Manipuloidaan niiden kuvaajien kautta. GDI-objektien luomiseen liittyviä toimintoja on lukuisia, ja niistä on tietoja MSDN-osiossa.

Vaihe 8

Yhdessä prosessissa saatua kuvainta ei pääsääntöisesti voida käyttää toisessa. Joissakin tapauksissa on kuitenkin mahdollista saada kaksoiskuva, joka vastaa ensisijaista kohdetta. Kutsu DuplicateHandle-sovellusliittymä kopion kopioimiseksi. Tätä voidaan käyttää esimerkiksi nimeämättömien synkronointiobjektien tai kanavien jakamiseen useiden prosessien välillä.

Suositeltava: