Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mausklick nach einem Prozessende automatisch machen? (https://www.delphipraxis.net/100153-mausklick-nach-einem-prozessende-automatisch-machen.html)

spox 23. Sep 2007 16:29


Mausklick nach einem Prozessende automatisch machen?
 
Hallo, ich bins wieder :) !
Ich will jetzt einen Mausklick simulieren. Dazu habe ich diesen Code
Delphi-Quellcode:
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
benutzt. Die Variablen habe ich natürlich noch belegt.
Doch es will trotzdem nicht.
Was ich überhaupt vor habe:
Ich möchte ein Auto-Login-Tool für ein Online-Spiel entwickeln. Dazu wählt man zu erst den Pfad aus und gibt seine Logindaten ein. Daraufhin drückt man auf Starten und das Spiel startet. Es öffnet sich ein Launcher, der News anzeigt und den Clienten auf Updates überprüft. Wenn das fertig ist, taucht ein Startbutton auf. Diesen will ich automatisch anklicken lassen. Das Starten des Programms funktioniert einwandfrei. Soweit so gut. Doch der Mausklick wird nicht ausgelöst.
Kann man die Mausklickaktion auch ohne einen Timer realisieren? Ich meine, ob man Klicken lassen kann, wenn der Startbutton auftaucht. Bis dieser nämlich da ist, kann manchmal mehr und manchmal weniger Zeit vergehen, aufgrund der Internetanbindung. Also wäre ein Timer nicht ideal.

Puhhh ... soviel Text für ein so kleines Problem :xmas:

lbccaleb 23. Sep 2007 16:41

Re: Mausklick nach einem Prozessende automatisch machen?
 
also mit
Delphi-Quellcode:
SetCursorPos(x, y);
kannst du die maus an einem bestimmt punkt setzen und mausklick, da muss ich auch erst mal wieder schauen....

edit:

probier mal das:

Delphi-Quellcode:
SendMessage(Handle, WM_LBUTTONDBLCLK, 10, 10); //für doppelklick
SendMessage(Handle, WM_LBUTTONDOWN, 10, 10); //für linksklick
SendMessage(Handle, WM_RBUTTONDOWN, 10, 10); //für rechtsklick
handle, musst du dein fenster handle angeben

spox 23. Sep 2007 16:51

Re: Mausklick nach einem Prozessende automatisch machen?
 
Was ist ein Fensterhandle ? :gruebel:

lbccaleb 23. Sep 2007 16:55

Re: Mausklick nach einem Prozessende automatisch machen?
 
Zitat:

Zitat von spox
Was ist ein Fensterhandle ? :gruebel:

das ein integer wert der auf dein fenster zeigt wo der klick simuliert werden soll, z.b.: form1.handle!!


hier ist auch noch was bei den schweizern:
mausklick simulieren

spox 23. Sep 2007 17:03

Re: Mausklick nach einem Prozessende automatisch machen?
 
Genau das was bei den Schweizer steht hab ich ja gemacht. Nur leider geht es trotzdem nicht :(
Und der Fensterhandle ist wohl unnötig bei mir, da es nicht um eine Fenster bei meinem Programm geht, sondern um einen Mausklick außerhalb meines Programms. Oder hab ich das mit dem Handle falsch verstanden? :gruebel:

lbccaleb 23. Sep 2007 17:11

Re: Mausklick nach einem Prozessende automatisch machen?
 
Zitat:

Zitat von spox
Genau das was bei den Schweizer steht hab ich ja gemacht.
Und der Fensterhandle ist wohl unnötig bei mir, da es nicht um eine Fenster bei meinem Programm geht, sondern um einen Mausklick außerhalb meines Programms. Oder hab ich das mit dem Handle falsch verstanden? :gruebel:

nee schon richtig, nur wenn es nicht dein fenster ist musst du das fensterhandle angeben von dem fenster auf welchem du den klick simulieren willst, das kannst du rausbekommen mit:

Delphi-Quellcode:
FindWindow('GenericClass', 'hier den fensternamen des fensters eintragen, wo du den klick emulieren willst');
das müsste eigentlich so gehen :gruebel:

spox 23. Sep 2007 17:25

Re: Mausklick nach einem Prozessende automatisch machen?
 
Soll ich dafür eine neue Prozedur machen?

lbccaleb 23. Sep 2007 17:28

Re: Mausklick nach einem Prozessende automatisch machen?
 
Zitat:

Zitat von spox
Soll ich dafür eine neue Prozedur machen?


also müsste dann ungefähr so aussehen (bsp.: Internet Explorer):


Delphi-Quellcode:
SendMessage(FindWindow('GenericClass', 'Internet Explorer'), WM_LBUTTONDOWN, 10, 10);

spox 23. Sep 2007 17:42

Re: Mausklick nach einem Prozessende automatisch machen?
 
hmmm ... Also es funktioniert immer noch nicht. Was mache ich falsch?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 sro_starten;
 Sleep (7000);
 SendMessage(FindWindow('GenericClass', 'Silkroad Online Launcher'), WM_LBUTTONDBLCLK, 754, 516);
 //Timer1.Enabled := true;
end;
Beziehen sich die Koordinaten auf das Handlefenster, oder auf den gesamten Bildschirm?

lbccaleb 23. Sep 2007 17:51

Re: Mausklick nach einem Prozessende automatisch machen?
 
Zitat:

Zitat von spox
hmmm ... Also es funktioniert immer noch nicht. Was mache ich falsch?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 sro_starten;
 Sleep (7000);
 SendMessage(FindWindow('GenericClass', 'Silkroad Online Launcher'), WM_LBUTTONDBLCLK, 754, 516);
 //Timer1.Enabled := true;
end;
Beziehen sich die Koordinaten auf das Handlefenster, oder auf den gesamten Bildschirm?

das mit den koordinaten kann ich dir leider auch nicht genau sagen!!

aber als ersten schritt solltest du versuchen das fenster zu finden auf dem du den klick machen willst, also z.b:

Delphi-Quellcode:
if FindWindow('GenericClass', 'Silkroad Online Launcher') <> 0 then showmessage('fenster gefunden');
das würde dir zumindest erstmal sagen ob er das fensterhandle findet... weil wenn nicht dann ist ja schon was ander beschriftung falsch, also an 'Silkroad Online Launcher'


mal ganz neben bei, ist das ein programm oder eine iseite oder was ist das überhaupt??


edit:

vllt. schickst/postest du mal ein screenshot von dem programm, damit wir uns (im wahrsten sinne des wortes) nen bild von machen können ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:47 Uhr.
Seite 1 von 2  1 2      

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