Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tastensimilation an Programm senden (https://www.delphipraxis.net/31679-tastensimilation-programm-senden.html)

maximus Caesar 12. Okt 2004 15:26


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?

Dax 12. Okt 2004 15:30

Re: Tastensimilation an Programm senden
 
Du baust dir einen Tastaturhook, der F9/F10 abfängt und entsprechen mit der Hier im Forum suchenSendkeys-Unit von Hier im Forum suchenKen Henderson die Tasten sendet.

maximus Caesar 12. Okt 2004 15:35

Re: Tastensimilation an Programm senden
 
Kannst du mir auch einen direkten Link geben, wo ich die Unit runterladen kann?

toms 12. Okt 2004 15:47

Re: Tastensimilation an Programm senden
 
Zitat:

Du baust dir einen Tastaturhook
Hi,

Eine Hook wäre dafür etwas übertrieben.
Hier im Forum suchenRegisterHotkey() tuts auch.


Tasten simulieren:
http://www.swissdelphicenter.ch/de/showcode.php?id=220

maximus Caesar 12. Okt 2004 16:05

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?

Robert Marquardt 12. Okt 2004 16:11

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

maximus Caesar 12. Okt 2004 16:21

Re: Tastensimilation an Programm senden
 
hab jetzt über einen anderen Thread was zu RegisterHotKey gefunden und testwiese folgendes geschrieben:

Delphi-Quellcode:
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.
Wenn jetzt das Programm läuft, und ich uaf die A-Taste drücke passiert nichts.
Was muss ich noch hinzufügen?

toms 12. Okt 2004 16:30

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;

maximus Caesar 12. Okt 2004 16:34

Re: Tastensimilation an Programm senden
 
Woll ein bisschen was falschgemacht, beim tippen? :-D

Edit: Jetzt passt's wieder!

maximus Caesar 12. Okt 2004 16:40

Re: Tastensimilation an Programm senden
 
FUNKTIONIERT! :thumb:

Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 Uhr.
Seite 1 von 2  1 2      

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