Thema: Delphi SendKey an ein Programm

Einzelnen Beitrag anzeigen

hille

Registriert seit: 19. Mär 2006
100 Beiträge
 
#1

SendKey an ein Programm

  Alt 2. Sep 2006, 16:00
Hi Leute,
ich will mitHilfe von SendKey von meinem Programm aus, das 20 sec lang in dem Spiel die Taste ENTER hintereinander gedrückt wird. Ich habe einen Systemweiten Hotkey registriert, welcher dieses Starten soll. Aber irgendwie klappt es nicht so.

Denn, die EnterTaste wird nur ab und zu mal gedrückt.

Ich habe es mal mit nem Timer und ner Schleife probiert aber es kommt ihrgendwie nicht an.
Hat einer ne Idee wie es gehen könnte?

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DXClass, sendkeys;
...
  private
    { Private-Deklarationen }
    idX: Integer;
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HotKey;
  public
...
implementation

{$R *.dfm}

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if Msg.HotKey = idX then
  if enterdruecken then begin
    enterdruecken:=false; //wenn schon enter gedrückt wird wird aus gestellt
    DXTimer1.Enabled:=false;
  end
  else begin
    enterdruecken:=true; //wenn kein enter gedrückt wird wird an gestellt
    DXTimer1.Enabled:=true;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
const
  MOD_CONTROL = 2;
  VK_X = $58; // oder mit X
begin
//Register HotKey STRG
idX := GlobalAddAtom('HotKeyX');
RegisterHotKey(Handle,idX, MOD_CONTROL, 0); //NUR STRG
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(handle,idX);
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var handle : HWND;
    s : TSendKeys;
begin
handle:=FindWindow(nil,'Vampires Dawn');
if handle<>0 then begin
  s.SendKeysTo('Vampires Dawn',#242);
end;
Erklärung:

Wenn ich die STRG Taste drücke dann startet der Timer und sendet alle paar Millisekunden das die ENTER Taste gedrückt wird.
Wenn ich dann wieder auf STRG klicke stopt der Timer.

Hille
  Mit Zitat antworten Zitat