Einzelnen Beitrag anzeigen

kerkerst

Registriert seit: 21. Feb 2007
Ort: Stodo
4 Beiträge
 
#4

AW: Emulierter Mausklick bugt

  Alt 3. Sep 2010, 09:52
Danke für deine schnelle Antwort. Was verstehst du unter "realistischer" Zeitdifferenz? Wie gesagt, hab schon alle möglichen Werte zwischen 20 und 500ms zwischen den Mouse_events mitm Application.ProcessMessage "gefüllt". Und das direkt hintereinander senden funktioniert. Meine TestApp macht ja nichts anderes.

Hier mal der Code der TestApp, mit der es einwandfrei funktioniert.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  w,h:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile('C:\Users\RaZoR\Desktop\Unbenannt.bmp');
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Label1.Caption:='X: '+inttostr(x);
w:=x;
Label2.Caption:='Y: '+inttostr(y);
h:=y;
end;

procedure TForm1.Image1Click(Sender: TObject);
var xFactor:real;
    yFactor:real;
    MousePoint:TPoint;
    xstor,ystor:integer;
    xRelation,yRelation:real;
begin
xFactor:=Image1.Picture.Width / Image1.Width;
yFactor:=Image1.Picture.Height / Image1.Height;
xRelation:=Screen.Width / Image1.Picture.Width;
yRelation:=Screen.Height / Image1.Picture.Height;
Label3.Caption:='XFaktor: '+floattostr(xfactor);
Label4.Caption:='yFaktor: '+floattostr(yfactor);
GetCursorPos(MousePoint);
xStor:=MousePoint.X;
yStor:=MousePoint.Y;
SetCursorPos(Round(w*xFactor*xRelation),Round(h*yFactor*yRelation));
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
SetCursorPos(xStor,yStor);
end;

end.
Wie gesagt, funktionieren tut es in dem moment nicht, wenn ich den Befehl zum setzen der Mausposition und dann klicken an den Remote-PC schicke (ausser wenn das Programm aufm RemotePC als Admin ausgeführt wird, oder ich es via Delphi einzeln durchsteppe).
  Mit Zitat antworten Zitat