Application Messages
Olá,
Estou com uma problema no tratamento mensagens quando existe um Form aberto com ShowModal. Preciso identificar o movimneto do mouse em qualquer situação em que o programa esteja ativo, porém como abro algumas telas em ShowModal, só consigo identificar o movimento quando o ponteiro está sobre a tela com ShowModal.
Alguém sabe como resolver isso?
vlw!
Estou com uma problema no tratamento mensagens quando existe um Form aberto com ShowModal. Preciso identificar o movimneto do mouse em qualquer situação em que o programa esteja ativo, porém como abro algumas telas em ShowModal, só consigo identificar o movimento quando o ponteiro está sobre a tela com ShowModal.
Alguém sabe como resolver isso?
vlw!
Rtava
Curtidas 0
Respostas
Afarias
19/09/2009
Vejo 2 formas:
1) Não usar forms modais -- Ex: substituir por Form.Style := fsStayOnTop e exibir com Form.SHOW;
2) Não usar o evento OnMessage do Application, mas registrar no Windows o desejo de capturar todo movimento do mouse (como fazem os programas espiões)
T+
1) Não usar forms modais -- Ex: substituir por Form.Style := fsStayOnTop e exibir com Form.SHOW;
2) Não usar o evento OnMessage do Application, mas registrar no Windows o desejo de capturar todo movimento do mouse (como fazem os programas espiões)
T+
GOSTEI 0
Rtava
19/09/2009
1) Não usar forms modais -- Ex: substituir por Form.Style := fsStayOnTop e exibir com Form.SHOW;
Eu uso Showmodal, porque preciso de Showmodal. Além disso, mesmo que o Form não seja aberto em ShowModal, ainda assim o movimento do mouse só será detectado se o ponteiro do mouse estiver sobre um Form qualquer da aplicação. Ou seja, se a aplicação estiver minimizada, não funciona de forma alguma.
2) Não usar o evento OnMessage do Application, mas registrar no Windows o desejo de capturar todo movimento do mouse (como fazem os programas espiões)
Algum exemplo prático?
GOSTEI 0
Afarias
19/09/2009
Algum exemplo prático?
Sim:
http://delphi.about.com/od/windowsshellapi/a/mousehook.htm
T+
GOSTEI 0
Rtava
19/09/2009
Ok. Parece bem simples mesmo...
Obrigado!
Obrigado!
GOSTEI 0
Rtava
19/09/2009
afarias, ou quem souber o que ocorre, se puder me dar uma ajuda...
Criei este exemplo do link que o afarias indicou e funcionou parcialmente sem problemas. Digo parcialmente, pois a detecção de movimento do mouse está ocorrendo mesmo sem o mouse se movimentar fisicamente. É que tenho um programa que fica criando e destruindo janelas constantemente, de forma automática, e cada vez que isso ocorre a tela é atualizada. Junto com essa atualização provavelmente também é atualizada a posição do mouse (eu imagino que seja isso). Por essa razão ocorre a detecção indesejada de movimentação do mouse e não estou conseguindo corrigir.
Alguém de idéia de como ´filtrar´ esses movimentos indesejados?
Criei este exemplo do link que o afarias indicou e funcionou parcialmente sem problemas. Digo parcialmente, pois a detecção de movimento do mouse está ocorrendo mesmo sem o mouse se movimentar fisicamente. É que tenho um programa que fica criando e destruindo janelas constantemente, de forma automática, e cada vez que isso ocorre a tela é atualizada. Junto com essa atualização provavelmente também é atualizada a posição do mouse (eu imagino que seja isso). Por essa razão ocorre a detecção indesejada de movimentação do mouse e não estou conseguindo corrigir.
Alguém de idéia de como ´filtrar´ esses movimentos indesejados?
GOSTEI 0