GARANTIR DESCONTO

Fórum Problema na função SendMessage() #584784

13/08/2017

0

Primeiramente boa tarde.
Fiz um programa para enviar mensagens de comando para uma outra aplicação (programa). Pesquisei muito sobre o assunto e encontrei nada a respeito do meu problema.
O que eu acontece é o seguinte: O programa só manda o comando para a aplicação quando o parâmetro é 'WM_CHAR', quando tentei o parâmetro 'WM_KEYDOWN' ele não reproduz dentro da aplicação. Porém isso ocorre apenas na aplicação na qual e eu desejo que funcione. Testei eu outros lugares e funciona perfeitamente, ou seja, o problema não está no código, mas sim em alguma resistência (barreira) da aplicação em questão.
Ou seja, pra ficar mais claro:

Essa linha de comando é representada na aplicação:
SendMessage(h, WM_CHAR, B, 0);

Essa linha de comando não é representada na aplicação:
SendMessage(h, WM_KEYDOWN, VK_RETURN, 1);
SendMessage(h, WM_KEYUP, VK_RETURN, 1);

Na hora de dar o ENTER (RETURN) ele simplesmente não envia, assim como qualquer outra tecla que não seja uma letra. Então se eu colocar no campo 'Edit' a palavra 'olá!' ele fica escrevendo a palavra infinitamente e não envia.
Gostaria que alguém me ajudasse a achar alguma alternativa (de repente mudar a função usada, ou captar o comando na aplicação, usar mensagens de notificação, enviar mensagem para a handle filha).
Grato !
Pedro

Pedro

Responder

Post mais votado

14/08/2017

SendMessage(h, WM_KEYDOWN, VK_RETURN, 1);
SendMessage(h, WM_KEYUP, VK_RETURN, 1);


Voce está passando que a tecla PageDown ou Page Up foi pressionada, a tecla que pressionou está no
WM_CHAR


Verifique em modo de debugação o conteúdo que identificcará e tente tratar no KeyPress (Se não estou enganado), do componente ou na aplicação, dependendo de onde o foco está no programa.

Este link pode auxiliar https://www.devmedia.com.br/delphi-e-as-mensagens-do-windows/3102

Luiz Vichiatto

Luiz Vichiatto
Responder

Gostei + 2

Mais Posts

14/08/2017

Pedro

Como eu faço isso:
''''Verifique em modo de debugação o conteúdo que identificcará e tente tratar no KeyPress (Se não estou enganado), do componente ou na aplicação, dependendo de onde o foco está no programa.'''' ?

''''Voce está passando que a tecla PageDown ou Page Up foi pressionada, a tecla que pressionou está no WM_CHAR''''
Acredito que não seja isso, pois testei em outro programas e ele envia o comando da tecla ENTER sendo pressionada e logo em seguida sendo solta.

Porém, obrigado pela informação, esse site foi útil sim, pena que não consegui resolver meu problema ainda. :(
Responder

Gostei + 0

14/08/2017

Luiz Vichiatto

Pedro
Pode utilizar o KeyDown, testando as opções, e assim verificar qual o parametro que deve passar

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

if (Key in [ VK_DOWN, VK_RETURN, VK_UP ]) then

application.MessageBox('Mensagem aviso!','Caption', MB_ICONEXCLAMATION);

end;



outras fontes
https://stackoverflow.com/questions/7616591/alternative-for-postmessage-and-sendmessage

http://www.planetadelphi.com.br/artigo/55/fazendo-dois-aplicativos-se-comunicarem---parte-2

Se você quiser que auxilie mais, entre em contato.
Responder

Gostei + 0

15/08/2017

Pedro

Luiz,
Desculpe mas eu ainda não entendi como isso pode resolver o meu problema. Sou novo nessa área de programação e não entendo muito bem ainda, então o problema não é você, sou eu haha. Gostaria, caso você se disponha, que você me explicasse com mais detalhe o que você está tentando fazer para solucionar o meu problema. Tente me enviar a linha de código,se possível , para que eu possa estar tentando implementar no meu programa.
Grato !
Responder

Gostei + 0

15/08/2017

Luiz Vichiatto

Então vamos lá, explique o que deseja fazer, em qual parte do programa ou da tua programação você quer auxilie?
Responder

Gostei + 0

15/08/2017

Luiz Vichiatto

lmvichiatto@gmail.com
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar