Einzelnen Beitrag anzeigen

FrankTheGhost

Registriert seit: 6. Mär 2008
3 Beiträge
 
Delphi 4 Standard
 
#1

Mausklicks und ENTER gedrückt halten

  Alt 6. Mär 2008, 01:04
Hi @ all =),

mein Kumpel spielt Sword of the New World und er hat mich gebeten ein Programm dafür zu schreiben, welches er startet und dann für ihn Linksklickt und ENTER gedrückt hält. Vorher bewegt er den Mauszeiger über den Charakter(Position des Mauszeigers ist die Zielposition des Klicks).

Sword of the New World ist minimiert und mein Programm soll irgendwo daneben auf dem Bildschirm angezeigt werden.


Folgende Punkte habe ich bereits realisiert:

- Mein Programm ist immer im Vordergrund
- x- und y-Koordinate des Mauszeigers werden in Echtzeit ausgelesen (Auslesung der Pixel)
- Anzahl der Klicks wird aus Edit1 ausgelesen und in Klicks abgespeichert
- x- und y-Koordinate werden nach Klick auf Start in x1 und y1 abgespeichert+ Mauszeiger wird dorthin gesetzt

Soooo..jetzt zu meinem Problem:

Ich will ja dass er genau die Anzahl der Linksklicks die ich eingebe auch klickt und dass er Enter währenddessen gedrückt hält..nur tut er das nicht...bitte gebt mir Tipps wie ich den letzten Teil umschreiben muss damit genau das auch funktioniert.

Dürfte für euch ja kein Problem sein, aber für mich, weil ich noch ein blutiger Anfänger bin ^^
Und bitte, gebt mir am besten Beispiele oder Quellcodeteile, da ich MS Vista habe und deshalb die Delphi-Hilfe nicht benutzen kann :-!

Hier mein Quellcode:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, QuickRpt, Qrctrls, Buttons, jpeg;
type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Timer2: TTimer;
    Start: TButton;
    Vordergrund: TButton;
    prevx: TLabel;
    prevy: TLabel;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    QRRichText1: TQRRichText;
    Image1: TImage;
    procedure VordergrundClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure StartClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  MausPos: TPoint;
  x: integer;
  y: integer;
  i: integer;
  Klicks: integer;
implementation

{$R *.DFM}


procedure TForm1.VordergrundClick(Sender: TObject);
begin
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
qrrichtext1.color:= clblack;
qrrichtext1.font.color:= clwhite;
qrrichtext1.frame.color:= clwhite;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
GetCursorPos(MausPos);
x:= MausPos.x;
y:= MausPos.y;
end;


procedure TForm1.StartClick(Sender: TObject);
var x1: integer;
    y1: integer;
begin//Anfang Prozedur Start

if edit1.text= 'then showmessage('DAVID!!! Ich hab kp was du von mir willst... xD') else
begin//Anfang if-then-else Schleife
x1:=x;
y1:=y;
SetCursorPos(x1,y1);
Klicks:= strtoint(edit1.text);
i:= 0;
    repeat
    keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN,0), 0, 0);
    Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN,0), KEYEVENTF_KEYUP, 0);
    i:=i+1;
    until i=Klicks;
end//Ende if-then-esle Schleife

end;//Ende Prozedur Start

end.