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 :

Afficher une application en cours quand on clique sur son exécutable pour la lancer une 2ème fois


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Par défaut Afficher une application en cours quand on clique sur son exécutable pour la lancer une 2ème fois
    Bonjour tout le monde,

    J'ai beau cherché mais je n'ai pas trouvé comment je peux afficher la fenêtre principale de mon application lorsqu'on veut la lancer une 2ème fois par clic sur son exéctuable.


    J'ai réussi à détecter que l'application est déjà encours d'exécution et ce en parcourant la liste des processus Windows et en vérifiant par le nom de l'exécutable :
    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
    42
    43
    44
    45
    TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
        char processName[MAX_PATH];
        DWORD aProcesses[1024], cbNeeded, cProcesses;
        unsigned int i=0;
     
        //Enumeration des process
        if (!EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
            return 0;
     
        // Calcul du nombre des process.
        cProcesses = cbNeeded / sizeof(DWORD);
        while ((i < cProcesses))
        {
            if( aProcesses[i] != 0 )
            {
                // Ouverture process
                HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |PROCESS_VM_READ, FALSE, aProcesses[i] );
                // Get the process name.
                if (NULL != hProcess )
                {
                    HMODULE hMod;
                    DWORD cbNeeded;
                    if (EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded))
                        GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) );
                }
     
                // Fermeture du HANDLE.
                CloseHandle( hProcess );
                WideCharToMultiByte(CP_ACP, NULL, szProcessName,MAX_PATH,processName,MAX_PATH, NULL, NULL);
                if(!strcmp( processName,monProcess))
                {
                    nbProc++;
                    /// HB 02/07/2018 : set pidAutonome : on est sure qu'il y a 2 autonome => pas besoin de parcourir le reste(nbProc ++ )
                    qDebug() << "nbProc "<< nbProc <<"# pid " <<aProcesses[i] << "# pid autonome courant "<<GetCurrentProcessId();
                    if(aProcesses[i] != GetCurrentProcessId())
                    {
                        pidAutonome = aProcesses[i];
                    }
                    /// END
                }
     
            }
            i++;
        }
        return nbProc;
    Est ce quelqu'un a une idée comment compléter ce code ou a une autre solution à me fournir ?

    Merci d'avance.

    Bien cordialement.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 151
    Billets dans le blog
    4
    Par défaut
    Salut,

    avec le handle, peut-être que SetForegroundWindow ferait l'affaire ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Afficher une activité quand on clique sur une Item
    Par Albertnoface dans le forum Android
    Réponses: 5
    Dernier message: 14/04/2017, 11h27
  2. Réponses: 4
    Dernier message: 11/02/2011, 17h09
  3. Réponses: 0
    Dernier message: 03/11/2009, 17h12
  4. Réponses: 4
    Dernier message: 30/06/2008, 15h02
  5. Afficher une TextArea quand on clique sur un bouton
    Par Goozisan dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 26/11/2006, 20h44

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