begin process at 2010 02 09 20:43:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Exécution

 > MINIMISER UNE APPLICATION DANS LA ZONE DE NOTIFICATION

MINIMISER UNE APPLICATION DANS LA ZONE DE NOTIFICATION


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Exécution Classé sous :minimiser, réduire, notification, zone Niveau :Initié Date de création :24/01/2007 Date de mise à jour :04/03/2009 12:42:11 Vu / téléchargé :8 900 / 724

Auteur : Aurel184

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Ce code montre tout simplement comment faire pour minimiser une application dans la zone de notification. La fenêtre disparait alors de la barre des tâches et une icone apparait à coté de l'horloge. Si vous cliquez sur cette icone avec le bouton droit, un menu contextuel apparait.

Il existe plusieurs composants qui permettent de gérer ces étapes. Mais comme ce n'est pas compliqué, c'est toujours mieux de le coder soi-même pour une meilleure compatibilité.

Source

  • unit Unit1;
  • interface
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, Menus, ShellApi, StdCtrls;
  • //numéro du message envoyé à l'application par le système lors q'un événement souris sur l'icone
  • const wm_AppelMessage=1025+102;
  • type
  • TForm1 = class(TForm)
  • PopupMenu1: TPopupMenu;
  • Ouvrir1: TMenuItem;
  • N1: TMenuItem;
  • Quitter1: TMenuItem;
  • Memo1: TMemo;
  • procedure Ouvrir1Click(Sender: TObject);
  • procedure FormCreate(Sender: TObject);
  • procedure FormClose(Sender: TObject; var Action: TCloseAction);
  • procedure Quitter1Click(Sender: TObject);
  • private
  • { Déclarations privées }
  • procedure Minimiser(Sender:TObject); //appelée lorsque l'on minimise la fenêtre
  • procedure AjouteIcone(); //ajoute l'icone de la zone de notification
  • procedure SupprimeIcone; //supprime l'icone de la zone de notification
  • procedure WMAppelMessage(var msg : TMessage); message wm_AppelMessage; //appelée lors d'un événement souris sur l'icone
  • public
  • { Déclarations publiques }
  • end;
  • var
  • Form1: TForm1;
  • implementation
  • {$R *.dfm}
  • //****************************************************************************
  • // Crée l'icone dans la zone de notification
  • //****************************************************************************
  • procedure TForm1.AjouteIcone();
  • var
  • Info:TNotifyIconData;
  • begin
  • // cbSize doit contenir la taille de la structure
  • Info.cbSize := SizeOf(Info);
  • // Wnd doit contenir le Handle de la fenêtre qui recevra les messages de
  • // notification d'évènement de la souris
  • Info.Wnd := Handle;
  • // uID Numéro d'icone, c'est utile si plusieurs icones sont affichées en
  • // simultané dans la barre des tâches. Car c'est ce numéro qui permettra
  • // ensuite de modifier celle que l'on veut.
  • Info.uID := 1;
  • // szTip contient le texte de l'info bulle affiché au dessus de l'icone
  • Info.szTip := 'Exemple de texte';
  • // hIcon contient le handle de l'icône qui doit être affichée
  • // Ici nous affichons l'icone de l'application
  • Info.hIcon := Application.Icon.Handle;
  • // uCallBackMessage contient le message qui sera retourné à la fenêtre
  • // donnée par Wnd quand un évènement de souris apparaît sur l'icone
  • Info.uCallbackMessage := wm_AppelMessage;
  • // uFlags doit contenir la liste des champs utilisés dans la structure
  • // parmi les champs szTip,hIcon et uCallBackMessage
  • Info.uFlags := NIF_TIP Or NIF_ICON Or NIF_MESSAGE;
  • // Appel de la fonction API ajoutant l'icone
  • Shell_NotifyIcon(NIM_ADD,@Info);
  • end;
  • //****************************************************************************
  • // Supprime l'icone de la zone de notification
  • //****************************************************************************
  • procedure TForm1.SupprimeIcone;
  • var
  • Info:TNotifyIconData;
  • begin
  • Info.cbSize := SizeOf(Info);
  • Info.Wnd := Handle;
  • Info.uID := 1;
  • Shell_NotifyIcon(NIM_DELETE,@Info);
  • end;
  • //****************************************************************************
  • // Minimise l'application en ajoutant l'icone dans la zone de notification et
  • // en la supprimant de la barre des tâches
  • //****************************************************************************
  • procedure TForm1.Minimiser(Sender:TObject);
  • begin
  • AjouteIcone();
  • ShowWindow(Application.Handle, SW_HIDE); //masque la fenêtre de la barre des tâches
  • end;
  • //****************************************************************************
  • // Fonction appelée lors d'un clic sur l'icone dans la zone de notification
  • //****************************************************************************
  • procedure TForm1.WMAppelMessage(var msg : TMessage);
  • var
  • Curs:TPoint;
  • begin
  • //double clique gauche on ouvre l'application
  • if msg.LParam=WM_LBUTTONDBLCLK then
  • Ouvrir1.Click()
  • else
  • //Clique droit de la souris on fait apparaitre le menu contextuel
  • if msg.LParam=Wm_RButtonDown then
  • begin
  • SetForegroundWindow(Handle);
  • GetCursorPos(Curs); //Récupère les coordonnées de la souris
  • PopupMenu1.Popup(Curs.X,Curs.Y); //Ouvre le menu surgissant à l'emplacement spécfié par les coordonnees de la souris
  • PostMessage(Handle,WM_NULL,0,0);
  • end;
  • end;
  • //****************************************************************************
  • // Fait réapparaitre l'application lors du clic sur le bouton "ouvrir" du menu
  • // contextuel de la zone de notifiation
  • //****************************************************************************
  • procedure TForm1.Ouvrir1Click(Sender: TObject);
  • begin
  • ShowWindow(Application.Handle, SW_SHOW); //affiche la fenêtre dans la barre des tâches
  • Application.Restore; // restore la fenêtre
  • SupprimeIcone(); // supprime l'icone
  • end;
  • procedure TForm1.FormCreate(Sender: TObject);
  • begin
  • //on associe l'action de minimiser l'application à notre fonction
  • Application.OnMinimize := Minimiser;
  • end;
  • //****************************************************************************
  • // Supprime l'icone de la zone de notification lors de la fermeture
  • // de l'application. Si l'icone n'existe pas, la fonction ne produit rien
  • //****************************************************************************
  • procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  • begin
  • SupprimeIcone();
  • end;
  • //****************************************************************************
  • // Ferme l'application lors du clic sur le bouton "Quitter" du menu
  • // contextuel de la zone de notifiation
  • //****************************************************************************
  • procedure TForm1.Quitter1Click(Sender: TObject);
  • begin
  • close;
  • end;
  • end.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ShellApi, StdCtrls;

