Si Të Merrni Një Përshkrues

Përmbajtje:

Si Të Merrni Një Përshkrues
Si Të Merrni Një Përshkrues

Video: Si Të Merrni Një Përshkrues

Video: Si Të Merrni Një Përshkrues
Video: Kthimi i Numrave të Përzier në Thyesa | Numrat e Përzier | Thyesat | Aritmetikë | Matematikë 2024, Nëntor
Anonim

Ndërfaqja e programimit të aplikimit të sistemeve operative Windows përfaqësohet nga një grup funksionesh. Kur ato thirren, mund të krijohen objekte të ndryshme (skedarë, procese, fije, objekte sinkronizimi, etj.). Për të siguruar një hyrje mjaft abstrakte dhe të unifikuar në këto objekte, identifikimi i tyre kryhet duke përdorur përshkruesit - vlera numerike "jopersonale".

Si të merrni një përshkrues
Si të merrni një përshkrues

E nevojshme

  • - një përkthyes nga një gjuhë programimi që lejon përdorimin e Windows API;
  • - ndoshta Windows Platform SDK.

Udhëzimet

Hapi 1

Merrni dorezat e dritares. Ka shumë mënyra për ta bërë këtë. Metoda e saktë varet nga qëllimi përfundimtar.

Përdorni API-të CreateWindow ose CreateWindowEx për të krijuar një dritare. Ata kthejnë një dorezë për suksesin dhe NULL për dështimin.

Kërkoni për dritare të nivelit të lartë dhe dritare për fëmijë nga parametra të ndryshëm duke përdorur përkatësisht funksionet FindWindow dhe FindWindowEx. Me kërkimin e suksesshëm, do të merret doreza e dritares.

Numëroni dritaret me funksionet EnumWindows, EnumChildWindows, EnumThreadWindows. Dorezat e dritareve të gjetura do të kalojnë si një parametër në funksionin e thirrjes.

Gjeni dorezën te dritarja e vendosur në një pozicion specifik në ekran. Thirrni një nga funksionet: WindowFromPoint, ChildWindowFromPoint, ose ChildWindowFromPointEx.

Hapi 2

Merrni dorezat e procesit. Krijoni një proces të ri duke thirrur funksionet API KrijoniProces, KrijoniProcesAsUser, KrijoniProcese MeTokenW, ose KrijoniProcese MeLogonW. Ata të gjithë i kthejnë një dorezë procesit të ri në fushën hProcess të strukturës PROCESS_INFORMATION, treguesi tek i cili duhet t'u kalohet atyre si parametri i fundit.

Gjeni dorezën e procesit nga identifikuesi i tij i njohur. Përdorni thirrjen OpenProcess. ID-të e të gjitha proceseve të ekzekutimit mund të merren, për shembull, duke përdorur funksionet CreateToolhelp32Snapshot, Process32First dhe Process32Next të bibliotekës Ndihma e Veglave.

Merrni pseudo dorezën e procesit aktual duke përdorur funksionin GetCurrentProcess.

Hapi 3

Merrni përshkruesit e fijeve. Funksionet CreateThread dhe CreateRemoteThread krijojnë fije në procesin e tyre dhe të dikujt tjetër, përkatësisht, duke i kthyer dorezat e tyre. Ju mund të hapni një fije ekzistuese duke përdorur identifikuesin e saj dhe të merrni dorezën përkatëse duke përdorur funksionin OpenThread. Pseudo-trajtimi i rrjedhës aktuale rikthehet kur thirret GetCurrentThread.

Hapi 4

Përshkruesit për skedarët, direktoritë, disqet fizike, vëllimet e diskut, konsolat, burimet e komunikimit (portat I / O), vendet e postës dhe tubat e emëruar mund të merren duke thirrur një funksion të vetëm, KrijoniFile.

Hapi 5

Përshkruesit e objektit të skemës në memorje kthehen me thirrje në CreatFileMapping dhe OpenFileMapping.

Hapi 6

Funksionet CreateMutex, CreateSemaphore dhe CreateEvent krijojnë dhe funksionet OpenMutex, OpenSemaphore dhe OpenEvent hapin objektet ekzistuese të sinkronizimit (mutexes, semaforët dhe ngjarjet). Të gjithë kthejnë përshkruesit.

Hapi 7

Të gjithë objektet GDI (të tilla si kontekstet e pajisjeve, gërmat, furçat, lapsat, bitmap-et e varur nga hardueri dhe të pavarur, seksionet DIB, etj.) Manipulohen përmes përshkruesve të tyre. Funksionet për krijimin e objekteve GDI janë të shumta dhe duhet të konsultohen në seksionin MSDN për informacion mbi to.

Hapi 8

Një përshkrues i marrë në një proces, si rregull, nuk mund të përdoret në një tjetër. Sidoqoftë, në disa raste është e mundur të merret një përshkrues dublikatë që i përgjigjet objektit primar. Thirrni DuplicateHandle API për të kopjuar dorezën. Kjo mund të përdoret, për shembull, për të ndarë objekte ose kanale sinkronizimi pa emër midis shumë proceseve.

Recommended: