Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Description
Funkce zpětného volání definovaná aplikací nebo knihovnami používaná s funkcí SetWindowsHookExA/SetWindowsHookExW . Systém tuto funkci volá pokaždé, když se chystáte publikovat novou událost vstupu myši do vstupní fronty vlákna.
Typ HOOKPROC definuje ukazatel na tuto funkci zpětného volání. LowLevelMouseProc je zástupný symbol pro název funkce definované aplikací nebo knihovny.
LowLevelMouseProc je zástupný symbol pro název funkce definované aplikací nebo knihovny.
LRESULT CALLBACK LowLevelMouseProc(
_In_ int nCode,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
Parametry
nCode [in]
Typ: int
Kód, který procedura hooku používá k určení způsobu zpracování zprávy.
Pokud je nCode menší než nula, procedura háku musí předat zprávu funkci CallNextHookEx bez dalšího zpracování a měla by vrátit hodnotu vrácenou CallNextHookEx.
Tento parametr může být jednou z následujících hodnot.
| Hodnota | Význam |
|---|---|
| HC_ACTION 0 | Parametry wParam a lParam obsahují informace o zprávě myši. |
wParam [in]
Typ: WPARAM
Identifikátor zprávy myši.
Tento parametr může být jedna z následujících zpráv: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_RBUTTONDOWN, WM_RBUTTONUP, WM_MBUTTONDOWN, WM_MBUTTONUP, WM_XBUTTONDOWN nebo WM_XBUTTONUP.
lParam [in]
Typ: LPARAM
Ukazatel na strukturu MSLLHOOKSTRUCT .
Návraty
Typ: LRESULT
Pokud je nCode menší než nula, procedura háku musí vrátit hodnotu vrácenou CallNextHookEx.
Pokud je nCode větší než nebo rovna nule a procedura hook nezpracovala zprávu, důrazně doporučujeme volat CallNextHookEx a vrátit hodnotu, kterou vrátí; jinak ostatní aplikace, které mají nainstalované WH_MOUSE_LL háky, nebudou dostávat oznámení o háku a mohou se chovat nesprávně jako výsledek.
Pokud procedura háku zprávu zpracovala, může vrátit nenulovou hodnotu, aby systém nepředál zprávu do zbytku řetězu háku nebo cílového okna.
Poznámky
Aplikace nainstaluje proceduru háku zadáním typu WH_MOUSE_LL háku a ukazatelem na proceduru háku ve volání funkce SetWindowsHookExA/SetWindowsHookExW.
Tento háček se volá v kontextu vlákna, které ho nainstalovalo. Volání se provede odesláním zprávy do vlákna, které nainstalovalo háku. Proto vlákno, které nainstalovalo háku, musí mít smyčku zpráv.
Vstup myši může pocházet z místního ovladače myši nebo z volání funkce mouse_event . Pokud vstup pochází z volání mouse_event, vstup byl "vložen". Nicméně , WH_MOUSE_LL háček není vložen do jiného procesu. Místo toho se kontext přepne zpět na proces, který nainstaloval hák a volá se v původním kontextu. Kontext se pak přepne zpět do aplikace, která událost vygenerovala.
Procedura hook by měla zpracovat zprávu za kratší dobu než položka dat zadaná v hodnotě LowLevelHooksTimeout v následujícím klíči registru:
HKEY_CURRENT_USER\Control Panel\Desktop
Hodnota je v milisekundách. Pokud časový limit procedury háku vyprší, systém předá zprávu dalšímu háku. Nicméně, v systému Windows 7 a novější, háček je bezobslužně odstraněn bez volání. Neexistuje způsob, jak aplikace zjistit, jestli je háček odebrán.
Windows 10 verze 1709 a novější Maximální hodnota časového limitu, kterou systém umožňuje, je 1000 milisekund (1 sekunda). Systém ve výchozím nastavení použije časový limit 1000 milisekund, pokud je hodnota LowLevelHooksTimeout nastavená na hodnotu větší než 1000.
Poznámka:
Ladicí háky nemohou sledovat tento typ háků myši nízké úrovně. Pokud aplikace musí používat háky nízké úrovně, měla by spouštět háky na vyhrazeném vlákně, které předá práci pracovnímu vláknu, a pak okamžitě vrátí. Ve většině případů, kdy aplikace potřebuje používat háky nízké úrovně, by měla místo toho monitorovat nezpracovaný vstup. Je to proto, že nezpracovaný vstup může asynchronně monitorovat zprávy myši a klávesnice, které jsou cílem jiných vláken efektivněji než háky nízké úrovně. Další informace o nezpracovaných vstupech naleznete v tématu Nezpracovaný vstup.