//numéro du message envoyé à l'application par le système lors q'un événement souris sur l'icone
const wm_AppelMessage=1025+102;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Ouvrir1: TMenuItem;
    N1: TMenuItem;
    Quitter1: TMenuItem;
    Memo1: TMemo;
    procedure Ouvrir1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Quitter1Click(Sender: TObject);
  private
    { Déclarations privées }
    procedure Minimiser(Sender:TObject); //appelée lorsque l'on minimise la fenêtre
    procedure AjouteIcone(); //ajoute l'icone de la zone de notification
    procedure SupprimeIcone; //supprime l'icone de la zone de notification
    procedure WMAppelMessage(var msg : TMessage); message wm_AppelMessage; //appelée lors d'un événement souris sur l'icone
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//****************************************************************************
//                Crée l'icone dans la zone de notification
//****************************************************************************
procedure TForm1.AjouteIcone();
var
  Info:TNotifyIconData;
begin
  // cbSize doit contenir la taille de la structure
  Info.cbSize := SizeOf(Info);
  // Wnd doit contenir le Handle de la fenêtre qui recevra les messages de
  // notification d'évènement de la souris
  Info.Wnd    := Handle;
  // uID Numéro d'icone, c'est utile si plusieurs icones sont affichées en
  // simultané dans la barre des tâches. Car c'est ce numéro qui permettra
  // ensuite de modifier celle que l'on veut.
  Info.uID    := 1;
  // szTip contient le texte de l'info bulle affiché au dessus de l'icone
  Info.szTip  := 'Exemple de texte';
  // hIcon contient le handle de l'icône qui doit être affichée
  // Ici nous affichons l'icone de l'application
  Info.hIcon  := Application.Icon.Handle;
  // uCallBackMessage contient le message qui sera retourné à la fenêtre
  // donnée par Wnd quand un évènement de souris apparaît sur l'icone
  Info.uCallbackMessage := wm_AppelMessage;
  // uFlags doit contenir la liste des champs utilisés dans la structure
  // parmi les champs szTip,hIcon et uCallBackMessage
  Info.uFlags := NIF_TIP Or NIF_ICON Or NIF_MESSAGE;

  // Appel de la fonction API ajoutant l'icone
  Shell_NotifyIcon(NIM_ADD,@Info);
end;

//****************************************************************************
//                Supprime l'icone de la zone de notification
//****************************************************************************
procedure TForm1.SupprimeIcone;
var
  Info:TNotifyIconData;
begin
  Info.cbSize := SizeOf(Info);
  Info.Wnd    := Handle;
  Info.uID    := 1;
  Shell_NotifyIcon(NIM_DELETE,@Info);
end;

//****************************************************************************
// Minimise l'application en ajoutant l'icone dans la zone de notification et
//                en la supprimant de la barre des tâches
//****************************************************************************
procedure TForm1.Minimiser(Sender:TObject);
begin
  AjouteIcone();
  ShowWindow(Application.Handle, SW_HIDE); //masque la fenêtre de la barre des tâches
end;

//****************************************************************************
//  Fonction appelée lors d'un clic sur l'icone dans la zone de notification
//****************************************************************************
procedure TForm1.WMAppelMessage(var msg : TMessage);
var
  Curs:TPoint;
begin

  //double clique gauche on ouvre l'application
  if msg.LParam=WM_LBUTTONDBLCLK then
    Ouvrir1.Click()
  else
    //Clique droit de la souris on fait apparaitre le menu contextuel
    if msg.LParam=Wm_RButtonDown then
    begin
      SetForegroundWindow(Handle);
      GetCursorPos(Curs); //Récupère les coordonnées de la souris
      PopupMenu1.Popup(Curs.X,Curs.Y); //Ouvre le menu surgissant à l'emplacement spécfié par les coordonnees de la souris
      PostMessage(Handle,WM_NULL,0,0);
    end;
end;

//****************************************************************************
// Fait réapparaitre l'application lors du clic sur le bouton "ouvrir" du menu
//                   contextuel de la zone de notifiation
//****************************************************************************
procedure TForm1.Ouvrir1Click(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_SHOW); //affiche la fenêtre dans la barre des tâches
  Application.Restore; // restore la fenêtre
  SupprimeIcone(); // supprime l'icone
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //on associe l'action de minimiser l'application à notre fonction
  Application.OnMinimize := Minimiser;
end;

//****************************************************************************
//       Supprime l'icone de la zone de notification lors de la fermeture
//    de l'application. Si l'icone n'existe pas, la fonction ne produit rien
//****************************************************************************
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   SupprimeIcone();
end;

//****************************************************************************
//     Ferme l'application lors du clic sur le bouton "Quitter" du menu
//                  contextuel de la zone de notifiation
//****************************************************************************
procedure TForm1.Quitter1Click(Sender: TObject);
begin
  close;
end;

end.

 Conclusion

Comme japee me l'a fait remarquer, les fonctions ne sont pas de moi. Je les ai trouvées sur différents tutoriels mais je n'avais pas encore trouvé de code tout fait pour montrer le fonctionnement. De plus, aucun tutoriel ne prévoit que l'application se minimise automatiquement dans la zone de notification.

Maintenant que je connais l'auteur original de la majorité du code : Merci à Nono40

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   réduire dans la zone de notification

Télécharger le zip


 Historique

25 janvier 2007 16:16:14 :
J'ai rajouter un commentaire sur le code
25 janvier 2007 16:18:10 :
Correction ortographique
04 mars 2009 12:42:11 :
Correction de la valeur de la constante wm_AppelMessage

 Sources de la même categorie

Source avec Zip GÉNÉRATEUR DE JET DE DÉS par koriteki
Source avec Zip Source avec une capture LES FIBERS : DES THREADS NON PRÉEMPTÉS PAR LE SYSTÈME par Caribensila
Source avec Zip Source avec une capture UAC (USER ACCOUNT CONTROL) - EXÉCUTER UNE APPLICATION EN TAN... par ni69
BLOQUER LE TASKMGR SANS CLÉ DE REGISTRE par craftsystem
Source avec Zip UTILISER LES MESSAGES WINDOWS POUR GERER LE NOMBRE D'INSTANC... par lotfi213_b19

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PLACER L'ICONE DE SON APPLICATION DANS LE SYSTRAY, C'EST SIM... par japee

