Compartilhar via


Função LowLevelMouseProc

DESCRIÇÃO

Uma função de retorno de chamada definida pelo aplicativo ou definida pela biblioteca usada com a função SetWindowsHookExA/SetWindowsHookExW . O sistema chama essa função sempre que um novo evento de entrada do mouse está prestes a ser postado em uma fila de entrada de thread.

O tipo HOOKPROC define um ponteiro para essa função de retorno de chamada. LowLevelMouseProc é um espaço reservado para o nome da função definida pelo aplicativo ou definida pela biblioteca.

LowLevelMouseProc é um espaço reservado para o nome da função definida pelo aplicativo ou definida pela biblioteca.

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

Parâmetros

nCode [in]

Tipo: int

Um código que o procedimento de gancho usa para determinar como processar a mensagem.

Se nCode for menor que zero, o procedimento de gancho deverá passar a mensagem para a função CallNextHookEx sem processamento adicional e deverá retornar o valor retornado por CallNextHookEx.

Esse parâmetro pode ser um dos valores a seguir.

Valor Meaning
HC_ACTION 0 Os parâmetros wParam e lParam contêm informações sobre uma mensagem do mouse.

wParam [in]

Tipo: WPARAM

O identificador da mensagem do mouse.

Esse parâmetro pode ser uma das seguintes mensagens: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_RBUTTONDOWN, WM_RBUTTONUP, WM_MBUTTONDOWN, WM_MBUTTONUP, WM_XBUTTONDOWN ou WM_XBUTTONUP.

lParam [in]

Tipo: LPARAM

Um ponteiro para uma estrutura MSLLHOOKSTRUCT .

Devoluções

Tipo: LRESULT

Se nCode for menor que zero, o procedimento de gancho deverá retornar o valor retornado por CallNextHookEx.

Se o nCode for maior ou igual a zero e o procedimento de gancho não processar a mensagem, é altamente recomendável que você chame CallNextHookEx e retorne o valor retornado; caso contrário, outros aplicativos que instalaram WH_MOUSE_LL ganchos não receberão notificações de gancho e poderão se comportar incorretamente como resultado.

Se o procedimento de gancho tiver processado a mensagem, ele poderá retornar um valor diferente de zero para impedir que o sistema passe a mensagem para o restante da cadeia de ganchos ou o procedimento da janela de destino.

Observações

Um aplicativo instala o procedimento de gancho especificando o tipo de gancho WH_MOUSE_LL e um ponteiro para o procedimento de gancho em uma chamada para a função SetWindowsHookExA/SetWindowsHookExW .

Esse gancho é chamado no contexto do thread que o instalou. A chamada é feita enviando uma mensagem para o thread que instalou o gancho. Portanto, o thread que instalou o gancho deve ter um loop de mensagem.

A entrada do mouse pode vir do driver do mouse local ou de chamadas para a função mouse_event . Se a entrada vem de uma chamada para mouse_event, a entrada foi "injetada". No entanto, o gancho de WH_MOUSE_LL não é injetado em outro processo. Em vez disso, o contexto volta para o processo que instalou o gancho e é chamado em seu contexto original. Em seguida, o contexto volta para o aplicativo que gerou o evento.

O procedimento de gancho deve processar uma mensagem em menos tempo do que a entrada de dados especificada no valor LowLevelHooksTimeout na seguinte chave do Registro:

HKEY_CURRENT_USER\Control Panel\Desktop

O valor está em milissegundos. Se o procedimento de gancho atingir o tempo limite, o sistema passará a mensagem para o próximo gancho. No entanto, no Windows 7 e posterior, o gancho é removido silenciosamente sem ser chamado. Não há como o aplicativo saber se o gancho foi removido.

Windows 10 versão 1709 e posterior O valor máximo de tempo limite que o sistema permite é 1000 milissegundos (1 segundo). O sistema usará um tempo limite de 1000 milissegundos se o valor LowLevelHooksTimeout for definido como um valor maior que 1000.

Observação

Os ganchos de depuração não podem rastrear esse tipo de ganchos de mouse de baixo nível. Se o aplicativo precisar usar ganchos de baixo nível, ele deverá executar os ganchos em um thread dedicado que passa o trabalho para um thread de trabalho e, em seguida, retorna imediatamente. Na maioria dos casos em que o aplicativo precisa usar ganchos de baixo nível, ele deve monitorar a entrada bruta. Isso ocorre porque a entrada bruta pode monitorar de forma assíncrona mensagens de mouse e teclado direcionadas para outros threads com mais eficiência do que os ganchos de baixo nível podem. Para obter mais informações sobre entrada bruta, consulte Entrada Bruta.

Consulte também

CallNextHookEx

mouse_event

KBDLLHOOKSTRUCT

MSLLHOOKSTRUCT

SetWindowsHookEx

WM_LBUTTONDOWN

WM_LBUTTONUP

WM_MOUSEMOVE

WM_MOUSEWHEEL

WM_RBUTTONDOWN

WM_RBUTTONUP

Ganchos

Sobre ganchos