Entwickler-Ecke

Windows API - Kontextmenü der Traysymbols wieder entfernen


Travis - Do 14.11.02 13:52
Titel: Kontextmenü der Traysymbols wieder entfernen
Hallo Leute,

ich bin mir jetzt nicht ganz sicher, ob das ein API-Problem ist, aber ich denke mal schon. Ich habe mit Hilfe dieser Anleitung
http://www.auq.de/viewtopic.php?t=2131&highlight=tna
ein Tray-Symbol erstellt. Das funktioniert auch soweit mit dem Kontextmenü ganz gut, jedoch bleibt das Menü im Hintergrund, wenn man nichts gewählt hat (also wenn man z.B. auf den Desktop/Taskleiste klickt, anstatt einen Eintrag auszuwählen). Normalerweise müsste es aber komplett verschwinden.

Ich hoffe, dass man halbwegs versteht, was ich meine.

Schon im voraus Danke für die Hilfe,

Travis


SteaLth - Do 14.11.02 15:25

Ich verwende immer diese procedure anstelle der in deinem Beispiel genannten WM_IconCallback:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.WMTASKBAREVENT(var Message: TMessage); // Taskbar - Klick
var point : TPoint;
begin
  case message.LParamLo of
    WM_LBUTTONDBLCLK : // Doppelklick
    begin
      // machwas();
    end;
    WM_RBUTTONDOWN : // rechte Mousetaste
    begin
      SetForegroundWindow(Handle);
      GetCursorPos(point);
      PopUpMenu1.Popup(point.x, point.y);
    end;
  end;
end;


...damit verschwindet das PopUpMenu wieder wenn man woanders hinklickt.


Delete - Do 14.11.02 15:29

Die entscheidende Zeile ist übrigens SetForegroundWindow(Handle).


Travis - Do 14.11.02 15:59

Das Beispiel von SteaLth hat bei mir leider nicht funktioniert, aber durch das Ergänzen von SetForegroundWindow(Handle) hab ich eigentlich genau das erreicht, was ich erreichen wollte.

Nochmals Danke,

Travis


SteaLth - Do 14.11.02 16:06

Na blind copy&paste machen, funktioniert selten. Ein bissl Mitdenken und Zusammenhänge erkennen, sollte man schon :wink: ...aber zum Glück machen es ja manchmal andere für einen, wie zB Luckie.


Travis - Do 14.11.02 17:48

SteaLth hat folgendes geschrieben:
Na blind copy&paste machen, funktioniert selten.


Wenn man schon seit zig Jahren mit der Programmierung beschäftigt ist, ist einem schon klar, das "Copy&Paste" selten funktioniert. Jedoch kenne ich mich auf dem Gebiet der "Application Progamming Interface" nicht gerade gut aus. :wink:

Travis


Delete - Do 14.11.02 22:11

Habe ich es mir doch gedacht, dass das schief geht wenn ich da nichts sage. :roll: