![]() |
Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher position
Hallo, meine Postmessage(Handle,WM_RBUTTONDOWN,0,0) wird nicht an der vorher festgelegten mausposition ausgeführt, sondern in der oberen linken ecke! wieso das?
|
Re: Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher posit
Musst du die Koordinaten nicht in lparam mit übergeben?
Dust Signs |
Re: Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher posit
habe das ganz mal so ausprobiert,
[delphi]PostMessage(Handle,WM_RBUTTONdown,550,550);[delphi] dann wandert das popupmenü zwar nach rechts aber bleibt oben am rand ? wieso, oder was amche ich denn falsch!? |
Re: Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher posit
Besser, du schreibst mal ein paar Worte darüber, was du da genau machen willst...
|
Re: Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher posit
Die Position wird laut MSDN nur über lParam kodiert.
Zitat:
|
Re: Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher posit
Also ich berechne aus Koordinaten die Cursor Position die im externen Programm gesetzt werden soll.
soweit ganz gut, Position wird richtig berechnent und die maus mit Setcursorpos dorthin bewegt. nun soll auch genau an dieser stelle der rechtsklick erfolgen damit sich ein popup öffnent! und das funktioniert nicht. Nun zu ![]() ich verstehe irgendwie nicht was ich denn nun genau angeben bzw übergeben muss?? Zitat:
|
Re: Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher posit
Ganz einfach: ein Word ist 16 Bit lang, ein Integer 32. Ein Integer besteht folglich aus zwei Words. Diese beiden Words enthalten die Koordinaten. Durch Bit-Shifting kannst du das dann so lösen (bin in Delphi nicht mehr so firm, Code ohne Garantie; vielleicht stellt Delphi sogar ein Pendant für diese Funktion bereit):
Delphi-Quellcode:
Der resultierende Integer ist dann dein lparam. Anmerkung: Cardinal wäre hier eigentlich der richtige Rückgabetyp, da der Rückgabewert kein Vorzeichen haben sollte. Aber wie gesagt: bin ich Delphi nicht mehr sehr firm, da ich schon länger nicht mehr damit programmiert habe.
function WordsToInt(w1: Word; w2: Word): Integer;
begin Result := (w1 shr 16) or w2; end; Dein lparam ergibt sich dann aus X und Y:
Delphi-Quellcode:
Dust Signs
lparam := WordsToInt(X, Y);
|
Re: Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher posit
Habs jetzt so gemacht und das menü wird immer noch links oben ausgegeben
Delphi-Quellcode:
function WordsToLparam(w1: Word; w2: Word): cardinal;
begin Result := (w1 shr 16) or w2; end;
Delphi-Quellcode:
Handle := Find_IvAc_Radar(IvAc);
appactivate(Handle,1); SetCursorPos(x,y); PostMessage(Handle,wm_rbuttondown,wordstolparam(x,y),0); was mache ich nur verkehrt? |
Re: Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher posit
Das Macro
![]() Diskutieren wir hier eigentlich gerade an zwei Stellen: ![]() |
Re: Postmessage(Handle,WM_RBUTTONDOWN,0,0) an falscher posit
OK, vielleicht sollte mir mal jemand ne gute erklärung geben was denn nun eigentlcih Lparam sind oder mal nen link für ne gute erklärung übder die ganzen msdn befehle, den ich auch verstehe
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:42 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