Entwickler-Ecke

Sonstiges (Delphi) - Taskbar


Wanni - Fr 30.08.02 11:23
Titel: Taskbar
Hallo

Wenn ein Programm in die Taskbar minimiert wurde, können meist mittels rechter Maustaste Funktionen wie Close und Restore ausgeführt werden. Wie bringe ich einen eigenen Eintrag in dieses Menue (hinter dem sich eine eigene Funktion versteckt).

Besten Dank :shock:


Arakis - Fr 30.08.02 12:06

Was meinst du genau, wie man ein PopUpMenü integriert, oder wie die Funkion lauten muss?

In der "Fenster-Öffnen"- Funktion kommt ganz einfach in

Quelltext
1:
Application.Restore                    

rein.

Bis dann
user defined image


Wanni - Fr 30.08.02 12:19

Nein, wenn ein Progamm minimiert ist
und man die Rechte Maustaste drückt
erscheint ein Menu, das möchte ich erweitern.
Gruss Wanni :shock:


Arakis - Fr 30.08.02 12:27

Nutzt du etwa eine Komponente dafür? Wo kommt denn das Menü her, dass ja schon vorhanden ist?

Bis dann
user defined image


toms - Fr 30.08.02 12:45

Mit GetSystemMenu(Application.Handle) bekommst du das Handle zum Systemmenü. Mit AppendMenu kannst du dort eigene Items hinzufügen.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
private
  procedure AppMessage(var Msg: TMsg; var Handled: Boolean);

{...}

implementation

{...}

const
  SC_MeinMenuItem1 = $100;

procedure TForm1.FormCreate(Sender: TObject);
var
  hSysMenu: THandle;
begin
  // Handle yum Systemmenü ermitteln
  hSysMenu := GetSystemMenu(Application.Handle, False);
  // Eigene Menüitems einfügen
  AppendMenu(hSysMenu, MF_SEPARATOR, 0, #0);
  AppendMenu(hSysMenu, MF_STRING, SC_MeinMenuItem1, '&Mein Menüitem');
  // OnMessage event handler festlegen
  Application.OnMessage := AppMessage;
end;

// OnMessage event handler
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
  if Msg.message = WM_SYSCOMMAND then
  begin
    case Msg.wParam of
      SC_MeinMenuItem1: 
        begin
          ShowMessage('SC_MeinMenuItem1');
          Handled := True;
        end;
    end;
  end;
end;


Tino - Fr 30.08.02 12:57

Ich hab hier einen FAQ Beitrag eingefügt:
Wie kann ich das Systemmenü erweitern? [http://www.auq.de/viewtopic.php?p=8506]

Gruß
TINO


Wanni - Fr 30.08.02 13:02

Besten Dank das war genau was ich wollte!
Gruss Wanni :shock:


toms - Fr 30.08.02 13:05

@Tino: Hast du deinen Code ausprobiert? Funktioniert nämlich nicht.
(WM_SYSCOMMAND wird nicht ausgelöst)


Tino - Fr 30.08.02 13:14

Also bei mir funktioniert es!


Arakis - Fr 30.08.02 13:16

Sorry, aber bei mir funktioniert es auch nicht :(
XP-Sytem

Bis dann
user defined image


toms - Fr 30.08.02 13:18

Bei mir funktioniert's nur für das Systemmenü der Form aber
nicht für das Systemmenü der Applikation (in der Taskleiste)
Mit einem OnMessage Handler funktioniert's jedoch für beide.

(OS: Win XP)


Tino - Fr 30.08.02 13:37

Sorry, hatte es nur über das Form-Menü ausprobiert!

Stimmt natürlich. Hab die FAQ geändert!

Gruß
TINO