AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Mausklick nach einem Prozessende automatisch machen?
Thema durchsuchen
Ansicht
Themen-Optionen

Mausklick nach einem Prozessende automatisch machen?

Ein Thema von spox · begonnen am 23. Sep 2007 · letzter Beitrag vom 23. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#1

Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 16:29
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
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 16:41
also mit 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
Martin
  Mit Zitat antworten Zitat
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#3

Re: Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 16:51
Was ist ein Fensterhandle ?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 16:55
Zitat von spox:
Was ist ein Fensterhandle ?
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
Martin
  Mit Zitat antworten Zitat
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#5

Re: Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 17:03
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?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 17:11
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?
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:

FindWindow('GenericClass', 'hier den fensternamen des fensters eintragen, wo du den klick emulieren willst'); das müsste eigentlich so gehen
Martin
  Mit Zitat antworten Zitat
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#7

Re: Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 17:25
Soll ich dafür eine neue Prozedur machen?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 17:28
Zitat von spox:
Soll ich dafür eine neue Prozedur machen?

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


SendMessage(FindWindow('GenericClass', 'Internet Explorer'), WM_LBUTTONDOWN, 10, 10);
Martin
  Mit Zitat antworten Zitat
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#9

Re: Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 17:42
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?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Mausklick nach einem Prozessende automatisch machen?

  Alt 23. Sep 2007, 17:51
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:

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
Martin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:32 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