![]() |
Virtuellen Klick in einem Spiel simulieren
Hi zusammen,
ich weiß das mit dem Klick simulieren ist eigentlich relativ einfach. Habe es auch oft genug verwendet :P Doch ich habe es noch nicht mit virtuellen Klicks geschafft :? Was meine Frage angeht: Wie bekomme ich einen virtuellen Klick in einer Full Screen-Anwendung simuliert, von der ich keinerlei Handels oder sonstiges kenne? Bitte helft mir :( |
Re: Virtuellen Klick in einem Spiel simulieren
|
Re: Virtuellen Klick in einem Spiel simulieren
Sorry, aber irgendwie steh ich grade auf dem schlauch :gruebel:
Ich will den Klick virtuell in einer anderen Anwendung erzeugen. Soll heißen: ich mache etwas an meinem Computer und im hintergrund wird der Klick in dem Fenster erzeugt, obwohl ich mit der Maus keine Ausschweifungen mache. Mit den Tastendrücken funktioniert es einwandfrei.
Delphi-Quellcode:
Aber wenn ich jetzt das ganze mit meiner Klick-VErsion versuche springt der Cursor immer zu der Stelle die ich ihm angegeben hab:
procedure TForm1.Timer1Timer(Sender: TObject);
var W: HWnd; begin laenge := length(Edit1.Text); lol := Edit1.Text; W := FindWindow(nil,'Anwendung'); Windows.SetFocus(W); if W <> 0 then begin PostMessage(W, wm_KeyDown, VK_Tab, 0); PostMessage(W, wm_KeyUp, VK_Tab, 0); for i := 1 to laenge do begin PostMessage(W, wm_CHAR, ord(lol[i]),0); end; for i := 1 to 3 do begin PostMessage(W, wm_KeyDown, VK_Return, 0); PostMessage(W, wm_KeyUp, VK_Return, 0); if i <> 3 then sleep(2000); end; end; end;
Delphi-Quellcode:
Wie gesagt, ich stehe grade so richtig auf dem Schlauch^^
procedure TForm1.Timer2Timer(Sender: TObject);
var X,Y:Integer; W: HWnd; begin W := FindWindow(nil,'Anwendung'); Windows.SetFocus(W); if W <> 0 then begin X := 770; Y := 636; SetCursorPos(X, Y); mouse_event(MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, X, Y, 0, 0); sleep(13000); end; end; Wie kann ich das mit den Klicks realisieren? |
Re: Virtuellen Klick in einem Spiel simulieren
axo, die anwendung ist im hintergrund ... dann gehts mit dem mouse_event nicht, das simuliert die maus, und dazu muß die anwendung im vordergrund sein.
ich glaube wenn die anwendung im hintergrund ist, und du keinen Handle davon hast, kannste keinen Klick simulieren. Bekommste bei der FullScreen Anwendung nicht den Handle auch ganz normal? Wenn du den Handle hast, kannste probieren die MouseEvents per PostMessage zu senden (wie du es mit den Key Events gemacht hast) ... kommt halt dann auch auf die Anwendung drauf an, wie, ob und auf welche Messages die dann reagiert |
Re: Virtuellen Klick in einem Spiel simulieren
Zitat:
Ich weiß nicht ob ich das Fenster Handle habe... is das nicht das unten bei den Tasks?^^ Dann hätte ich es Wie könnte ich das dann machen? mir fällt grade rein garnix ein :cry: Schonmal danke für deine Geduld^^ |
Re: Virtuellen Klick in einem Spiel simulieren
ok ich hab hier jetzt was im netz gefunden (hoffe ich zumindest) :roll:
Delphi-Quellcode:
Jetzt stellt sich mir nur eine frage: Um was geht es bei MouseInputStruct? :oops: :lol:
MouseInputStruct.dx := MCord.X;
MouseInputStruct.dy := MCord.Y; MouseInputStruct.mouseData := 0; MouseInputStruct.dwFlags := MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN; MouseInputStruct.time := 0; MouseInputStruct.dwExtraInfo := 0; InputStruct.Itype := INPUT_MOUSE; InputStruct.mi := MouseInputStruct; si := SizeOf(InputStruct); SendInput(1,InputStruct,si); MouseInputStruct.dx := MCord.X; MouseInputStruct.dy := MCord.Y; MouseInputStruct.mouseData := 0; MouseInputStruct.dwFlags := MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP; MouseInputStruct.time := 0; MouseInputStruct.dwExtraInfo := 0; InputStruct.Itype := INPUT_MOUSE; InputStruct.mi := MouseInputStruct; SendInput(1,InputStruct,SizeOf(InputStruct)); Hab gegooglet aber nich wirklich viel rausgefunden Bitte um eure Hilfe :wall: |
Re: Virtuellen Klick in einem Spiel simulieren
Will mir hier keiner helfen (außer Gruber_Hans_12345 am anfang)?? :cry: :cry: :cry: :wiejetzt:
|
Re: Virtuellen Klick in einem Spiel simulieren
Hallo, was funktioniert denn nicht? du kannst wohl auch WM_MOUSE* nachrichten senden.
|
Re: Virtuellen Klick in einem Spiel simulieren
Es liegt im wesentlichen daran das du dich nicht ausdruecken kannst.
Eine Full Screen Anwendung (vermutlich DirectX) liegt ueblicherweise nicht im Hintergrund. Einer im Hintergrund stehenden Anwendung Mausklicks per Message zu senden ist ist problematisch, da mit einem Mausklick ueblicherweise der Fokus wechselt. Es kann gut sein das das die Anwendung nicht verkraftet oder ungefragt in den Vordergrund kommt. mouse_event generiert ein Mausereignis als ob es von der Maus kommt. |
Re: Virtuellen Klick in einem Spiel simulieren
Sorry das ich mich so lange nicht mehr gemeldet hab :p
naja, mit der methode die ich am anfang gepostet hab, kann ich auf jeden fall schonmal zeichen an das Spiel schicken. Auch WÄHREND dessen ich was anderes mache (also das fenster im hintergrund läuft) Nur irgendwie will das nicht mit der mouse funktionieren. Wenn ich mich nicht klar genug ausgedrückt habe, hier nochmal meine Bitte: Wie kann ich die mouse virtuell bewegen und klicken lassen, obwohl das fenster nicht im vordergrund ist? denn mit Keys hab ichs schon hinbekommen.... Hoffe das ist einleuchtender^^ Und entschuldigung das ich euch so viel zeit koste :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz