Ir para conteúdo
Fórum Script Brasil
  • 0

duvida com Keybd


C.J.

Pergunta

Bom estava tentando fazer um programa para enviar mensagens automaticamente para o MSN...

Usei da seguinte logica... meio iniciante + para o proposito axava que estava otima...

Memo1.SelectAll;

Memo1.CopyToClipboard;

end;

keybd_event(vk_control,0,0,0);

keybd_event(Ord('V'),0,0,0);

keybd_event(vk_control,0,KEYEVENTF_KEYUP,0);

keybd_event(vk_return,0,0,0);

keybd_event (VK_MENU, 0, 0, 0);

keybd_event(VK_F4, 0, 0, 0);

Ele basicamente copiava a mensagem e envia a msg...

porem com essa minha logica apos o termino do processo o teclado fica totalmente disconfigurado não sei porque só resolve se reiniciar o PC...

gostaria de saber se alguém tem uma solução ou até outra forma de fazer isso que estou tentando...

abraços

é para o programa copiar a MSG do Memo1 e depois copiar na janela do MSN... ele até faiz o processo + depois que entra a parte que o teclado desconfigura...

se não fui claro me avisem

abraços

Editado por C.J.
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
porem com essa minha logica apos o termino do processo o teclado fica totalmente disconfigurado não sei porque só resolve se reiniciar o PC...

Entendendo a função Keybd_Event

Esta função permite simular o pressionamento de uma tecla.

Perceba que se voce estiver com a tecla CTRL ou ALT pressionada e pressionar outras teclas dará a impressão que o teclado ficou maluco.

Agora vamos supor que voce pressionou a tecla Caps Lock .... Então como saber se está ativada ou desativada ?

Para simular o pressionamento de uma tecla é preciso chamar keybd_event duas vezes. Primeiro simulamos OnKeyDown e depois OnKeyUp. Assim, a tecla Caps Lock pode ser ligada ou desligada com o seguinte trecho de código:

procedure TForm1.Button1Click(Sender: TObject);
var
  KeyState: TKeyboardState; 
begin
  GetKeyboardState(KeyState);   // testar o estado do teclado


  if(KeyState[VK_CAPITAL] = 0) then
    begin
      // ligado o Caps Lock
      
      Keybd_Event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or 0, 0);
      Keybd_Event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);

    end
  else
    begin
      // desligado o Caps Lock

      Keybd_Event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or 0, 0);
      Keybd_Event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);

    end;
end;
Veja o codigos de teclas virtuais http://www.arquivodecodigos.net/arquivo/re...as_virtuais.php O Mesmo principio vale para o seu código
keybd_event(vk_control,0,0,0);
keybd_event(Ord('V'),0,0,0);
keybd_event(vk_control,0,KEYEVENTF_KEYUP,0);
keybd_event(vk_return,0,0,0); 
keybd_event (VK_MENU, 0, 0, 0);
keybd_event(VK_F4, 0, 0, 0);

Só como observação veja este: keybd_event(VK_F4, 0, 0, 0); voce simulou o pressionamento da tecla F4 mas seria o mesmo que continuar pressionando a tecla o tempo todo ... por isso o seu teclado parece que ficou desconfigurado

OBS: A lógica é saber se a tecla continua pressionada ou não

GetKeyboardState(KeyState); // testar o estado do teclado

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...