IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Ouvrir un Process existant réduit ou en systray


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut Ouvrir un Process existant réduit ou en systray
    Bonjour
    Voila mon "Program.cs"
    Il vérifie que le Process n'existe pas déjà et si c'est le cas donne la main sur celui existant.
    Ca fonctionne bien quand le programme est ouvert et caché derrière d'autres fenêtre.
    Mon problème c'est si la fenêtre est réduite en barre des tache ou dans le systray ça ne l'ouvre pas en plein ecran.
    Es ce possible ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    using System;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
     
    namespace WindowsFormsApplication1
    {
        static class Program
        {
            [DllImport("user32")]
            static extern bool SetForegroundWindow(IntPtr windowHandle);
     
            /// <summary>
            /// Point d'entrée principal de l'application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                bool firststart = true;
                int i = 0;
                Process Proc_EnCours = Process.GetCurrentProcess(); //Info sur lui même
                Process[] Les_Proc = Process.GetProcesses(); //Liste de tous les Process en cours
                foreach (Process Processus in Les_Proc) //Pour chaque Process
                {
                    if (Proc_EnCours.ProcessName == Processus.ProcessName && Proc_EnCours.Id != Processus.Id) //Vérifie si même nom et pas lui même
                    {
                        SetForegroundWindow(Les_Proc[i].MainWindowHandle); //Donne la main sur le Process déjà existant
                        firststart = false;
                        break; //Sort de la boucle
                    }
                    i++;
                }
                if (firststart == true)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                }
            }
        }
    }
    Merci

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Par défaut
    Salut, il me semble que j'avais réussi en utilisant ShowWindow : http://www.pinvoke.net/default.aspx/user32.showwindow

    Tu as plusieurs enum pour maximiser/minimiser/cacher etc.

    Je ne peux pas essayer actuellement mais de mémoire si je me souviens bien je pouvais 'restaurer' une fenêtre réduite.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut
    merci. j'arrive à restorer pour la barre des tache mais pas le systray.
    Y a du mieux lol

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Joomla ouvrir un site existant
    Par badi3a82 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/05/2009, 10h53
  2. Comment ouvrir un projet existant
    Par piogo113 dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 02/01/2009, 06h06
  3. [FPDF] Ouvrir un fichier existant
    Par Sangdrax1604 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 13/12/2007, 12h40
  4. [OOBasic (openoffice)] Ouvrir un fichier existant
    Par richard dans le forum Basic
    Réponses: 5
    Dernier message: 25/01/2007, 20h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo