#

Jump to content

  • Login via Facebook Login com Twitter
  • Cadastre-se no Fórum do BABOO!





 

Foto

Delphi Simulação de precionamento de teclas


Minimizar/MaximizarImagens para Papel de Parede

  • 3D - 28
  • 3D - 27
  • Paisagens e animais - 54
  • Jogos - 67
  • 3D - 26
  • Paisagens e animais - 61
  • 3D - 29
  • Motos off-road - 26
  • Floresta - 09
  • Grunge - 19

  • Faça login para responder
1 resposta(s) nesse tópico

#1
Link desta mensagem
lobo883

lobo883
  • Participante
  • 6 mensagens

Publicado 02/fev/08 01:10 h

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?

Publicidade
Publicidade

#2
Link desta mensagem
lobo883

lobo883
  • Participante
  • 6 mensagens

Publicado 18/mar/08 02:20 h

alguém ai tem alguma ideia?


  Publicidade  
Publicidade