A Windows operációs rendszerek alkalmazásprogramozási felületét funkciók sora képviseli. Híváskor különféle objektumok (fájlok, folyamatok, szálak, szinkronizálási objektumok stb.) Hozhatók létre. Ahhoz, hogy kellően elvont és egységes hozzáférést biztosítsunk ezekhez az objektumokhoz, azonosításukat leíró - "személytelen" numerikus értékek segítségével végezzük.
Szükséges
- - fordító olyan programozási nyelvből, amely lehetővé teszi a Windows API használatát;
- - esetleg Windows Platform SDK.
Utasítás
1. lépés
Szerezzen be ablakfogantyúkat. Ennek számos módja van. A pontos módszer a végcéltól függ.
Ablak létrehozásához használja a CreateWindow vagy a CreateWindowEx API-kat. Visszatérnek a sikerre és NULL a kudarcra.
A legfelső szintű ablakokat és a gyermekablakokat különféle paraméterek alapján keresse a FindWindow és a FindWindowEx függvényekkel. Sikeres keresés esetén megkapja az ablak fogantyúját.
Számolja fel az ablakokat az EnumWindows, EnumChildWindows, EnumThreadWindows funkciókkal. A megtalált ablakok fogantyúi paraméterként kerülnek átadásra a visszahívás funkcióhoz.
Keresse meg az ablak fogantyúját, amely a képernyőn egy adott helyen található. Hívja meg az egyik funkciót: WindowFromPoint, ChildWindowFromPoint vagy ChildWindowFromPointEx.
2. lépés
Szerezzen folyamatfogantyúkat. Hozzon létre új folyamatot a CreateProcess, a CreateProcessAsUser, a CreateProcessWithTokenW vagy a CreateProcessWithLogonW API függvények meghívásával. Mindannyian visszaadnak egy fogantyút az új folyamathoz a PROCESS_INFORMATION szerkezet hProcess mezőjében, amelyhez a mutatót át kell adni nekik, mint utolsó paramétert.
Keresse meg a folyamat fogantyúját ismert azonosítója alapján. Használja az OpenProcess hívást. Az összes futó folyamat azonosítója beszerezhető, például az eszköz súgókönyvtárának CreateToolhelp32Snapshot, Process32First és Process32Next függvényeinek használatával.
A GetCurrentProcess függvény segítségével szerezze be az aktuális folyamat álfogóját.
3. lépés
Szerezzen le szálakat. A CreateThread és a CreateRemoteThread függvények szálakat hoznak létre saját, illetve valaki más folyamatában, visszaadva a fogantyúikat. Megnyithat egy meglévő szálat az azonosítójával, és az OpenThread függvény segítségével megszerezheti a megfelelő fogantyút. Az aktuális folyamat ál-fogantyúja a GetCurrentThread meghívásakor kerül visszaadásra.
4. lépés
A fájlok, könyvtárak, fizikai lemezek, lemezkötetek, konzolok, kommunikációs erőforrások (I / O portok), levelezőhelyek és megnevezett csövek leírói egyetlen függvény, a CreateFile meghívásával szerezhetők be.
5. lépés
A fájl-memória leképezési objektumleírókat a CreateFileMapping és az OpenFileMapping hívások adják vissza.
6. lépés
A CreateMutex, CreateSemaphore és CreateEvent függvények létrehozzák, az OpenMutex, OpenSemaphore és OpenEvent függvények pedig megnyitják a meglévő szinkronizációs objektumokat (mutexek, szemaforok és események). Mindannyian visszaadják a leírókat.
7. lépés
Az összes GDI-objektumot (például eszközkörnyezeteket, betűtípusokat, ecseteket, ceruzákat, hardverfüggő és független bitképeket, DIB szakaszokat stb.) Leíróikon keresztül kezelik. A GDI-objektumok létrehozásának számos funkciója van, amelyekről az MSDN szakaszban tájékozódhat.
8. lépés
Az egyik folyamatban kapott leíró általában nem használható a másikban. Bizonyos esetekben azonban meg lehet szerezni az elsődleges objektumnak megfelelő leíró duplikátumot. Hívja meg a DuplicateHandle API-t a fogantyú lemásolásához. Ez felhasználható például meg nem nevezett szinkronizálási objektumok vagy csatornák megosztására több folyamat között.