Windows operētājsistēmu lietojumprogrammu saskarni attēlo funkciju kopums. Kad tos izsauc, var izveidot dažādus objektus (failus, procesus, pavedienus, sinhronizācijas objektus utt.). Lai nodrošinātu pietiekami abstraktu un vienotu piekļuvi šiem objektiem, to identifikācija tiek veikta, izmantojot deskriptorus - "bezpersoniskas" skaitliskās vērtības.
Nepieciešams
- - tulks no programmēšanas valodas, kas ļauj izmantot Windows API;
- - iespējams, Windows platformas SDK.
Instrukcijas
1. solis
Iegūstiet logu rokturus. To var izdarīt daudzos veidos. Precīza metode ir atkarīga no gala mērķa.
Lai izveidotu logu, izmantojiet API CreateWindow vai CreateWindowEx. Viņi atgriež rokturi par panākumiem un NULL par neveiksmi.
Meklējiet augšējā līmeņa logus un pakārtotos logus pēc dažādiem parametriem, izmantojot attiecīgi funkcijas FindWindow un FindWindowEx. Veiksmīgas meklēšanas gadījumā tiks iegūts loga rokturis.
Uzskaitiet logus, izmantojot funkcijas EnumWindows, EnumChildWindows, EnumThreadWindows. Atrasto logu rokturi tiks nodoti kā parametrs atzvanīšanas funkcijai.
Atrodiet loga rokturi, kas atrodas noteiktā ekrāna vietā. Izsauciet vienu no funkcijām: WindowFromPoint, ChildWindowFromPoint vai ChildWindowFromPointEx.
2. solis
Iegūstiet procesa rokturus. Izveidojiet jaunu procesu, izsaucot API funkcijas CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW vai CreateProcessWithLogonW. Viņi visi atgriež rokturi jaunajam procesam struktūras PROCESS_INFORMATION laukā hProcess, kuram rādītājs viņiem jānodod kā pēdējais parametrs.
Atrodiet procesa rokturi pēc tā zināmā identifikatora. Izmantojiet OpenProcess zvanu. Visu darbojošos procesu ID var iegūt, piemēram, izmantojot rīka palīdzības bibliotēkas funkcijas CreateToolhelp32Snapshot, Process32First un Process32Next.
Iegūstiet pašreizējā procesa pseido rokturi, izmantojot funkciju GetCurrentProcess.
3. solis
Iegūstiet pavedienu aprakstus. Funkcijas CreateThread un CreateRemoteThread izveido pavedienus attiecīgi savā un kāda cita procesā, atgriežot savus rokturus. Varat atvērt esošu pavedienu, izmantojot tā identifikatoru, un iegūt atbilstošo rokturi, izmantojot funkciju OpenThread. Pašreizējās plūsmas pseido-rokturis tiek atgriezts, kad tiek izsaukts GetCurrentThread.
4. solis
Failu, direktoriju, fizisko disku, disku sējumu, konsolu, sakaru resursu (I / O porti), pasta slotu un nosaukto cauruļu aprakstus var iegūt, izsaucot vienu funkciju CreateFile.
5. solis
Faila-atmiņas kartēšanas objektu deskriptori tiek atgriezti, izsaucot uz CreateFileMapping un OpenFileMapping.
6. solis
Funkcijas CreateMutex, CreateSemaphore un CreateEvent izveido, un OpenMutex, OpenSemaphore un OpenEvent funkcijas atver esošos sinhronizācijas objektus (muteksus, semaforus un notikumus). Viņi visi atdod aprakstus.
7. solis
Visi GDI objekti (piemēram, ierīču konteksti, fonti, otas, zīmuļi, no aparatūras atkarīgi un neatkarīgi bitkartes, DIB sadaļas utt.) Tiek apstrādāti, izmantojot to aprakstus. Funkcijas GDI objektu izveidei ir daudz, un informāciju par tām skatiet sadaļā MSDN.
8. solis
Vienā procesā iegūto deskriptoru parasti nevar izmantot citā. Tomēr dažos gadījumos ir iespējams iegūt deskriptora dublikātu, kas atbilst primārajam objektam. Zvaniet uz DuplicateHandle API, lai dublētu rokturi. To var izmantot, piemēram, lai koplietotu nenosauktus sinhronizācijas objektus vai kanālus starp vairākiem procesiem.