Je l´ai fait en delphi à plusieurs reprise.
Il te faut une variable de type TNotifyIconData.
La structure présente les champs suivants :
cbSize : La taille de la structure
wnd : Handle de la forme principale de ton appli(nil si tu n´as pas de forme principale)
uID : Aucune idée , moi je met toujours 1.
uCallBackMessage : pour traiter les messages envoyés par le système(pour afficher un popup sur click droit par exemple)
hIcon : Le handle de l´icon qui doit apparaitre à côté de l´horloge
szTip : Message de la bulle d´aide quand on passe le curseur sur l´icone.
uFlags : Drapeaux indiquant entre autre que tu gères des message , qu´il y a un hint et d´autres choses que je ne connais pas.
Et il faut utiliser l´API Shell_NotifyIconA.
Cette API à deux paramètre le premier concerne l´action à effectuée(ajouter , enlevé,etc...)
Le deuxième est un pointeur sur TNotifyIconData.
Dans l´exemple Nid est déclarer en private dans la form:
procedure TMainForm.SetInSystray;
Begin
FillChar(Nid,sizeof(Nid),0);
Nid.cbSize := SizeOf(Nid);
Nid.wnd := Self.Handle;
Nid.uID:=1;
/ /Je gère des messages
Nid.uCallBackMessage:=wm_CallBackMessage;
/ /L´icon de la MainForm
Nid.hIcon:=Self.Icon.handle;
Nid.szTip:=´C´´est un test´;
/ /J´accepte les messages et j´ai une icone
Nid.uFlags:=nif_message or nif_Icon or nif_tip;
/ /J´enregistre dans la trayicon
Shell_NotifyIconA(NIM_ADD, @Nid);
End;
procedure TMainForm.RemoveSystray;
begin
Shell_NotifyIconA(NIM_DELETE,@Nid);
end;
Voila en gros ce que ça donne.
J´ai indenté le code mais je crois que ce n´est pas garder donc désolé si ce n´est pas lisible.