[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]
unit notify;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, shellApi;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Image1: TImage;
Timer1: TTimer;
Image2: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
MyNotifyStruct: TNotifyIconData;
{ // Here is the structure info from ShellAPI.pas:
type
PNotifyIconDataA = ^TNotifyIconDataA;
PNotifyIconDataW = ^TNotifyIconDataW;
PNotifyIconData = PNotifyIconDataA;
TNotifyIconDataA = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..63] of AnsiChar;
end;
TNotifyIconDataW = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..63] of WideChar;
end;
TNotifyIconData = TNotifyIconDataA;
}
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
with MyNotifyStruct do begin
cbSize:= sizeof(MyNotifyStruct);
Wnd:= form1.handle;
uID:= 1;
uFlags:= NIF_ICON or NIF_TIP;
hIcon:= Image1.picture.icon.handle;
szTip:= 'Hello Lloyd';
end;
Shell_NotifyIcon(NIM_ADD, @MyNotifyStruct);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Shell_NotifyIcon(NIM_Delete, @MyNotifyStruct);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
StrPCopy(MyNotifyStruct.szTip,TimetoStr(Time));
if (MyNotifyStruct.hIcon = image1.picture.icon.handle) then
MyNotifyStruct.hIcon:= image2.picture.icon.handle
else
MyNotifyStruct.hIcon:= image1.picture.icon.handle;
Shell_NotifyIcon(NIM_Modify, @MyNotifyStruct);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Shell_NotifyIcon(NIM_Delete, @MyNotifyStruct); // clean up
end;
end.
{ DFM file }
object Form1: TForm1
Left = 331
Top = 141
Width = 435
Height = 300
Caption = 'Form1'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OnClose = FormClose
PixelsPerInch = 96
TextHeight = 13
object Image1: TImage
Left = 249
Top = 39
Width = 34
Height = 31
Picture.Data = {
055449636F6E0000010001002020100000000000E80200001600000028000000
2000000040000000010004000000000080020000000000000000000000000000
0000000000000000000080000080000000808000800000008000800080800000
80808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000
FFFFFF00999999999999999999999999999999999FFFFFFFFFFFFF8888888888
8FFFFFF997FFFFFFFFFF888888888888888FFFF9977FFFFFFFF8444C44488888
8888FFF99777FFFFFF4444444444488888888FF997777FFF44444C4C4C4C4C48
888888F9977777F44444443444444444888888F99777774C444C433C4C4C4C4C
48888889977774444444C334C444C444C48888899777744C4C4C433C4C4C4C4C
4C8888899777444444C43334CCC4C4C4C44888899777444C4C43333C4C4C4C4C
4C38888997744444C4433333CCCCC4CCC433888997744C4C4C4333333C4C4C4C
4C33888997744444C43333333CCCCCCCC43388899774444C4C333333CC4CCC4C
4C33888997744444C433333CCCCCCCC33333888997744C4C4C334C4C4CCCCCC3
33338889977444444433CCCC3CCCCCC3333388F99777444C4C433C433C4CCC4C
333888F997774444343333333CCCCCCCC4C88FF99777744C333333333C4C4C43
3C88FFF997777444333333333CCCCCC3348FFFF99777774C333333333C4C3C43
3FFFFFF997777774333333C333CC3433FFFFFFF9977777774333334C333C4C37
7FFFFFF9977777777744433444C4477777FFFFF99777777777774C4C4C477777
777FFFF99777777777777777777777777777FFF9977777777777777777777777
77777FF9977777777777777777777777777777F9999999999999999999999999
9999999900000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000}
Visible = False
end
object Image2: TImage
Left = 249
Top = 81
Width = 34
Height = 37
Picture.Data = {
055449636F6E0000010001002020100000000000E80200001600000028000000
2000000040000000010004000000000080020000000000000000000000000000
0000000000000000000080000080000000808000800000008000800080800000
80808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000
FFFFFF0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000330000000000000000000000033303303303300
0000000000000003303330333003003300000000000000033003330330002333
0000000000000030000033003033333000000000000033333330000003330003
33000000080333333333333333300233330000000F033333333333333302333B
B03000004F8333333333333333333BB003BB00004FF3333333333333B33BB003
3BBB00004FF333333333B3BB3BB0033BBBB000004FF83B333B3B3B3BBBB03BBB
BB0300F04FFF33B3B3B3BBBBBBBBBBBB00330FF04FFF8B3B3333BBBBBBBBBB00
33330FF044FFF8BBB03033BBBBB330333330FFF444FFF8BB0BB3003B33000333
3330FF44444FF88B3BBB300000033333B33FFF44444FFF3BB0BBB3000333B33B
B38FF4444444FF003B0BB333333BBBBBB3FFF44444444FF00030BBBBBBBBBBBB
BBFF444444440000000303BBB3300000BFF44444440000000000000000000000
0FF4444400000000000000000000000000444444000000000000000000000000
0000444400000000000000000000000000000444000000000000000000000000
0000000400000000000000000000000000000000000000000000000000000000
00000000FFFFFFFFFFFFFFFFFFFF1FFFFF8003FFFC0000FFF800007FF800007F
E000003F0000001F0000001F0000000F00000007000000070000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000C000000FE01F003FFFFF80FFFFFFC0FFFFFFF0FFFFFFF8FFFFFFFE
FFFFFFFF}
Visible = False
end
object Button1: TButton
Left = 15
Top = 36
Width = 124
Height = 34
Caption = 'Add Icon To TaskBar'
TabOrder = 0
OnClick = Button1Click
end
object Button2: TButton
Left = 12
Top = 96
Width = 127
Height = 34
Caption = 'Delete Icon from TaskBar'
TabOrder = 1
OnClick = Button2Click
end
object Button3: TButton
Left = 12
Top = 159
Width = 130
Height = 31
Caption = 'ModifyIcon on TaskBar'
TabOrder = 2
end
object Timer1: TTimer
Interval = 500
OnTimer = Timer1Timer
Left = 375
Top = 21
end
end
{ DPR file }
program taskbar;
uses
Forms,
notify in 'notify.pas' {Form1};
{$R *.RES}
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]