Reduire mon application console dans le Systray [Résolu]

madshell 59 Messages postés dimanche 29 avril 2007Date d'inscription 21 août 2007 Dernière intervention - 21 août 2007 à 01:19 - Dernière réponse : Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention
- 21 août 2007 à 18:26
Bonjour,
J'aimerais réduire au lancement de mon application "console" le programme dans le systray.
Est-ce possible ?

Merci d'avance.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
PurBonheur 66 Messages postés samedi 24 février 2007Date d'inscription 7 octobre 2007 Dernière intervention - 21 août 2007 à 02:05
3
Merci
Salut,

"Est-ce possible ?"

Non, ce n'est pas possible. Le NotifyIcon est dans l'espace de nom System.Windows.Forms, donc pas accessible par une application console.

A plus.

Merci PurBonheur 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de PurBonheur
Meilleure réponse
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 21 août 2007 à 16:19
3
Merci
Ce bug commence à me courrir sur le popotin... Bon je disais...

Ben si c'est une question de références, crée un projet console, ajoute la référence System.Windows.Forms (et Drawing pour mettre une icone) et ce code :

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            NotifyIcon notifyIcon = new NotifyIcon();
            notifyIcon.Icon = System.Drawing.SystemIcons.Application;
            notifyIcon.Visible = true;
            Console.ReadKey();
        }
    }
}

Marche parfaitement et utilise une NotifyIcon...

<hr size="2" width="100%" />Julien.

Merci Julien237 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Julien237
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 21 août 2007 à 07:11
1
Merci
Salut,
En quoi est-ce une impossibilité PurBonheur ? Il suffit alors d'ajouter la référence en question au projet, et ça devient possible...

<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 21 août 2007 à 09:02
1
Merci
non... je rejoins PurBonheur... une application console n'a rien à voir avec une application WindowsForms... et ce n'est pas une question de référence ou de namespace

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
madshell 59 Messages postés dimanche 29 avril 2007Date d'inscription 21 août 2007 Dernière intervention - 21 août 2007 à 11:02
1
Merci
Ok je vais donc integrer ma console dans une appli graphique.
Puis, rajouter un truc pour le SysTray.
Merci à tous,

a+
Commenter la réponse de madshell
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 21 août 2007 à 11:06
1
Merci
il y a un composant SystrayIcon dans la toolbox des Windows Forms.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 21 août 2007 à 16:22
1
Merci
Ho ! Mon message vide a été retiré, j'ai été victime du bug supprimant le corps du message, ne pensez pas que je traite quiconque de bug dans mon précédant...

<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237
madshell 59 Messages postés dimanche 29 avril 2007Date d'inscription 21 août 2007 Dernière intervention - 21 août 2007 à 16:28
1
Merci
Ok thanks
Commenter la réponse de madshell
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 21 août 2007 à 16:42
1
Merci
oui... j'ai supprimé ton message vide...
Ce bug sera corrigé pour la nouvelle version de CS... patience.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 21 août 2007 à 16:56
0
Merci
c'est bien beau d'afficher l'icone dans la systray... mais ca ne sert à rien puisque tu ne peux pas masquer/afficher la console...

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 21 août 2007 à 18:26
0
Merci
Pff facile :

        [System.Runtime.InteropServices.DllImport("user32")]
        static extern int SetWindowPos(IntPtr hwnd, int hwndInsertAfter,
                   int x, int y, int cx, int cy, int Flags);

        static IntPtr handle;
        static bool visible;

        static void Main(string[] args)
        {
            handle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
            NotifyIcon notifyIcon = new NotifyIcon();
            notifyIcon.Icon = System.Drawing.SystemIcons.Application;
            notifyIcon.Visible = true;
            notifyIcon.Click += new EventHandler(notifyIcon_Click);
            MasquerConsole();
            visible = false;
            Application.Run();
        }

        static void notifyIcon_Click(object sender, EventArgs e)
        {
            if (visible) MasquerConsole();
            else AfficherConsole();
            visible = !visible;
        }

        static void AfficherConsole()
        {
            SetWindowPos(handle, 0, 0, 0, 0, 0, 0x43);
        }

        static void MasquerConsole()
        {
            SetWindowPos(handle, 0, 0, 0, 0, 0, 0x83);
        }

Bon allez j'avoue, c'est vrai que c'est pas top, n'empêche que c'est pas hyper compliqué quand même...

<hr size="2" width="100%" />Julien.
Commenter la réponse de Julien237

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.