![]() |
Tastensimilation an Programm senden
Hallo!
Hab schon die DP durchsucht, aber nichts gefunden, was mir hilft. Ich möchte für meine Schwester ein programm schreiben, das folgende Tastenkombinationen an das Spiel Tropico sendet: Strg+p+e+s+o+s Strg+c+o+n+t+e+n+d+o Strg+r+a+p+i+d+o Dies aber auch nur, wenn man im Spiel z.B. die Taste F9 (F10, F11) drückt. Kann mir jemand helfen? |
Re: Tastensimilation an Programm senden
Du baust dir einen Tastaturhook, der F9/F10 abfängt und entsprechen mit der
![]() ![]() |
Re: Tastensimilation an Programm senden
Kannst du mir auch einen direkten Link geben, wo ich die Unit runterladen kann?
|
Re: Tastensimilation an Programm senden
Zitat:
Eine Hook wäre dafür etwas übertrieben. ![]() Tasten simulieren: ![]() |
Re: Tastensimilation an Programm senden
Hab jetzt SendKeys ausprobiert, komme aber mit senden der Strg-Taste nicht zurecht.
kann mir jemand ein Beispiel geben, wie es mit Strg+p+e+s+o+s funktioniert? |
Re: Tastensimilation an Programm senden
Die richtige Funktion dazu ist keybd_event bzw. SendInput.
Bei keybd_event muessen die ersten beiden Parameter ausgefuellt sein, sonst akzeptiert DirectInput die Tasten nicht. Man sendet natuerlich Ctrl-Down, p-Down, p-Up, e-Down, e-Up, s-Down, s-Up, o-Down, o-Up, s-Down, s-Up, Ctrl-Up |
Re: Tastensimilation an Programm senden
hab jetzt über einen anderen Thread was zu RegisterHotKey gefunden und testwiese folgendes geschrieben:
Delphi-Quellcode:
Wenn jetzt das Programm läuft, und ich uaf die A-Taste drücke passiert nichts.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin RegisterHotKey(self.Handle,0, 0, ord('A')); ; end; procedure TForm1.WMHotKey(var Msg : TWMHotKey); begin if Msg.HotKey = ord('A') then begin showmessage('A'); end; end; procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(Form1.Handle, ord('A')); end; end. Was muss ich noch hinzufügen? |
Re: Tastensimilation an Programm senden
Hi,
Sollte so funktionieren:
Delphi-Quellcode:
private
id1: Integer; procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin if Msg.HotKey = id1 then ShowMessage('Taste A gedrückt !'); end; procedure TForm1.FormCreate(Sender: TObject); begin id1 := GlobalAddAtom('Hotkey1'); RegisterHotKey(Handle, id1, 0, ord('A')); end; procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(Handle, id1); GlobalDeleteAtom(id1); end; |
Re: Tastensimilation an Programm senden
Woll ein bisschen was falschgemacht, beim tippen? :-D
Edit: Jetzt passt's wieder! |
Re: Tastensimilation an Programm senden
FUNKTIONIERT! :thumb:
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr. |
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 by Thomas Breitkreuz