Delphi-PRAXiS

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 auf Hintergrundfenster simulieren (https://www.delphipraxis.net/134399-mausklick-auf-hintergrundfenster-simulieren.html)

eagle616 21. Mai 2009 11:48


Mausklick auf Hintergrundfenster simulieren
 
Hi

Themen zu simulierten Mausklicks gibt es ja schon zu genüge aber ich würde gerne einen Masuklick auf eine bestimmte position in einem Fenster simulieren, das nicht sichtbar ist.
Am besten wäre also wenn nur eine message gesendet wird, ohne dass sich der Mauszeiger bewegt

Geht das überhaupt und wenn ja weiß jemand wie?

brechi 21. Mai 2009 11:56

Re: Mausklick auf Hintergrundfenster simulieren
 
sollte über SendMessage mittels WM_LBUTTONDOWN funktionieren

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

eagle616 21. Mai 2009 12:19

Re: Mausklick auf Hintergrundfenster simulieren
 
Gut ich habe jetzt gefunden:

SendMessage(WM_LBUTTONDOWN,wparam,lparam);

aber ich möchte ja auf eine koordinate klicken da schrieb jemand hier

das ginge in etwa so : lParam = int(short(y) << 16) + short(x);

aber ich weiß jetzt nicht was ich damit anfangen soll, denn was soll << sein.
Und wenn ich das wegmache und die Koordinaten eingebe passiert nichts.

Satty67 21. Mai 2009 12:23

Re: Mausklick auf Hintergrundfenster simulieren
 
mit << 16 könnte shl 16 gemeint sein

eagle616 21. Mai 2009 19:23

Re: Mausklick auf Hintergrundfenster simulieren
 
Also vielen Dank erstmal ich habe jetzt das:

Code:
var wnd:Hwnd;
begin
  wnd:=findwindow(nil,'Fenster');
  //GetWindowRect(
  if wnd<>0 then
  begin
    sendmessage(wnd,WM_LButtonDown,0, 254 + 243 shl 16);
    sendmessage(wnd,WM_LButtonUp,0,254 + 243 shl 16);
  end else
    showmessage('not found');
end;
254 und 243 sind x und y aber aus irgendeinem Grund klickt er nicht.
Ist da noch was falsch?

Satty67 21. Mai 2009 19:32

Re: Mausklick auf Hintergrundfenster simulieren
 
Der cast auf ein 32bit Wert, der im beispiel noch mit drin ist, sonst schiebst du ins Leere

oder
Delphi-Quellcode:
sendmessage(wnd,WM_LButtonUp,0,254 + (243 * (256*256)));
€: ups :oops:

eagle616 21. Mai 2009 19:52

Re: Mausklick auf Hintergrundfenster simulieren
 
JA! super danke das geht schonmal.
Das Problem ist jetzt nur, wenn ich das fenster minimiere dann klickt er ganz wo anders hin.

Yakumo500 22. Mai 2009 15:30

Re: Mausklick auf Hintergrundfenster simulieren
 
Hi,

Vllt musst du die Mausposition neu setzen wenn du das Fenster minimiert hast
so:

Delphi-Quellcode:
SendMessage(wnd,WM_MouseMove,0,254 + 243 shl 16);

eagle616 23. Mai 2009 08:46

Re: Mausklick auf Hintergrundfenster simulieren
 
Aber er soll ja die Maus nicht bewegen sondern sie an der Stelle lassen, damit der Benutzer noch was anderes machen kann und das funktioniert ja auch nur wenn das Fenster minimiert ist, dann klickt er im Fenster ganz wo anders hin


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