AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Virtuellen Klick in einem Spiel simulieren
Thema durchsuchen
Ansicht
Themen-Optionen

Virtuellen Klick in einem Spiel simulieren

Ein Thema von tweetymr · begonnen am 29. Mär 2007 · letzter Beitrag vom 23. Apr 2007
Antwort Antwort
Seite 1 von 3  1 23      
tweetymr

Registriert seit: 29. Mär 2007
17 Beiträge
 
#1

Virtuellen Klick in einem Spiel simulieren

  Alt 29. Mär 2007, 10:34
Hi zusammen,
ich weiß das mit dem Klick simulieren ist eigentlich relativ einfach. Habe es auch oft genug verwendet
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
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Virtuellen Klick in einem Spiel simulieren

  Alt 29. Mär 2007, 10:38
such mal nach mouse_event hier Hier im Forum suchenmouse_event oder hier MSDN-Library durchsuchenmouse_event
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
tweetymr

Registriert seit: 29. Mär 2007
17 Beiträge
 
#3

Re: Virtuellen Klick in einem Spiel simulieren

  Alt 29. Mär 2007, 11:19
Sorry, aber irgendwie steh ich grade auf dem schlauch
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:
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;
Aber wenn ich jetzt das ganze mit meiner Klick-VErsion versuche springt der Cursor immer zu der Stelle die ich ihm angegeben hab:
Delphi-Quellcode:
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 gesagt, ich stehe grade so richtig auf dem Schlauch^^
Wie kann ich das mit den Klicks realisieren?
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Virtuellen Klick in einem Spiel simulieren

  Alt 29. Mär 2007, 11:32
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
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
tweetymr

Registriert seit: 29. Mär 2007
17 Beiträge
 
#5

Re: Virtuellen Klick in einem Spiel simulieren

  Alt 29. Mär 2007, 11:40
Zitat von Gruber_Hans_12345:
Bekommste bei der FullScreen Anwendung nicht den Handle auch ganz normal?
Wie meinst du das? oO
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

Schonmal danke für deine Geduld^^
  Mit Zitat antworten Zitat
tweetymr

Registriert seit: 29. Mär 2007
17 Beiträge
 
#6

Re: Virtuellen Klick in einem Spiel simulieren

  Alt 30. Mär 2007, 10:52
ok ich hab hier jetzt was im netz gefunden (hoffe ich zumindest)
Delphi-Quellcode:
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));
Jetzt stellt sich mir nur eine frage: Um was geht es bei MouseInputStruct?
Hab gegooglet aber nich wirklich viel rausgefunden

Bitte um eure Hilfe
  Mit Zitat antworten Zitat
tweetymr

Registriert seit: 29. Mär 2007
17 Beiträge
 
#7

Re: Virtuellen Klick in einem Spiel simulieren

  Alt 1. Apr 2007, 10:54
Will mir hier keiner helfen (außer Gruber_Hans_12345 am anfang)??
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Virtuellen Klick in einem Spiel simulieren

  Alt 1. Apr 2007, 11:35
Hallo, was funktioniert denn nicht? du kannst wohl auch WM_MOUSE* nachrichten senden.
Lukas Erlacher
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: Virtuellen Klick in einem Spiel simulieren

  Alt 1. Apr 2007, 11:50
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.
  Mit Zitat antworten Zitat
tweetymr

Registriert seit: 29. Mär 2007
17 Beiträge
 
#10

Re: Virtuellen Klick in einem Spiel simulieren

  Alt 16. Apr 2007, 13:23
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 14:53 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