Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   im Programm via Handle Klicks ausführen (https://www.delphipraxis.net/152854-im-programm-via-handle-klicks-ausfuehren.html)

1234567890987654321 9. Jul 2010 12:34

im Programm via Handle Klicks ausführen
 
Hallo,
Ich hoffe ich habe den Beitrag richtig gepostet :-)

Also, mein Problem ist:
Ich möchte in einem versteckten Firefox Mausklicks ausführen, aber die maus z.B. in Paint noch benutzen können, ihne das sie verschoben wird.

Code:
  postMessage(h,WM_LBUTTONDOWN,x,y);   sleep(100);
  postMessage(h,WM_LBUTTONUP,x,y);
h beinhaltet hier das Handle von Firefox.
Das ganze funktionirt auch schon soweit, dass ich die maus klicken lassen kann.
allerdings klickt sie immer nur an der X position. So als währe Y null.
ist es aber nicht :-(

s.h.a.r.k 9. Jul 2010 12:38

AW: im Programm via Handle Klicks ausführen
 
Lies dir mal den Beitrag hier durch:
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Du bentzt es leicht falsch.

1234567890987654321 9. Jul 2010 12:40

AW: im Programm via Handle Klicks ausführen
 
Achso, es sagt mir nur ob die Maus gedrückt ist.
Aber warum funktionirts dann im MainMenu von Firefox(Datei,Bearbeiten, usw.)?
Oder wie sollte ich es machen?

himitsu 9. Jul 2010 12:43

AW: im Programm via Handle Klicks ausführen
 
zur Y-Position, welche angeblich tatsächlich 0 ist.
Was für's Empfangen bestimmt ist, stimmt auch beim Senden ... nur andersrum.

http://msdn.microsoft.com/en-us/library/ms645607.aspx

s.h.a.r.k 9. Jul 2010 12:49

AW: im Programm via Handle Klicks ausführen
 
Zitat:

Zitat von 1234567890987654321 (Beitrag 1034517)
Achso, es sagt mir nur ob die Maus gedrückt ist.
Aber warum funktionirts dann im MainMenu von Firefox(Datei,Bearbeiten, usw.)?
Oder wie sollte ich es machen?

Hast du schon mal den Teil bei lParam gelesen?! :gruebel:

Zitat:

lParam

The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.

The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.

1234567890987654321 9. Jul 2010 12:51

AW: im Programm via Handle Klicks ausführen
 
Bin nicht der beste in Englisch.
Hätte nicht jemand einen Code-schnipsel?:oops:

himitsu 9. Jul 2010 12:57

AW: im Programm via Handle Klicks ausführen
 
ein Schnipsel: http://translate.google.de

1234567890987654321 9. Jul 2010 13:01

AW: im Programm via Handle Klicks ausführen
 
Die niedrigen Worts legt die x-Koordinate des Cursors. Die Koordinate ist relativ zur linken oberen Ecke des Client-Bereich.

Der hohe Auftragsbestand Wort Gibt die y-Koordinaten des Cursors. Die Koordinate ist relativ zur linken oberen Ecke des Client-Bereich.

Wie habe ich das zu verstehen?

blackfin 9. Jul 2010 13:05

AW: im Programm via Handle Klicks ausführen
 
*lach* Ich schiess mich ab, google übersetzt ja richtig gut!

Ok, bin ich mal so nett und übersetze das:
Zitat:

The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
Der lParam der Nachricht repräsentiert die X-Koordinate. Die Koordinate ist relativ zur linken oberen Ecke des Fenster-Client-Bereichs.


Zitat:

The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
Der hParam der Nachricht repräsentiert die Y-Koordinate. Die Koordinate ist relativ zur linken oberen Ecke des Fenster-Client-Bereichs.

1234567890987654321 9. Jul 2010 13:07

AW: im Programm via Handle Klicks ausführen
 
Und was ist dann an meinem Code falsch?

himitsu 9. Jul 2010 13:10

AW: im Programm via Handle Klicks ausführen
 
Zitat:

low-order word specifies the x-coordinate
high-order word specifies the y-coordinate
wParam = eine Bitmaske was sonst noch gerückt ist

LParam = X- und Y-Position
> LoWord(LParam) = X
> HiWord(LParam) = Y

Und selbst wenn übersetzungsprogramme nicht perfekt sind ... Folgendes hätte einem auch einen Hinweis geben können, daß mit Y in WParam etwas nicht stimmen kann.
Zitat:

xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);

1234567890987654321 9. Jul 2010 13:28

AW: im Programm via Handle Klicks ausführen
 
postMessage(h,WM_LBUTTONDOWN,x+y,{und was kommt hier hin?});

s.h.a.r.k 9. Jul 2010 13:31

AW: im Programm via Handle Klicks ausführen
 
Du darfst das dich nicht einfach so addieren! Und warum schreibst du das in wParam!? Das gehört doch in lParam rein! Und was du für wParam übergeben musst steht doch auf der Seite.

1234567890987654321 9. Jul 2010 13:33

AW: im Programm via Handle Klicks ausführen
 
So?
postMessage(h,WM_LBUTTONDOWN,MK_LBUTTON, {irgendeine Addition von x u. y});

1234567890987654321 9. Jul 2010 13:58

AW: im Programm via Handle Klicks ausführen
 
Hat keiner auch nur ein winziges stückchen Code?

s.h.a.r.k 9. Jul 2010 14:29

AW: im Programm via Handle Klicks ausführen
 
Du bist echt lustig. Wir sind echt gerne bereit zu helfen, aber ein wenig Eigeninitiative könnte schon da sein...

Ich habe nun nicht mal 20 Sekunden gebraucht (wovon der Großteil für das Laden der Hilfe war) um herauszufinden, wie ich lParam zusammenbaue.
Delphi-Quellcode:
MakeLParam()
(aus der Windows-Unit) übernimmt zwei Parameter: der erste ist für den x-Wert und der zweite von den y-Wert. Nun hast du schon mal lParam.

wParam würde ich zunächst mal mit 0 initialisieren und danach evtl. mit MK_LBUTTON probieren. Warum mit 0?! Du schickst ja schon eine Nachricht, die angibt dass MouseButton XYZ down und dann up ist, ergo ist das kein zusätzlicher Key. Daher glaube ich auch nicht, dass du MK_LBUTTON angeben musst.

So, und was ergibt das dann komplett:

Delphi-Quellcode:
PostMessage(h, WM_LBUTTONDOWN, 0, MakeLParam(x, y));

Was mich interessieren würde: was war daran wirklich so schwer?! Wo lagen die Probleme?!

1234567890987654321 9. Jul 2010 14:36

AW: im Programm via Handle Klicks ausführen
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1034553)
Was mich interessieren würde: was war daran wirklich so schwer?! Wo lagen die Probleme?!

Ja, wenn man nicht weis wo es eine hilfe gibt,
trotzdem Danhe :-)

s.h.a.r.k 9. Jul 2010 14:38

AW: im Programm via Handle Klicks ausführen
 
*hmpf* Wie meinen?! Wieso sollte Google einem nicht helfen können?! :gruebel: Es kommt halt so rüber, als wolltest du das Problem nicht lösen wollen und bei sowas stellen sich eben einige -- verständlicherweise -- stur.

1234567890987654321 9. Jul 2010 18:14

AW: im Programm via Handle Klicks ausführen[gelöst]
 
Danke

s.h.a.r.k 10. Jul 2010 12:46

AW: im Programm via Handle Klicks ausführen
 
Glaubst du ein schwarzes, normales Danke hätte es nicht auch getan?! :wink: Wenn jemand etwas lesen will, dann macht er es weil er will und nicht, weil es rot, groß und fett dargestellt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 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