Send Keys - A und B gleichzeitig drücken?
lima-city → Forum → Programmiersprachen → Delphi & Pascal
abc
bestimmte aktion
buchstabe
editor
formular
gruss
job
key
kleines testprogramm
kurzem zeitraum
meinung
message
normalen tasten
recht
sender
sondertaste
tasten
thematik
umgekehrt hast
zeitraum
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi! Ich hab' auch mal ein bisschen gegoogelt, und nichts brauchbares gefunden. Was ich mir so nach und nach gedacht habe: geht das überhaupt? Ich habe nämlich auch umgekehrt (also zum Abfragen) nur Routinen gefunden, die die "Sondertasten" wie Ctrl, Shift (links und rechts), ... abfragen können als zweiten Tastendruck!?
-
ja, ich weiss, z.B. +(abc) oder so. Aber ich muss nicht shift dazu drücken...
Gefunden hab ich auch nix, ich glaub auch es ist nicht möglich :( -
Zwei Buchstaben gleichzeitig drücken funktioniert nicht.
Öffne mal den Editor und probier gleichzeitig ein A und ein B zu schreiben - Das geht auch nicht, wie denn auch? Was soll das eigentlich bringen?
Du kannst nur Sondertasten (Ctrl, Shift, Alt) mit normalen Tasten kombinieren. -
Aber im Computerspiel, für das ich ein macro schreiben will, gehen 2 Buchstaben gleichzeitig und müssen gedrückt werden um eine bestimmte Aktion durchzuführen.
-
Ich bin mir sicher, dass das nicht geht.
Das Spiel wertet das vielleicht so aus, wenn innerhalb von einem kurzem Zeitraum (unter einer Sekunde) zwei Buchstaben gedrückt werden (A und B), dann wird die Aktion ausgeführt. Das ist dann fast gleichzeitig. -
ich würd auch sagen das geht eher nich... glaube dafür ist delphi nich soo gut... spiele programmierst du ja auch nich grade mit delphi^^
-
Das Teil dürfte über Key Up und Key Down Routinen laufen. Wenn in dem und dem Zeitraum ein Keydown der bedien Tasten ist, und sie erst dannach wieder ein KeyupEvent senden nimmt das Programm das als gleichzeitig an.
-
Das Teil dürfte über Key Up und Key Down Routinen laufen. Wenn in dem und dem Zeitraum ein Keydown der bedien Tasten ist, und sie erst dannach wieder ein KeyupEvent senden nimmt das Programm das als gleichzeitig an.
Ich revidiere meine Meinung, die ich weiter oben kundgetan habe!
Hab' mal ein kleines Testprogramm geschrieben, da ich nun einen ähnlich Fall zu bewältigen habe. Gib eine Edit- und 2 Labelkomponenten auf ein Formular, und lege die entsprechenden Event-Routinen an:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 65 then begin Label1.Caption := 'a ist gedrückt'; Label1.Color := RGB(00, $FF, 00); end; if Key = 89 then begin Label2.Caption := 'y ist gedrückt'; Label2.Color := RGB(00, $FF, 00); end; Key := 0; Edit1.Clear; end; procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 65 then begin Label1.Caption := 'a ist nicht gedrückt'; Label1.Color := RGB($FF, 00, 00); end; if Key = 89 then begin Label2.Caption := 'y ist nicht gedrückt'; Label2.Color := RGB($FF, 00, 00); end; end; procedure TForm1.FormShow(Sender: TObject); begin Label1.Caption := 'a ist nicht gedrückt'; Label1.Color := RGB($FF, 00, 00); Label2.Caption := 'y ist nicht gedrückt'; Label2.Color := RGB($FF, 00, 00); end;
Ich denke, das ist genau das, was du suchst!
-
Ähhh, nein?
Ich will nicht abfragen, ob zwei keys gedrückt sind, ich will 2 keys drücken lassen mit programm ohne tastatur.
Ich hab nie gesagt ich will ein game machen. Ich zitiere mich selbst nochmal:
Aber im Computerspiel, für das ich ein macro schreiben will, gehen 2 Buchstaben gleichzeitig und müssen gedrückt werden um eine bestimmte Aktion durchzuführen.
Im Computerspiel (das schon besteht und nicht von mir ist!!!) will ich ein macro (ich hofe ihr wisst was das ist. Das automatisiert Abläufe, zum Beispiel im MMORPG irgend einen job oder so) schreiben. -
Ich will nicht abfragen, ob zwei keys gedrückt sind, ich will 2 keys drücken lassen mit programm ohne tastatur.
Tschuldigung, wollte dir nicht bei was helfen, was du gar nicht willst! ;)
Aber mal umgekehrt: Hast du schon mal versucht, deine Tastendrücke nicht mittels Sendkey zu übermitteln, sondern indem du andere Messages sendest, wie eben auch WM_KEYDOWN, WM_KEYPRESS, WM_KEYUP?? Immerhin kann man ja so überprüfen, ob \"mehr als eine Taste\" gedrückt ist. Wieso soll das Drücken selbst nicht umgekehrt genau so funktionieren?
-
Exakt.
Deshalb habe ich dir ja geschrieben, wie meiner Meinung nach die Routinen funktionieren. Damit du dir ein Bild davon machen und einen Lösungsweg suche kannst.
Botprogrammierung und ähnliches sind eben recht kompliziert, wenn man nicht weiß, wie die Programme arbeiten. Kannst ja versuchen irgendwo den Quelltext zu ziehen und die KeyRoutinen durchzublicken. -
soweit ich weis, geht das mit Pascal und Delphi nicht.
-
Wie willst du das beurteilen, wenn du die Routinen nicht kennst?!
Außedem knent meinse wissens nach keine Sprache eine vorgefertigte Routine, um zwe Tasten gleichzeitig zu drücken, alleine schon, weil keine heutige Tastatur es unterstützt!
Wie gesagt ist es für soche Thematiken imemr wichtig das Backend dahinter zu kennen, woher soll man sonst wissen, wie man das Problem angehen muss? -
Also, wenn ich das Drücken von 2 Tasten simulieren will, dann mache ich das so:
Keybd_Event(17,0,0,0); // Taste drücken CTRL Keybd_Event(9,0,0,0); // Taste drücken TAB Keybd_Event(9,0,KEYEVENTF_KEYUP,0); // Taste wieder loslassen Keybd_Event(17,0,KEYEVENTF_KEYUP,0); // Taste wieder loslassen
damit schaltet mein Programm zuverlässig von einem Tab des ferngesteuerten Browsers zum nächsten.
Hoffe, das hilft,
limonero
-
Eventuell hilft auch PostMessage noch, braucht soweit ich gerade weiß ein Handle und eine Message ;)
Euer LDer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage