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

(Resolvido) Repetiçao de teclas


Aldo

Pergunta

bom dia,

Primeiramente vou agradecer quem pelo menos olhar o tópico e agradeço muito mais quem me responder ou me da uma luz.

meu problema:

preciso criar um programinha que repita algumas rotinas minha em outro programa. ex.: uma rotina que eu regulasse o tempo que a tecla "A" fosse pressionada no autocad ou seja seria uma macro que precionasse a tecla "a" pra mim no tempo que eu programasse, ou seja, vou simplificar o problema numa unica pergunta:

Como eu faço para o delphi simular o pressionamento de uma determinada tecla e como eu temporizo o pressionamento?

agradeço a resposta.

Editado por Jonathan Queiroz
Remover palavra "ajuda" do título do tópico (Jonathan)
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

olá !!!

pra você controlar o tempo no seu programa, utilize o componente TTimer...

quanto a simulação do pressionamento de teclas, eu encontrei esse código na net,

porém, não tive tempo de testar ....

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, 
  Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure PostKeyEx32(key: Word; const shift: 
   TShiftState; specialkey: Boolean);
{ 
Parâmetros: 
* key : código virtual da tecla a ser enviada. Para teclas que possuem caracteres este será o código ANSI (Ord(character)) . 
* shift : estado das teclas de modificação. É um conjunto, de modo que você pode especificar várias teclas (shift, control, alt, botões do mouse) todas juntas. O tipo TShiftState é declarado na unit Classes. 
* specialkey: normalmente este valor deve ser False. Defina-o como True para especificar uma tecla no teclado numérico.
}
type
   TShiftKeyInfo = record
     shift: Byte;
     vkey: Byte;
   end;
   ByteSet = set of 0..7;
const
   shiftkeys: array [1..3] of TShiftKeyInfo =
     ((shift: Ord(ssCtrl); vkey: VK_CONTROL),
     (shift: Ord(ssShift); vkey: VK_SHIFT),
     (shift: Ord(ssAlt); vkey: VK_MENU));
var
   flag: DWORD;
   bShift: ByteSet absolute shift;
   j: Integer;
begin
   for j := 1 to 3 do
   begin
     if shiftkeys[j].shift in bShift then
       keybd_event(shiftkeys[j].vkey, 
       MapVirtualKey(shiftkeys[j].vkey, 0), 0, 0);
   end;
   if specialkey then
     flag := KEYEVENTF_EXTENDEDKEY
   else
     flag := 0;

   keybd_event(key, MapvirtualKey(key, 0), flag, 0);
   flag := flag or KEYEVENTF_KEYUP;
   keybd_event(key, MapvirtualKey(key, 0), flag, 0);

   for j := 3 downto 1 do
   begin
     if shiftkeys[j].shift in bShift then
       keybd_event(shiftkeys[j].vkey, 
       MapVirtualKey(shiftkeys[j].vkey, 0), 
       KEYEVENTF_KEYUP, 0);
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Simula PRINTSCREEN - snapshot da tela inteira
  //PostKeyEx32(VK_SNAPSHOT, [], False);

  // Simula PRINTSCREEN - snapshot da janela ativa
  //PostKeyEx32(VK_SNAPSHOT, [ssAlt], False);

  // Simula a tecla Windows da esquerda
  //PostKeyEx32(VK_LWIN, [], False);

  // Simula Alt+F4 - fecha a janela ativa
  PostKeyEx32(VK_F4, [ssAlt], False);
end;

end.

testa o código aí, depois fala se deu certo ...

abraços !!!

Editado por Daniel Sanches
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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...