(* *****************************************************************************
Author := Mika
Datum der Erstellung := 07-06-2005
Datum der letzten Änderung := 07-06-2005
Unit mit Methoden um ein Icon in der Trayleiste zu plazieren und
auf dessen Ereignisse zu achten.
***************************************************************************** *)
unit uSystray;
interface
uses ShellApi, Windows, Messages, Forms;
Type
TSystrayIcon =
Class
Trayicon: TNotifyIconData;
Constructor newCreate(IconHint:
String);
Destructor newDestroy;
private
Procedure onTrayiconMessage(
Var Msg: TMsg);
message WM_USER;
Procedure AddIconToSystray(TrayiconDescription:
String);
Procedure RemoveIconFromSystray;
end;
implementation
Constructor TSystrayIcon.newCreate(IconHint:
String);
Begin
Inherited Create;
AddIconToSystray(IconHint);
End;
Destructor TSystrayIcon.newDestroy;
Begin
RemoveIconFromSystray;
Inherited Destroy;
End;
(* *****************************************************************************
Author := Mika
Datum der Erstellung := 07-06-2005
Datum der letzten Änderung := 07-06-2005
Fügt dem Systray ein neues Icon hinzu das auf Mausklicks reagiert um
ein Menü anzuzeigen.
***************************************************************************** *)
Procedure TSystrayIcon.AddIconToSystray(TrayiconDescription:
String);
begin
Fillchar(Trayicon.szTip, SizeOf(Trayicon.szTip), 0);
Move(TrayiconDescription[1], Trayicon.szTip, Length(TrayiconDescription));
Trayicon.cbSize := SizeOf(Trayicon);
Trayicon.Wnd := Application.Handle;
Trayicon.uFlags := NIF_ICON
or NIF_TIP
or NIF_MESSAGE;
Trayicon.hIcon := Application.Icon.Handle;
Trayicon.uID := 27787552;
Trayicon.uCallbackMessage := WM_USER;
Shell_NotifyIcon(NIM_DELETE, @Trayicon);
Shell_NotifyIcon(NIM_ADD, @Trayicon);
end;
(* *****************************************************************************
Author := Mika
Datum der Erstellung := 07-06-2005
Datum der letzten Änderung := 07-06-2005
Entfernt das Trayicon aus dem Systray.
***************************************************************************** *)
Procedure TSystrayIcon.RemoveIconFromSystray;
Begin
Shell_NotifyIcon(NIM_DELETE, @Trayicon);
End;
(* *****************************************************************************
Author := Mika
Datum der Erstellung := 07-06-2005
Datum der letzten Änderung := 07-06-2005
Reagiiert auf Mausklicks auf das Trayicon und zeigt ein
Menü an bei Rechtsklick
***************************************************************************** *)
Procedure TSystrayIcon.onTrayiconMessage(
Var Msg: TMsg);
Var
Point: Tpoint;
Begin
GetCursorPos(Point);
if (Msg.wParam = WM_LBUTTONDOWN)
then
begin
end else
if (Msg.wParam = WM_RBUTTONDOWN)
then
begin
end;
End;
end.