AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SendKey an ein Programm

Ein Thema von hille · begonnen am 2. Sep 2006 · letzter Beitrag vom 2. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
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
Benutzerbild von konda
konda

Registriert seit: 20. Dez 2005
253 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: SendKey an ein Programm

  Alt 2. Sep 2006, 16:32
Zitat:
Denn, die EnterTaste wird nur ab und zu mal gedrückt.
Das heißt sie wird in unregelmäßigen abständen gedrückt oder?
Wenn das zutrifft könnte es an der Ungenauigkeit von TTimer liege. Versuchs dann mal mit dem DXTimer.
"Nichts ist schwieriger als den Gedankengang eines anderen nachzuvollziehen"

Gruß Konda
  Mit Zitat antworten Zitat
hille

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

Re: SendKey an ein Programm

  Alt 2. Sep 2006, 16:37
Hi konda,

ich benutze den DXTimer!
Kann es daran liegen, das ich das Interval zu klein habe? ( 1 Millisekunde)
Oder das mein Programm nicht weiterläuft, wenn das Spiel den Fokus hat?


Hille
  Mit Zitat antworten Zitat
Benutzerbild von konda
konda

Registriert seit: 20. Dez 2005
253 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: SendKey an ein Programm

  Alt 2. Sep 2006, 16:55
müsste das in Zeile 24 deines Codes nicht
DXTimer1.Enabled:=true; heißen und nicht
DXTimer1.Enabled:=false; ?
"Nichts ist schwieriger als den Gedankengang eines anderen nachzuvollziehen"

Gruß Konda
  Mit Zitat antworten Zitat
hille

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

Re: SendKey an ein Programm

  Alt 2. Sep 2006, 17:03
Oh ganz vergessen. Das war nur für die Versuchszwecke mit der Schleife ausgeschalten.
Danke!


Aber wegen den anderen Sachen, haste da ne Ahnung!

Hille
  Mit Zitat antworten Zitat
Benutzerbild von konda
konda

Registriert seit: 20. Dez 2005
253 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: SendKey an ein Programm

  Alt 2. Sep 2006, 17:11
ich kenn mich in diesem bereich jetzt nicht so genau aus, aber ich könnte mir vorstellen, dass das programm einfach mit den vielen simulierten tastenanschlägen überlastet ist.

Versuch deshalb mal die Nachricht mir postmessage() zu versenden. Soweit ich weiß sollte diese Funktion eine Überlastung verhindern oder stell den Intervall des Timers mal auf 3 sec oder länger, um zu prüfen ob das Programm tatsächlich überlastet ist oder der Fehler wo anders liegt.
"Nichts ist schwieriger als den Gedankengang eines anderen nachzuvollziehen"

Gruß Konda
  Mit Zitat antworten Zitat
hille

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

Re: SendKey an ein Programm

  Alt 2. Sep 2006, 17:17
Ich versuche es mal.
Aber mit dem Interval runterstellen, dann könnte ich es ja auch selber machen, was ich vorhabe.
Ich habe mich bei dem Spiel nähmlich ein bissle festgefahren und nun komme ich nur weiter, in dem ich gegen einen Armdrücken mache und da muss man immer wieder ENTER drücken. Und ich muss noch ungefähr 70 mal gegen den Antreten .
Naja ich schaue mal.

Danke für die Hilfe, melde mich falls ich wieder Hilfe brauche!

Hille
  Mit Zitat antworten Zitat
Benutzerbild von konda
konda

Registriert seit: 20. Dez 2005
253 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: SendKey an ein Programm

  Alt 2. Sep 2006, 17:22
Das du eine höheren Intervall einstellen sollst, soll doch nur klären ob das Problem beim Code liegt oder ob das Programm überlastet ist. Also die Fehlerquellen einzuschrenken.
"Nichts ist schwieriger als den Gedankengang eines anderen nachzuvollziehen"

Gruß Konda
  Mit Zitat antworten Zitat
hille

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

Re: SendKey an ein Programm

  Alt 2. Sep 2006, 17:41
Also am Interval liegt es nicht!
Und welche Parameter muss ich PostMessage übergeben?

Hille
  Mit Zitat antworten Zitat
hille

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

Re: SendKey an ein Programm

  Alt 2. Sep 2006, 17:46
Habe was gefunden zu PostMessage.
Wenn du jetzt was schon geschrieben hast, t´schuldigung.
Aber DANKE. Ich probiere es jetzt mal aus!

Hille
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 Uhr.
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