unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus;
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
mnuConf: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure mnuConfClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure MostrarMenu(var Msg: TMessage); message WM_USER + 1;
procedure FormMinimize(Sender: TObject);
procedure FormRestore(Sender: TObject);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses ShellAPI;
var
IconData: TNotifyIconData = (cbSize: SizeOf(IconData); uID: 100;
uFlags: NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage: WM_USER + 1);
procedure TForm1.FormCreate(Sender: TObject);
begin
with IconData do
begin
Wnd := Handle;
hIcon := Application.Icon.Handle;
StrPCopy(szTip, Application.Title);
end;
Application.OnMinimize := FormMinimize;
Application.OnRestore := FormRestore;
WindowState := wsMinimized;
end;
procedure TForm1.FormMinimize(Sender: TObject);
begin
Shell_NotifyIcon(NIM_ADD, @IconData);
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.FormRestore(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @IconData);
end;
procedure TForm1.MostrarMenu(var Msg: TMessage);
begin
if Msg.lParam = WM_RBUTTONDOWN then
with Mouse.CursorPos do
PopupMenu1.Popup(X, Y);
end;
procedure TForm1.mnuConfClick(Sender: TObject);
begin
Application.Restore;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
end;
end.