Commentaires et avis

Commentaire de couf le 24/01/2007 14:23:38

Salut,

Petit code simple mais qui sera j'en sui sur utile à plus d'un, bien indenté et bien commenté rien à rajouter .
moi je mets 9/10

Couf

Commentaire de japee le 24/01/2007 23:53:39 administrateur CS

Ce code est utile et intéressant.
Bah... même pas besoin de retoucher le commentaires originaux qui sont suffisamment clairs et détaillés... ^^
Merci à l'auteur, Nono40.

http://nono40.developpez.com/sources/source0027/

Commentaire de Aurel184 le 25/01/2007 16:10:36

Salut,

en effet j'ai trouvé la plupart des fonctions déjà toutes faites. Mais je les aient trouvées sur différents tutoriels et je n'avais pas trouvé de code qui les rassemblaient. Mais en fait il existait déjà dsl.

Commentaire de abdousoft le 25/01/2007 18:01:45

Salut Aurel184
vraiment Ce code est utile et intéressant!
Mais nettoyer bien ta source aussi
Bonne chance
@+

Commentaire de Bacterius le 03/03/2009 22:20:02

Bonsoir,

"const wm_AppelMessage=102;"

Non !

const WM_AppelMessage = 1025 + 102; !!

Les constantes en dessous de 1024 (1024 = message neutre) sont utilisées par le système d'exploitation.

Imagine que si le message 102 avait été un message WM_MOUSEMOVE ... le popup aurait été appelé à chaque mouvement de souris sur la fiche. Horrible hein !

Cordialement, Bacterius !

Commentaire de Aurel184 le 04/03/2009 12:47:47

Bien vu Bacterius !

A l'époque de ce code mes connaissances en messages Windows étaient limitées. Bizarre que personne en deux ans ne m'ait fait la remarque.

En tout cas merci, j'ai coorigé le code en conséquence.

Commentaire de Nelfasis le 10/03/2009 13:49:27

Bonjour à tous,

Je suis nouveau parmi vous et je recherche une aide pour effectuer Exactement la même chose sur une petite application en C#. Je n'ai rien trouvé dans le forum C# et j'ai pensé plus précis de venir poser la question ici.

Merci.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Réduire une fenêtre dans la barre de notification de windows [ par Aurel184 ] bonjour.Je voudrais que la fenêtre de mon application se minimise dans la zone de notification. Je sais déjà créer une icone dans cette zone, faire di Demon internet dans la zone de notification ? [ par delfFFF ] Bonjour à tous,J'aimerai me lancer dans la création d'un petit prog qui reste dans la zone de notification sous forme d'icône.Sa fonction première ser Laisser actif un programme(en tant que service?) [ par ashron54 ] Bonjour,voila je m'explique, j'ai fais une petite application toute bête qui interprète différent code (suite de chiffres) passé dans la zone de texte zone cliquable [ par cyber37 ] bonjours avant de poster j'ai fait une recherche et voici ma question : est'il possible de faire une zone cliquable enfin dans une partie de la form proble me pour l ajout la modif et suppression ?? [ par jojojojo57 ] Bonjour à tous j utilise MySQLDelphi 7 entreprise les controles BDE + ODBC j ai une DBGrid qui a comme datasource une TQuerytoujour sur la même fi envoyer un texte a un email en delphi [ par mohamedjayed ] je veut ecrire  code source en delphi qui permet d'envoyer un texte a un email definit(l'interface contien une zone de texte zone d'email recepteur  z Notification de la création d'un fichier d'un rep+sous rep [ par miarynante ] bjr,je suis un peu débutant en delphi(6) et je suis bloqué sur un probleme.voici le but du petit programme:j'aimerai si c'est possible récupérer les c Réduire la taille des caractères dans un TDateTimePicker [ par krzysiu ] Bonjour,j''aimerais pouvoir modifier la taille des caractères d'un TDateTimePicker.la propriété Font.Size, ne modifie rien merci recuperer le hande de la zone d'edition de word [ par pixigol ] Bonjour Je souhaiterais recupérer le handle de la zone d'édition de word. J'ai trouvé en cherchant sur les forums comment trouver le handle de ma word Minimiser des forms non principales. [ par Fat ] Je ne sais pas si c'est normal, mais dans une appli en VB par exemple, quand vous creez plusieurs forms, quand vous les minimiser, elles se retrouvent


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales