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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm := false;
Application.Run;
end.
*********************************************
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ShellAPI;
const WM_ICONTRAY = WM_USER + 1;
type
TForm1 = class(TForm)
BPlus: TButton;
BCroix: TButton;
PMTray: TPopupMenu;
OuvrirForme: TMenuItem;
MenuItem2: TMenuItem;
procedure BPlusClick(Sender: TObject);
procedure BCroixClick(Sender: TObject);
procedure OuvrirFormeClick(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
TrayIconData: TNotifyIconData;
procedure TrayMessage(var Msg: TMessage); message WM_ICONTRAY;
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
f: TForm;
bt1, bt2: TButton;
CreateP: boolean;
const
ecart = 20;
implementation
{$R *.dfm}
procedure TForm1.TrayMessage(var Msg: TMessage);
var
p: TPoint;
begin
case Msg.lParam of
WM_LBUTTONDOWN, WM_RBUTTONDOWN:
begin
SetForegroundWindow(Handle);
GetCursorPos(p);
PMTray.Popup(p.x, p.y);
PostMessage(Handle, WM_NULL, 0, 0);
end;
end;
end;
procedure TForm1.BPlusClick(Sender: TObject);
begin
with TForm1.Create(Self) do
begin
Left := Self.Left + 20;
Show;
end;
end;
procedure TForm1.BCroixClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.OuvrirFormeClick(Sender: TObject);
begin
BPlusClick(Sender);
end;
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if CreateP then exit; // pour ne pas recréer l'icone
with TrayIconData do
begin
cbSize := SizeOf(TrayIconData);
Wnd := Handle;
uID := 0;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage := WM_ICONTRAY;
hIcon := Application.Icon.Handle;
StrPCopy(szTip, Application.Title);
end;
Shell_NotifyIcon(NIM_ADD, @TrayIconData);
CreateP := true; // la forme principale est créée
end;
end. |
Partager