Du hast ja inzwischen schon so einige Hebel in Bewegung gesetzt (z.B.
hier )
Zu deiner PN: ich hatte gestern wirklich etwas Zeit und bin so weit gekommen, dass ich die WM_RBUTTONDOWN-Meldung auf dem Popup-Fenster abfangen kann, allerdings fehlt noch die Lokalisierung des betreffenden TTBItem mit Hilfe der Koordinaten.
Bis jetzt:
Delphi-Quellcode:
var
HookHandle: THandle;
function HookRightButton(nCode: Integer; wp: WPARAM; lp: LPARAM): LRESULT;
stdcall;
var
Wnd: TWinControl;
Pnt: TPoint;
begin
if nCode = HC_ACTION then
begin
with PMsg(lp)^ do
if message = WM_RBUTTONDOWN then
begin
Wnd := Controls.FindControl(hWnd);
if Wnd is TTBToolbar then
begin
Pnt := SmallPointToPoint(TSmallPoint(lParam));
// ...
end;
end;
end;
Result := CallNextHookEx(HookHandle, nCode, wp, lp);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HookHandle := SetWindowsHookEx(WH_GETMESSAGE, HookRightButton, 0, GetCurrentThreadId);
end;
An der Stelle mit ... fehlen halt noch einige Überprüfungen.
Wichtig: du solltest an der gehookten Stellen nicht selbst etwas tun, sondern dir einfach per PostMessage eine selbstdefinierte Meldung an das Hauptfenster schicken und dort dann ggf. eine Aktion vornehmen.