![]() |
SendInput - koordinaten x/y funtionnieren nicht
Hallo DP,
wenn ich eine mausbewegung nachbilden will benutzte ich ![]() mithilfe folgendes codes:
Delphi-Quellcode:
das funktioniert auch wunderbar, jedoch muss ich den Maus-Cursor mit setcursorpos positionieren.
procedure TForm1.Button2Click(Sender: TObject);
var Inp: TInput; begin setcursorpos(900,350); Inp.Itype := INPUT_MOUSE; Inp.mi.dwFlags := MOUSEEVENTF_RIGHTDOWN; Inp.mi.dx := 900; Inp.mi.dy := 350; Inp.mi.time := 0; Inp.mi.dwExtraInfo := 0; SendInput(1, Inp, SizeOf(Inp)); Inp.Itype := INPUT_MOUSE; Inp.mi.dwFlags := MOUSEEVENTF_RIGHTUP; Inp.mi.dx := 900; Inp.mi.dy := 350; Inp.mi.time := 0; Inp.mi.dwExtraInfo := 0; SendInput(1, Inp, SizeOf(Inp)); end; Eigentlich sollte das auch ohne funtionieren da die x und die y koordinarten ja angegeben wurden, das dies nicht so einfach funktioniert ist ![]() Zitat:
Zitat:
Zitat:
Inp.mi.dwFlags := MOUSEEVENTF_RIGHTDOWN or MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE; entspricht auch kein problem. ich habe schon gegoogelt aber leider weiß ich nicht wie ich Screen.TwipsPerPixelY/Screen.TwipsPerPixelX in Delphi benutzen soll ich hoffe auf eure Hilfe mfg smallsmoker |
Re: SendInput - koordinaten x/y funtionnieren nicht
Was spricht gegen folgendes...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
procedure Delay(ATime:Integer); var Start : integer; begin Start := GetTickCount; repeat Application.ProcessMessages; until abs(GetTickCount) - Start > ATime; end; procedure MouseClick(X, Y:cardinal); var Inp: TInput; Point:TPoint; begin Inp.Itype := INPUT_MOUSE; Inp.mi.dx := 0; Inp.mi.dy := 0; Inp.mi.time := 0; Inp.mi.dwExtraInfo := 0; Point:=Mouse.CursorPos; repeat SetCursorPos(X, Y); Application.ProcessMessages; until (Mouse.CursorPos.X = X) and (Mouse.CursorPos.Y = Y); Inp.mi.dwFlags := MOUSEEVENTF_RIGHTDOWN; SendInput(1, Inp, SizeOf(Inp)); Delay(20); Inp.mi.dwFlags := MOUSEEVENTF_RIGHTUP; SendInput(1, Inp, SizeOf(Inp)); repeat SetCursorPos(Point.X, Point.Y); Application.ProcessMessages; until (Mouse.CursorPos.X = Point.X) and (Mouse.CursorPos.Y = Point.Y); end; begin MouseClick(900, 350); end; |
Re: SendInput - koordinaten x/y funtionnieren nicht
naja, klingt dumm aber ich möchte es eben gerne die maus mit sendinput positionieren :)
und ich habe ja auch eine lösung vorgelegt nur kann ich die nicht verwenden da sie nicht in delphi ist :/ also wenn mir jemand das hier: Zitat:
aber danke für deinen lösungvorschlag mfg smallsmoker |
Re: SendInput - koordinaten x/y funtionnieren nicht
Ich habe die Lösung nun selbst gefunden:
Delphi-Quellcode:
dieser Code würde einen click mit der rechten maustaste an den koordinaten (x: 900 | y: 350) ausführen.
procedure Tfrmmain.btnMouse_ClickClick(Sender: TObject);
var Inp: TInput; begin Inp.Itype := INPUT_MOUSE; Inp.mi.dwFlags := MOUSEEVENTF_RIGHTDOWN or MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE; Inp.mi.dx := round(900 * (65535 / Screen.Width)); Inp.mi.dy := round(350 * (65535 / Screen.Height)); Inp.mi.time := 0; Inp.mi.dwExtraInfo := 0; SendInput(1, Inp, SizeOf(Inp)); Inp.Itype := INPUT_MOUSE; Inp.mi.dwFlags := MOUSEEVENTF_RIGHTUP or MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE; Inp.mi.dx := round(900 * (65535 / Screen.Width)); Inp.mi.dy := round(350 * (65535 / Screen.Height)); Inp.mi.time := 0; Inp.mi.dwExtraInfo := 0; SendInput(1, Inp, SizeOf(Inp)); end; mfg smallsmoker p.s.: sry für den doppelpost |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz