Es útil escribir notificaciones en el SysTray y resulta profesional hacerlo, para ello ya publiqué el componente SysTrayIcon. En esta ocasión muestro como hacerlo sin necesidad de dicho componente, para aplicaciones sencillas.
Utiliza sólo la API y sigue el estándar de Win10:
 
Definiciones:
TNotifyIconData = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..127] of AnsiChar;
dwState: DWORD;
dwStateMask: DWORD;
szInfo: array [0..255] of AnsiChar;
uTimeout: UINT;
szInfoTitle: array [0..63] of AnsiChar;
dwInfoFlags: DWORD;
end;
// Ampliaciones para Vista
const NIIF_INFO = $00000001;
const NIF_INFO = $00000010;
const NIF_REALTIME = $00000040;
const NIF_SHOWTIP = $00000080;
const NIIF_USER = $00000004;
El procedimiento:
procedure ShowBalloon(Handle: THANDLE; Titulo, Texto: String);
var
Data: TNotifyIconData;
begin
ZeroMemory(@Data, sizeof(TNotifyIconData));
Data.cbSize:= sizeof(TNotifyIconData);
Data.uFlags:= NIF_ICON or NIF_INFO or NIF_REALTIME;
Data.dwInfoFlags:= NIIF_INFO;
lstrcpyn(Data.szInfoTitle, PCHAR(Titulo), 64-1);
lstrcpyn(Data.szInfo, PCHAR(Texto), 256-1);
Data.uTimeOut:= 1000;
Data.Wnd:= Handle;
Shell_NotifyIcon(NIM_ADD, @Data);
Shell_NotifyIcon(NIM_MODIFY, @Data);
Shell_NotifyIcon(NIM_DELETE, @Data); // Para WinXP comentar esta línea. En el resto de S.O. funciona con esta línea comentada
end;
Uso:
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowBalloon(Handle, Edit1.Text, Edit2.Text);
end;
Subo un proyecto de ejemplo.
Saludos.


 
	 
					 
			
			
 
				
				
			

 
				
				
			 
				
				
			 
				
				
			
 
				
				
			
 
				
				
			







