Mettre son application dans le system tray lorsqu'on la minimise

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 592 fois - Téléchargée 36 fois

Contenu du snippet

Ce code existe déja partiellement sur le site mais j'ai du passer quelques petites heures de recherche pour le faire fonctionner correctement.
Ce est décomposé en plusieurs actions
1. minimiser l'application et faire apparaitre une icone dans la barre des taches.
2. lorsqu'on doubleclique sur l'icone, l'appli se restaure et l'icone disparait.

Source / Exemple :


a coller apres le uses : 
Const WM_MYMESSAGE=WM_USER+100;
----------------------------------------------
variables globales : 
notifyStruc:TNotifyIconData;
--------------------------------------------------------
//fonction qui minimize et cache la fenetre
//declaration
procedure Minimize(Sender: TObject);
//corps de la fonction :
procedure MACLASSE.Minimize(Sender: TObject);
begin
 notifyStruc.cbSize:=SizeOf(notifyStruc);
 notifyStruc.Wnd:=Handle;
 notifyStruc.uID:=1;
 NotifyStruc.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
 NotifyStruc.uCallbackMessage := WM_MYMESSAGE;
 NotifyStruc.hIcon :=    WD_MAIN.Image1.Picture.Icon.Handle;//icone qui apparaitra dans le systray. composant Timage
 NotifyStruc.szTip:='le texte a afficher lorsque on passe la souris devant l'icone';
 Shell_NotifyIcon(NIM_ADD,@NotifyStruc);//ajoute la petite icône dans la barre des taches
 application.minimize;
 ShowWindow(Application.Handle, SW_HIDE);    //application invisible de la barre de tâches.
end;
----------------------------------------------------------
//fonction qui restaure l'application: (a coller dans les déclaration de fonctions de classe)
//declaration : 
procedure TrayMessage(var Msg: TMessage); message WM_MYMESSAGE;

//corps de la fonction : 

procedure MACLASSE.TrayMessage(var Msg: TMessage);
begin
 if (Msg.lparam=WM_LBUTTONDBLCLK) then //double click sur l'icone
 begin
  application.restore;
  ShowWindow(Application.Handle, SW_SHOW);
  if (@NotifyStruc<>NIL) then
   Shell_NotifyIcon(NIM_DELETE,@NotifyStruc);  // supprime la petite icône de la barre des taches

 end;
end;

A voir également

Ajouter un commentaire

Commentaires

thonyboy
Messages postés
166
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011
-
Bon j'ai enfin réussi a utiliser ce bout de code.

L'auteur a oublié de dire 2 ou 3 choses :

Il faut ajouter dans la section uses : ShellApi

Ensuite il faut intercepter l'evenement onminize de l'appli, afin d'appeler la procedure quand l'utilisateur réduit l'appli.
Pour cela il faut ajouter a l'évenement OnCreate de la form principale l'appel a la fonction minimize


procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize := Minimize;
end;

Enfin, mais là ce n'estpas un oubli de l'auteur, si vous preferez simplement utiliser l'icone de l'appli vous pouvez remplacer la ligne :

NotifyStruc.hIcon :=WD_MAIN.Image1.Picture.Icon.Handle;//icone qui apparaitra dans le systray. composant Timage

Par

NotifyStruc.hIcon := LoadIcon(HInstance, 'MAINICON');
cs_noichi
Messages postés
1
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
23 mai 2004
-
j'ai du mal à utiliser cette source je n'est pas d'erreur pourtant l'application ne se place pas en systray. y'a t'il une source complete pour que je puisse la confronter à ce que j'ai fait

Merci
cs_fidji
Messages postés
32
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
10 mai 2008
-
j'aimerai bien avoir la version complette
je suis relatuivment débutant et cela dépasse mes compétances
merci @+
djboom84
Messages postés
1
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
4 janvier 2003
-
Je viens de telecharger un logiciel de capture de texte et d'ecrans nomé espion mais il ne marche pas,j'aimerai avoir une reponse S.V.P
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
24 -
Pour ceux qui utilisent la bibliothèque RxLib, rappelons que le composant TRxTrayIcon réalise tout celà en ajoutant de nombresues fonctionnalités (voir démos fournies), le tout très simplement .

Pour info, Ray KONOPKA a publié un article intéressant sur le sujet sur le site Raize.com et plus précisément : http://www.raize.com/DevTools/DelphiByDesign/Articles/DbD50.htm
Les codes sources y sont disponibles.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.