Paano Makakuha Ng Isang Tagapaglarawan

Talaan ng mga Nilalaman:

Paano Makakuha Ng Isang Tagapaglarawan
Paano Makakuha Ng Isang Tagapaglarawan

Video: Paano Makakuha Ng Isang Tagapaglarawan

Video: Paano Makakuha Ng Isang Tagapaglarawan
Video: 3K DIAMONDS SUPER EASY AND FAST TO GET DIAMONDS USING PLAY STORE! • Mobile Legends 2020 2024, Mayo
Anonim

Ang interface ng application ng aplikasyon ng mga operating system ng Windows ay kinakatawan ng isang hanay ng mga pagpapaandar. Kapag tinawag ang mga ito, ang iba't ibang mga bagay (mga file, proseso, thread, pagsasabay ng mga bagay, atbp.) Maaaring malikha. Upang makapagbigay ng sapat na abstract at pinag-isang pag-access sa mga bagay na ito, ang kanilang pagkakakilanlan ay ginaganap gamit ang mga tagapaglaraw - "impersonal" na mga numerong halaga.

Paano makakuha ng isang tagapaglarawan
Paano makakuha ng isang tagapaglarawan

Kailangan

  • - isang tagasalin mula sa isang wika ng programa na nagpapahintulot sa paggamit ng Windows API;
  • - posibleng Windows Platform SDK.

Panuto

Hakbang 1

Kumuha ng mga hawakan ng window. Maraming paraan upang magawa ito. Ang eksaktong pamamaraan ay nakasalalay sa layunin ng pagtatapos.

Gamitin ang CreateWindow o CreateWindowEx API upang lumikha ng isang window. Ibinabalik nila ang hawakan sa tagumpay at Null sa kabiguan.

Maghanap ng mga nangungunang antas ng bintana at bintana ng bata sa pamamagitan ng iba't ibang mga parameter gamit ang mga pag-andar ng FindWindow at FindWindowEx, ayon sa pagkakabanggit. Sa matagumpay na paghahanap, makukuha ang hawakan ng window.

I-enumerate ang mga bintana na may mga function na EnumWindows, EnumChildWindows, EnumThreadWindows. Ang mga humahawak ng mga nahanap na bintana ay ipapasa bilang isang parameter sa pagpapaandar ng callback.

Hanapin ang hawakan sa window na matatagpuan sa isang tukoy na posisyon sa screen. Tumawag sa isa sa mga pagpapaandar: WindowFromPoint, ChildWindowFromPoint, o ChildWindowFromPointEx.

Hakbang 2

Kumuha ng mga hawakan ng proseso. Lumikha ng isang bagong proseso sa pamamagitan ng pagtawag sa mga pag-andar ng CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW, o CreateProcessWithLogonW API. Lahat sila ay nagbabalik ng hawakan sa bagong proseso sa hProcess na patlang ng istraktura ng PROCESS_INFORMATION, ang pointer na dapat ipasa sa kanila bilang huling parameter.

Hanapin ang hawakan sa proseso ng kilalang pagkakakilanlan nito. Gamitin ang tawag sa OpenProcess. Ang mga ID ng lahat ng tumatakbo na proseso ay maaaring makuha, halimbawa, gamit ang mga pag-andar ng CreateToolhelp32Snapshot, Process32First, at Process32Next ng library ng Tulong ng Tool.

Kunin ang pseudo hawakan ng kasalukuyang proseso gamit ang GetCurrentProcess function.

Hakbang 3

Kumuha ng mga tagapaglaraw ng mga thread. Ang mga pag-andar ng CreateThread at CreateRemoteThread ay lumilikha ng mga thread sa kanilang sarili at proseso ng iba, ayon sa pagkakabanggit, na ibinabalik ang kanilang mga hawakan. Maaari mong buksan ang isang mayroon nang thread gamit ang identifier nito at makuha ang kaukulang hawakan gamit ang pagpapaandar ng OpenThread. Ang pseudo-hawakan ng kasalukuyang daloy ay ibinalik kapag tinawag ang GetCurrentThread.

Hakbang 4

Ang mga deskriptor para sa mga file, direktoryo, pisikal na disk, dami ng disk, console, mapagkukunan ng komunikasyon (I / O port), mga puwang ng mail, at pinangalanang mga tubo ay maaaring makuha sa pamamagitan ng pagtawag sa isang solong pag-andar, CreateFile.

Hakbang 5

Ang mga deskripsyon ng object-to-memory mapping object ay naibabalik ng mga tawag sa CreateFileMapping at OpenFileMapping.

Hakbang 6

Lumilikha ang mga pag-andar ng CreateMutex, CreateSemaphore, at CreateEvent, at ang OpenMutex, OpenSemaphore, at OpenEvent na mga function na magbubukas ng mga umiiral na mga object sa pagsabay (mutexes, semaphores, at mga kaganapan). Lahat sila ay nagbabalik ng mga naglalarawan.

Hakbang 7

Lahat ng mga bagay na GDI (tulad ng mga konteksto ng aparato, mga font, brushes, lapis, nakasalalay sa hardware at independiyenteng mga bitmap, mga seksyon ng DIB, atbp.) Ay minamanipula sa pamamagitan ng kanilang mga tagapaglaraw. Ang mga pagpapaandar para sa paglikha ng mga bagay na GDI ay marami at dapat na kumunsulta sa seksyon ng MSDN para sa impormasyon sa kanila.

Hakbang 8

Ang isang tagapaglaraw na nakuha sa isang proseso, bilang isang panuntunan, ay hindi maaaring gamitin sa iba pa. Gayunpaman, sa ilang mga kaso posible na makakuha ng isang duplicate na tagapaglarawan na naaayon sa pangunahing bagay. Tumawag sa DuplicateHandle API upang madoble ang hawakan. Maaari itong magamit, halimbawa, upang ibahagi ang hindi pinangalanan na mga bagay sa pag-synchronize o mga channel sa pagitan ng maraming proseso.

Inirerekumendang: