Beállítás csapdák ablakok
Ma fogunk beszélni telepítésével hook'ov (csapdák) a Windows. Hook - egy üzenet lehallgatását mechanizmus beállít egy speciális funkciója a verem tetején rendszer hook-funkciókat. Beállítás nélkül ezek a csapdák szinte lehetetlen elkerülni írásakor a különböző távoli adminisztrációs eszközök, kémprogramok és más programok különböző mértékben felelős a felhasználó Windows felhasználását. Vannak horgok globális (az egész rendszer) és a helyi (egy patak).
Állítsa be a horgot rendszer felhasználhatja SetWindowsHookEx () függvény a következő címmel:
HHOOK SetWindowsHookEx (int idHook, HOOKPROC lpfn, HINSTANCE HM, DWORD
dwThreadId);
Ha nem érzékeljük shny C kódot Delphi fejléc így néz ki:
SetWindowsHookEx (idHook: integer; lpfn: TFNHookProc; HM: HINST; dwThreadId:
DWORD): HHOOK;
SetWindowsHookEx () függvény, ha telepíti hook'a visszaadja a fogantyút, hiba esetén visszaáll 0-ra.
Nézzük meg részletesen az összes bemeneti paraméterei ezt a funkciót:
1. idHook - állandó, meghatározza azokat a telepített hook'a. Ez lehet az egyik a következő értékeket:
WH_CALLWNDPROC - kövesse nyomon az üzeneteket küldeni a ablakozófüggvény nevezzük, amikor egy üzenetet küld az ablakon eljárást. Trap váltja minden hívás SendMessage funkciót.
WH_CALLWNDPROCRET - Controls üzenetek után küldik az ablak funkciót.
WH_CBT - Hívott, hogy kezelni a legtöbb üzenet doboz, az egér és a billentyűzet (létrehozása ablakok, aktiválási ablak, elpusztítva ablakok, a változás az ablak méretét, mielőtt telepíti itp fókusz)
WH_DEBUG - meghívni, mielőtt bármilyen egyéb csapdákat. Ez hasznos hibakereső hook'ov.
WH_GETMESSAGE - Hívott, amikor az alkalmazás elolvassa az üzenetet sorban.
WH_HARDWARE - Hívott, amikor az alkalmazás beolvassa a üzenetsorába a számítógépre telepített berendezések.
WH_JOURNALPLAYBACK - Hívott, amikor a rendszer beolvassa a sorból üzenetet. Használt felvenni a sorba rendszer eseményeket.
WH_JOURNALRECORD - Hívott, amikor a rendszer sorba kérik mindenképpen. Úgy alkalmazott regisztrációs rendszer események.
WH_KEYBOARD - Hívott, amikor az alkalmazás sorban olvassuk WM_Keydown vagy WM_Keyup üzenetét. Az egyik leggyakoribb buktatókat -).
WH_MOUSE - Hívott, amikor az alkalmazás sorban olvasható az egér üzenetet.
WH_MSGFILTER - Hívott, amikor az üzenetet kell feldolgozni interaktív alkalmazás ablak, menü vagy az alkalmazás ablakában.
WH_SHELL - Hívott, amikor létre, és elpusztította a felső szintű ablak, illetve ha a kérelmet héj van szükség, hogy aktív.
2. lpfn - egy mutató a nagyon horog funkció. A főcím:
funkció HOOKFUNCTION (kód: integer; wParam: wParam; lParam: lParam): LRESULT
stdcall;
Az értékek a bemeneti paraméterek típusától függ hook'a. Ha pedig a globális horog, ezt a funkciót kell feltétlenül a dll.
3. HM - értéket veszi HINSTANCE vagy DLL leíró (globális csapda).
4. dwThreadId - azonosítja a légáramot, amelyhez a csapdába van behelyezve. A globális hook'ah ez a paraméter legyen 0.
Eltávolításához a telepített csapda létezik UnhookWindowsHookEx () függvény. Mint lehetőség, akkor kell használni egy mutatót (fogantyú) a horog funkció (az értéket, amely visszaadja a SetWindowsHookEx () függvény).
Nos, ez minden, akkor ismerik az alapokat. Most írni egy kis tréfás program célja, hogy horog olvasó egér üzenetek (WH_MOUSE). Legyen úgy, hogy ha megnyomja a jobb egérgombbal rejtőzik „Start” gombra, kattintson a bal oldalon - vannak, átlagos - megváltoztatta a címet az aktív ablak. Hook funkció is lesz egy dll. Továbbá dll lesz két eljárások - sethook () és removehook (), illetve létrehozása és eltávolítása csapdába.
Itt a kód egy dll:
- lib.dll -
felhasználások
ablakok, üzenetek;
var
H. THandle;
- lib.dll -
A program csapdát állított hívást dll sethook eljárások törölve - hívja removehook eljárást. Példa hook'a telepítését és eltávolítását, valamint a forráskód könyvtár dll a mellékelt fájlt.
Itt található az ezt a cikket egy ismerősének:
- 23 perce