Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tastendruck simluieren mit variable ? (https://www.delphipraxis.net/100313-tastendruck-simluieren-mit-variable.html)

k4ni 26. Sep 2007 06:09


Tastendruck simluieren mit variable ?
 
Hallo,

Ich hab ein problem, und zwar:
Ich möchte tastendrücke simluieren, hab danach gesaucht und z.B. das hier gefunen:
Delphi-Quellcode:
  keybd_event(Ord('C'), 0, 0, 0);
also schreibt es ein C, doch wie könnte ich es machen damit es schreibt was in der variable "a" steht ?

So hab ich es versucht:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var a: Integer;
begin
Timer1.Enabled := false;
a := StrToInt('2');
  keybd_event(Ord(a), 0, 0, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := true;
end;
Kommt zwar kein fehler aber es schreibt ganz einfach nichts. Was nun?

Chemiker 26. Sep 2007 06:46

Re: Tastendruck simluieren mit variable ?
 
Hallo k4ni,

die Funktion ord () erwartet als Parameter ein Char.

Delphi-Quellcode:
var a: Char;
begin
Timer1.Enabled := false;
a := '2';
  keybd_event(Ord(a), 0, 0, 0);
end;
nicht getestet, aber so sollte es funktionieren.

k4ni 26. Sep 2007 06:51

Re: Tastendruck simluieren mit variable ?
 
Niceeee :) Danke!!! Es geht.

k4ni 26. Sep 2007 07:01

Re: Tastendruck simluieren mit variable ?
 
Da ich jetzt schon einen thread aufhabe, und diese frage wahrscheinlich sowieso leicht zu beantworten ist:
Da jetzt die variable kein integer wert mehr ist sondern ein Char ist kann ich ja keine funktionen wie </>/= oder +/-, wie kann ich ein Char zu einem Integer machen?
Also z.B irgendwie so CharToInt ?

DeddyH 26. Sep 2007 07:17

Re: Tastendruck simluieren mit variable ?
 
Ord()

k4ni 26. Sep 2007 07:33

Re: Tastendruck simluieren mit variable ?
 
also dann sollte das hier:
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
var current2: Char;
begin
current2 := char(Ord(current));
if current > 999 then begin
  keybd_event(Ord(current2), 0, 0, 0);
  keybd_Event(VK_RETURN, 0, 0, 0);
  Current := current + 1;
end
else
if current > 99 then begin
  keybd_event(Ord('0'), 0, 0, 0);
  keybd_event(Ord(current2), 0, 0, 0);
  keybd_Event(VK_RETURN, 0, 0, 0);
  Current := current + 1;
end
else
if current > 9 then begin
  keybd_event(Ord('0'), 0, 0, 0);
  keybd_event(Ord('0'), 0, 0, 0);
  keybd_event(Ord(current2), 0, 0, 0);
  keybd_Event(VK_RETURN, 0, 0, 0);
  Current := current + 1;
end
else
if current >= 0 then
begin
  keybd_event(Ord('0'), 0, 0, 0);
  keybd_event(Ord('0'), 0, 0, 0);
  keybd_event(Ord('0'), 0, 0, 0);
  keybd_event(Ord(current2), 0, 0, 0);
  keybd_Event(VK_RETURN, 0, 0, 0);
  Current := current + 1;
end;
end;
eigentlich so aufzählen:
0001
0002
0003
0004
..
0010
0011
...bis unendlich (bis jetzt)

Doch irgendwie tut es das nicht xD, wieso?

SirThornberry 26. Sep 2007 07:37

Re: Tastendruck simluieren mit variable ?
 
Dein Problem ist das keybd_event einen Tastecode erwartet und nicht den Ascii-Wert eines Zeichens.
keybd_event will also nicht den OrdinalWert eines großen 'A' haben wenn du ein große A Tippen willst sondern du musst erst die Schifttaste "betätigen" und dann die Taste "a" drücken:
http://www.delphipraxis.net/internal...=562719#562719

DeddyH 26. Sep 2007 07:45

Re: Tastendruck simluieren mit variable ?
 
Außerdem werden die Tasten anscheinend nie losgelassen.

SirThornberry 26. Sep 2007 07:49

Re: Tastendruck simluieren mit variable ?
 
Zitat:

Zitat von DeddyH
Außerdem werden die Tasten anscheinend nie losgelassen.

:shock: du hast recht. Dann lege ich dem Fragesteller mal folgende Hilfeseite ans Herz
keybd_event

k4ni 26. Sep 2007 09:28

Re: Tastendruck simluieren mit variable ?
 
Ok. Danke.
GIbt es keine möglichkeit es in dieser weise zu machen ?
Sonst wirds ziemlich kompliziert denn es soll in dieser weise bis 10000 aufzählen können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz