Simular mouse movimento / clique / keyPress em um aplicativo que não está ativo

StackOverflow https://stackoverflow.com/questions/806376

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu sei como simular eventos de mouse e teclado, mas eles agem como se o usuário fez-los, então eles vão afetar a janela que estiver ativa. O que eu preciso é simular uma dessas entradas, mas em uma janela que não está ativo.

Eu não estou dizendo que ele é minimizado, imagine por exemplo, você tem MSPAINT, e bloco de notas. Bloco de notas está na frente da pintura. E você quiser cliques do mouse simular em certas coordenadas da janela de pintura, mas sem defini-lo ativo, tornando possível para o usuário para continuar usando o bloco de notas que é em frente de tinta.

Isto é possível em tudo? Obrigado!

Foi útil?

Solução

Você pode fazer o seguinte:

1) obter o HWND do interior janela que você deseja simular eventos. A fim de fazer isso, você pode usar a função FindWindow, que tem dois parâmetros, sendo um nome de classe da janela (você pode usar NULL) eo outro o nome da janela (consulte a documentação MSDN para mais detalhes);

2) enviar uma mensagem para a janela desejada usando a função SendMessage. Os parâmetros são: a pega anterior obtido janela (HWND), a mensagem (que pode ser, por exemplo WM_KEYDOWN, ou WM_MOUSEMOVE, WM_LBUTTONDOWN etc), o WPARAM da mensagem (que no caso de WM_KEYDOWN é o código de tecla virtual da tecla ) e, finalmente, o LPARAM da mensagem (que, em caso de WM_KEYDOWN é bastante complexo e você deve verificar MSDN para detalhes).

Na minha opinião isso é suficiente para o que você pretende fazer.

Outras dicas

Bem, se você sabia JAVA você poderia usar a classe robôs.

Esta classe é usada para gerar eventos de entrada do sistema nativas para fins de automação de testes, demos de execução automática e outras aplicações onde é necessário o controle do mouse e do teclado

Java robôs classe

Talvez há algo simular em .net?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top