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 Problem mit Postmessage: Rechtsklick ausführen (https://www.delphipraxis.net/68895-problem-mit-postmessage-rechtsklick-ausfuehren.html)

Danny87 7. Mai 2006 19:31


Problem mit Postmessage: Rechtsklick ausführen
 
Hi Leute,

ich möchte gerne einen Rechtsklick durch mein Programm ausführen lassen.
Allerdings funktioniert das irgendwie nicht.
Könnt ihr mir sagen, was ich falsch mache?

Delphi-Quellcode:
PostMessage(0,WM_RBUTTONDOWN,0,0);
PostMessage(0,WM_RBUTTONUP,0,0);
Gruss
Daniel

marabu 7. Mai 2006 19:54

Re: Problem mit Postmessage: Rechtsklick ausführen
 
Hallo Daniel,

das Handle 0 ist für diese Message vielleicht etwas ungeschickt - da sollte schon jemand auf deine Message lauschen. Alles andere ist nicht unbedingt notwendig, aber macht mitunter Sinn:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  h: THandle;
  pt: TPoint;
begin
  h := ActionPanel.Handle; // and 0;
  pt.X := 100;
  pt.Y := 10;
  PostMessage(h, WM_RBUTTONDOWN, MK_RBUTTON, pt.Y shl 16 + pt.X);
  PostMessage(h, WM_RBUTTONUP, MK_RBUTTON, pt.Y shl 16 + pt.X);
end;
Grüße vom marabu

Edit: debugging code auf Kommentar gesetzt

nat 7. Mai 2006 20:20

Re: Problem mit Postmessage: Rechtsklick ausführen
 
Zitat:

Zitat von marabu
Delphi-Quellcode:
  h := ActionPanel.Handle and 0;

wozu das and 0??
wenn ich etwas mit 0 verunde kommt immer 0 raus!
somit is h immer = 0.
mit
Delphi-Quellcode:
  h := MyPanel.Handle;
gehts! :)

Danny87 7. Mai 2006 21:19

Re: Problem mit Postmessage: Rechtsklick ausführen
 
Hmm danke!

Aber wie kann ich machen, dass der Klick Systemweit gesendet wird und nicht nur an ein bestimmtes Fenster oder so?

Gruss
Daniel

SirThornberry 7. Mai 2006 21:24

Re: Problem mit Postmessage: Rechtsklick ausführen
 
dafür gibt es die Funktion "mouse_event". Dein Vorhaben ist also wie folgt Realisierbar:
Delphi-Quellcode:
SetCursorPos(x, y);
mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP, x, y, 0, 0);

Danny87 8. Mai 2006 18:58

Re: Problem mit Postmessage: Rechtsklick ausführen
 
Danke :-D
So funktionierts!


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