Gancho de mouse de baixo nível e DirectX
Estou criando um aplicativo que precisa filtrar alguns cliques do mouse em todo o sistema. Ou seja, preciso fazer com que o sistema ignore alguns cliques do botão do mouse em ocasiões especiais.
Eu uso gancho de mouse de baixo nível eSetWindowsHookEx
para filtrar esses cliques. Funciona relativamente bem, exceto paraWPF
formulários. Eu acho que é porque esses aplicativos usamDirectX
eDirectInput
para processamento de entrada, e é por isso que não consigo filtrar cliques nesses aplicativos, pois eles recebem a entrada diretamente do driver.
Existe alguma maneira de filtrar cliques emWPF
/DirectX
formulários?
Sei que geralmente não é uma boa ideia filtrar globalmente os cliques, mas é crucial para o meu aplicativo e assegurarei que ele não seja filtrado em jogos e outros programas. MasWPF
aplicações têm ordinárioGUI
, então eu preciso filtrar os cliques também.
Acho que poderia resolver esse problema escrevendo meu próprio driver de filtragem, mas como não tenho experiência em escrever drivers, informe-me se houver outra solução.
Recursos de conexão da APIEncontrei alguns links úteis sobre a conexão da API. Use isso como uma referência.
Hooking API do Windows
Gancho da API revelado
Hooking API revelado Parte 2
Sequestrar chamadas de saída de texto do bloco de notas
madCodeHook
Função de IAT
O WPF não usa o DirectInput, mas as mensagens Win32 padrão para manipulação de entrada (exceto a caneta, que é a fonte de todos os problemas para mim, porque eu uso a caneta para desenvolvimento e não sabia que os aplicativos WPF são compatíveis com a caneta). No entanto, para filtrar cliques em aplicativos que usam o DirectInput, seria necessário conectar a API, como explica a resposta aceita.