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.