LowLevelMouseProc függvény

Description

A SetWindowsHookExA/SetWindowsHookExW függvényhez használt alkalmazás által definiált vagy kódtár által definiált visszahívási függvény. A rendszer minden alkalommal meghívja ezt a függvényt, amikor új egérbemeneti eseményt szeretne közzétenni egy szálbemeneti üzenetsorba.

A HOOKPROC típus a visszahívási függvény mutatóját határozza meg. A LowLevelMouseProc az alkalmazás által definiált vagy tár által definiált függvénynév helyőrzője.

A LowLevelMouseProc az alkalmazás által definiált vagy tár által definiált függvénynév helyőrzője.

LRESULT CALLBACK LowLevelMouseProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

Paraméterek

nCode [in]

Típus: int

Egy kód, amelyet a horog eljárás használ az üzenet feldolgozásának meghatározására.

Ha az nCode kisebb, mint nulla, a horog eljárásnak további feldolgozás nélkül kell átadnia az üzenetet a CallNextHookEx függvénynek, és a CallNextHookEx által visszaadott értéket kell visszaadnia.

Ez a paraméter az alábbi értékek egyike lehet.

Érték Meaning
HC_ACTION 0 A wParam és az lParam paraméterek információt tartalmaznak egy egérüzenetről.

wParam [in]

Típus: WPARAM

Az egérüzenet azonosítója.

Ez a paraméter a következő üzenetek egyike lehet: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_RBUTTONDOWN, WM_RBUTTONUP, WM_MBUTTONDOWN, WM_MBUTTONUP, WM_XBUTTONDOWN vagy WM_XBUTTONUP.

lParam [in]

Típus: LPARAM

Egy MSLLHOOKSTRUCT-struktúra mutatója.

Visszatérítések

Típus: LRESULT

Ha az nCode kisebb, mint nulla, a horog eljárásnak a CallNextHookEx által visszaadott értéket kell visszaadnia.

Ha az nCode értéke nagyobb vagy egyenlő nullánál, és a horog eljárás nem dolgozza fel az üzenetet, erősen ajánlott meghívni a CallNextHookEx-et , és visszaadni a visszaadott értéket; ellenkező esetben a WH_MOUSE_LL horgokat telepített egyéb alkalmazások nem kapják meg a horogértesítéseket, és ennek következtében helytelenül viselkedhetnek.

Ha a horog eljárás feldolgozta az üzenetet, előfordulhat, hogy nemero értéket ad vissza, hogy a rendszer ne adja át az üzenetet a horoglánc többi részére vagy a célablak eljárásának.

Megjegyzések

Az alkalmazás a WH_MOUSE_LL horogtípus és a SetWindowsHookExA/SetWindowsHookExW függvény hívásában a horog eljárásra mutató mutatóval telepíti a horog eljárást.

Ezt a horogot a telepített szál kontextusában hívjuk meg. A hívás úgy történik, hogy üzenetet küld a horogot telepítő szálnak. Ezért a horogra telepített szálnak üzenethurkot kell tartalmaznia.

Az egér bemenete a helyi egérillesztőből vagy a mouse_event függvény hívásaiból származhat. Ha a bemenet egy mouse_event hívásából származik, a bemenet "injektálva" lett. A WH_MOUSE_LL horgot azonban nem injektálják egy másik folyamatba. Ehelyett a környezet visszaáll arra a folyamatra, amely telepítette a horogot, és az eredeti környezetben hívja meg. Ezután a környezet visszavált az eseményt létrehozó alkalmazásra.

A horogkezelési eljárásnak kevesebb idő alatt kell feldolgoznia egy üzenetet, mint a LowLevelHooksTimeout értékben megadott adatbevitel a következő beállításkulcsban:

HKEY_CURRENT_USER\Control Panel\Desktop

Az érték ezredmásodpercben van. Ha a horog eljárás túllépi az időkorlátot, a rendszer átadja az üzenetet a következő horognak. Windows 7 és újabb rendszereken azonban a horog csendesen el lesz távolítva anélkül, hogy meghívták. Az alkalmazás nem tudja, hogy a horog el lett-e távolítva.

Windows 10 1709-es és újabb verzió A rendszer által megengedett maximális időtúllépési érték 1000 ezredmásodperc (1 másodperc). A rendszer alapértelmezés szerint 1000 ezredmásodperc időtúllépést használ, ha a LowLevelHooksTimeout értéke 1000-nél nagyobb értékre van állítva.

Megjegyzés:

A hibakeresési horgok nem tudják nyomon követni az ilyen típusú alacsony szintű egérhorogokat. Ha az alkalmazásnak alacsony szintű horgokat kell használnia, a horgokat egy dedikált szálon kell futtatnia, amely átadja a munkát egy feldolgozó szálnak, majd azonnal visszatér. A legtöbb esetben, amikor az alkalmazásnak alacsony szintű horgokat kell használnia, inkább a nyers bemenetet kell figyelnie. Ennek az az oka, hogy a nyers bemenet képes aszinkron módon monitorozni a más szálakra célzott egér- és billentyűzetüzeneteket, mint az alacsony szintű horgok. A nyers bemenettel kapcsolatos további információkért lásd: Nyers bemenet.

Lásd még

CallNextHookEx

mouse_event

KBDLLHOOKSTRUCT

MSLLHOOKSTRUCT

SetWindowsHookEx

WM_LBUTTONDOWN

WM_LBUTTONUP

WM_MOUSEMOVE

WM_MOUSEWHEEL

WM_RBUTTONDOWN

WM_RBUTTONUP

Hookok

Tudnivalók a Hooksról