Jump to content



Foto

Delphi Simulação de precionamento de teclas



1 resposta(s) nesse tópico

#1 lobo883    

lobo883
  • Participante
  • 6 mensagens

Publicado 02 February 2008 - 01:10 AM

Estou criando um programa para automação e preciso com que uma tecla do teclado fique pressionada por x segundo ex: 4 segundo. Eu consegui o código abaixo q simula o pressionamento de uma tecla qualquer mas não a mentem pressionada.



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 TAron.Button1Click(Sender: TObject);
begin
PostKeyEx32(Ord('T'), [], False); //Presiona a tecla "t"
end;


alguém tem alguma ideia de como deixar a tecla "t" precionada por varios segundos?


#2 lobo883    

lobo883
  • Participante
  • 6 mensagens

Publicado 18 March 2008 - 02:20 PM

alguém ai tem alguma ideia?