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

MFC Discussion :

Instance déja ouverte


Sujet :

MFC

Vue hybride

jagboys Instance déja ouverte 07/09/2006, 17h30
farscape essaye : ... 07/09/2006, 17h38
jagboys instante deja ouverte 07/09/2006, 18h13
farscape re déjà ,je ne procéderai pas... 07/09/2006, 19h17
jagboys Instance déjà ouverte 09/09/2006, 00h06
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par défaut Instance déja ouverte
    Bonjour,

    Voici un petit code que j'ai placé au début de mon appli mfc pour détecter si une instance de cette même application est déjà ouverte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Vérification d'une instance déjà ouverte
      HANDLE HWnd = CreateMutex(NULL, false, "Manager");
      if(GetLastError()==ERROR_ALREADY_EXISTS)
      {
          HANDLE h;
          h = FindWindow(NULL,"Manager");
          if(h != NULL)
         {
    	//AfxMessageBox("Instance déjà ouverte !");
    	::SendMessage((HWND)h,WM_SYSCOMMAND, SC_RESTORE, 0);
                this->DestroyWindow();
          }
      }
    Mon appli tourne en tache de fond iconisé en Trayicon.
    J'aimerais restaurer l'application automatiqument.
    Mais avec sendmessage l'application se plante complètement.

    Est ce que quelqu'un aurait une idée ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BringWindowToTop(h);

  3. #3
    Membre confirmé Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par défaut instante deja ouverte
    Bonjour,

    Toujours l'application se plante.
    En mode debug : Assertion failed
    En mode release : plantage

    Est ce quelqu'un aurait une idée d'ou ça peut venir ?
    Est ce un probleme de handle ?

    Merci d'avance

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    re déjà ,je ne procéderai pas comme ça ,
    ton test doit être placer dans InitInstance au tout début de la fonction
    si tu trouves la fenêtre tu fais un return FALSE.
    ça suffira pour abandonner l'instance du programme.

    voir faq:
    http://c.developpez.com/faq/vc/?page...NoMoreInstance

  5. #5
    Membre confirmé Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par défaut Instance déjà ouverte
    Bonjour,

    J'ai placé le même code dans InitInstance() et tout marche bien

    Merci pour votre aide.

    A bientôt

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

Discussions similaires

  1. relancer une application déja ouverte
    Par fally dans le forum C#
    Réponses: 10
    Dernier message: 12/03/2008, 19h49
  2. Réponses: 1
    Dernier message: 14/06/2007, 15h21
  3. [C#] tester Fenetre déja ouverte?
    Par codez dans le forum Windows Forms
    Réponses: 14
    Dernier message: 28/04/2006, 00h53
  4. Réponses: 7
    Dernier message: 18/04/2006, 19h29
  5. [VB]donner le focus à une application déja ouverte ou fermée
    Par Nicko29 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 21/01/2006, 14h28

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