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 :

Comment lancer une application qu'une seule fois ?


Sujet :

C

  1. #1
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut Comment lancer une application qu'une seule fois ?
    Bonjour,

    je dois réaliser une application qui doit lancer une seule fois une application Windows comme la calculatrice par exemple dont l'exe est calc.exe

    Comment faire pour que cette application ne soit lancée qu'une seule fois ?

    Merci d'avance pour votre aide.
    Bye

  2. #2
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    J'ai une idée, mais elle très "barabare", bon, il faudrait (je le fais en pseudo code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Lors de l'execution :
     
    -Vérifier si un fichier "open_var" existe
    -si oui alors verifier son contenu
    -si contenu = 0 alors ouvrir le logiciel
    -sinon si contenu = 1 alors quitter le logiciel
    -sinon si fichier existe pas, créer et mettre 1 dedans
     
    Lors de la fermeture :
     
    -Soit mettre 0 dans le fichier, soit le supprimer
    Le mieux ce serait de ranger dans un répertoire genre : C:\Mon logiciel\Truc\open_var

    Voilà

  3. #3
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    Bonsoir,

    ce n'est pas une mauvais idée.
    Et en vérifiant si le process windows est lancé, ce serait possible ?

  4. #4
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    Moi je ne sais pas trop en C comment faire cela

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par _SamSoft_
    J'ai une idée, mais elle très "barabare", bon, il faudrait (je le fais en pseudo code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Lors de l'execution :
     
    -Vérifier si un fichier "open_var" existe
    -si oui alors verifier son contenu
    -si contenu = 0 alors ouvrir le logiciel
    -sinon si contenu = 1 alors fermet imédiatement le logiciel
    -sinon si fichier existe pas, créer et mettre 1 dedans
     
    Lors de la fermeture :
     
    -Soit mettre 0 dans le fichier, soit le supprimer
    Le mieux ce serait de ranger dans un répertoire genre : C:\Mon logiciel\Truc\open_var

    Voilà
    Le problème avec cette approche, c'est que si ton programme plante pour une raison ou une autre et quitte sans mettre à jour ou supprimer le fichier, il sera impossible de lancer l'application par la suite.

    J'avais fais quelque chose comme cela il y a pas mal de temps, mais c'était en Python. La solution que j'avais utilisée consistait à embarquer dans mon application un petit serveur qui n'avait nulle autre fonction que de se connecter à un port donné, puis d'exister pendant toute la durée de l'application. De cette manière, une 2ème tentative de lancement générait une erreur suite à la tentative du mini-serveur de se connecter une 2ème fois sur le même port logiciel.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par Pilloutou
    Comment faire pour que cette application ne soit lancée qu'une seule fois ?
    En Utilisant un Mutex.
    L'itération est humaine; la récursion, divine.

  7. #7
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    J'avais fais quelque chose comme cela il y a pas mal de temps, mais c'était en Python. La solution que j'avais utilisée consistait à embarquer dans mon application un petit serveur qui n'avait nulle autre fonction que de se connecter à un port donné, puis d'exister pendant toute la durée de l'application. De cette manière, une 2ème tentative de lancement générait une erreur suite à la tentative du mini-serveur de se connecter une 2ème fois sur le même port logiciel.
    C'est une idée

    Sinon pour la solution Mutex (ca veut dire quoi), je ne vois pas trop qu'est ce qu'il faut effectuer comme action, faudrait il verifier si un certain nom et type de classe existe déjà ?

  8. #8
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    le mutex n'est valable que pour le lancement de l'application développé ? Hors, moi je dois développer un script C qui lance une seule fois une application Windows comme la calculatrice Windows dont l'exe est calc.exe

    Je ne sais pas si la méthode du Mutex fonctionne dans ce cas.

    Merci d'avance.

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Si je ne me trompe pas, calc.exe possède une fenêtre de nom "Calculatrice", donc teste si la fenêtre existe avec FindWindow et c'est bon, à moins que je n'aie rien compris
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Pilloutou
    Bonjour,

    le mutex n'est valable que pour le lancement de l'application développé ? Hors, moi je dois développer un script C qui lance une seule fois une application Windows comme la calculatrice Windows dont l'exe est calc.exe

    Je ne sais pas si la méthode du Mutex fonctionne dans ce cas.

    Merci d'avance.

    ATTENTION .. Un script n'est pas du C.

    Quelque chose écrit en C est un programme...

    Que veux-tu faire ? un script ou un programme ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/06/2009, 18h16
  2. Réponses: 0
    Dernier message: 28/08/2007, 13h21
  3. Réponses: 2
    Dernier message: 24/05/2007, 13h39
  4. Lancer des applications dans une application
    Par n_nikko dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/03/2007, 20h53

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