Te muestro un ejemplo de como colocar una notificación en el SysTray con la API, el ejemplo viene de
aquí:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button2Click(Sender: TObject);
private
public
end;
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;
const NIIF_INFO = $00000001;
const NIF_INFO = $00000010;
const NIF_REALTIME = $00000040;
const NIF_SHOWTIP = $00000080;
const NIIF_USER = $00000004;
var
Form1: TForm1;
implementation
{$R *.dfm}
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);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowBalloon(Handle, Edit1.Text, Edit2.Text);
end;
end.
Muestro una imagen del diseño del formulario utilizado para este ejemplo.
También puedes definir tu propia ventana, como en este otro ejemplo donde uso una
ventana desplegable translúcida de un color y posición definidos a voluntad para notificaciones.
Saludos.