begin process at 2012 02 09 09:11:49
  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,5 / 10 - par 2 personnes
9,50 / 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é :11 295 / 825

Auteur : Aurel184

Ecrire un message privé
Commentaire sur cette source (10)
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 Source avec une capture INTERPRETEUR DE LANGAGE PERSONNALISABLE BIS par barbichette
Source avec Zip Source avec une capture INTERPRETEUR DE LANGAGE PERSONNALISABLE par barbichette
Source avec Zip Source avec une capture INTERCEPTION ARRET WINDOWS par dc46
Source avec Zip FREE PASCAL - EXERCICE AVEC TABLE DE HACHAGE par chatmar
Source avec Zip LE CRIME PARFAIT par Caribensila

 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.

Commentaire de mhibla16 le 07/06/2010 16:13:53 10/10

SVP !! dite mOi cOmment et Ou je trOuve

" procedure TForm1.AjouteIcone(); "

ya pas dans l'evenement du Form1...

Commentaire de Aurel184 le 09/06/2010 12:03:33

La procédure TForm1.AjouteIcone(); n'est pas un événement du Form1. C'est une fonction qui a été ajouté à la classe TForm1. Elle est appeler dans la procédure TForm1.Minimiser(Sender:TObject); pour afficher une icône dans la zone de notification quand on minimise la fenêtre.

Commentaire de mhibla16 le 10/06/2010 11:59:33

Merci beaucOup l'ami ^^
je vais essayer et j'te rend la répOnse :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

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 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 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 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 Capturer du text qui se trouve dans une zone précise d'une page web [ par shaqif ] Bonjour, En fait je voudrais suivre les mouvements d'informations dans une zone particulière d'une page web pour les stocker dans un fichier log. Je p


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,995 sec (3)

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