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

Langage Delphi Discussion :

Passage de paramètres de la seconde instance d'une application vers la première


Sujet :

Langage Delphi

  1. #1
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut Passage de paramètres de la seconde instance d'une application vers la première
    Delphi Tokyo 10.2 / Windows 10

    Bonjour,

    Dans Windows 10, j'ai associé une extension de fichier à mon application (lors de l'installation avec INNO SETUP).
    La première fois que je clique dessus, mon application est lancée et je peux récupérer le nom du fichier dans la variable ParamStr(1).
    En revanche, si mon application est déjà lancée, une nouvelle instance est créée.
    Comment récupérer cet événement dans l'application sans qu'une nouvelle instance soit ouverte ?

    Merci.

    Franck

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 374
    Points : 3 152
    Points
    3 152
    Par défaut
    Bonjour,
    je ne sais pas si cela te convient, mais tu peux bloquer une seconde instance de ton programme avec les Mutex

    Regarde la FAQ ici

    A+
    Charly

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    En allant plus loin sur le Mutex, tu peux aussi ajouter un EVENT, et faire que la seconde instance envoie des données à la première, WM_COPYDATA par exemple, ATOM, FileMapping... tout ce qui peut fournir une chaîne assez courte représentant la ligne de commande.

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 085
    Points : 15 507
    Points
    15 507
    Billets dans le blog
    9
    Par défaut
    Intéressante question. Je sais que Notepad++ fait cela, mais ce n'est pas du Pascal.

    En complément à la réponse de ShaiLeTroll, je signale ce tutoriel :

    Envoyer des chaînes par PostMessage

    Il y a une unité attachée à l'article.

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 664
    Points : 3 648
    Points
    3 648
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Intéressante question. Je sais que Notepad++ fait cela, mais ce n'est pas du Pascal.
    Mon éditeur de texte le fait aussi : GBEPad est réalisé avec Delphi mais pas en open source car j'utilise les composants russes EControl Syntax Editor modifiés http://www.econtrol.ru/syntedit.html). La suite de composants en contient un d'ailleurs qui permet de rendre mono instance l'application (avec passage de paramètres de la seconde instance vers la première).

    Il me semble que la JCL ou la JVCL en propose un également mais je ne retrouve pas l'information...

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 664
    Points : 3 648
    Points
    3 648
    Billets dans le blog
    2
    Par défaut
    J'ai retrouvé le composant (gratuit) qui fait cela avec la JVCL : il s'agit du TJvAppInstances.

  7. #7
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut
    Merci à tous, c'est maintenant résolu.

    J'utilisais déjà les mutex pour éviter de lancer plusieurs fois l'application.
    Je ne faisais qu'afficher un message lorsque l'utilisateur tentait de lancer l'appli plusieurs fois.
    Pour répondre à mon problème, ce que j'ai fait c'est que j'appelle la fonction FindWindow en passant comme paramètre la classe de la fenetre principale.
    je peux donc renvoyer un message vers l'application qui est déjà ouverte avec SendMessage.

    Merci

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

Discussions similaires

  1. pb pour associé un fichier chm avec un projet MFC
    Par Cédric_07 dans le forum MFC
    Réponses: 9
    Dernier message: 05/12/2006, 15h56
  2. Association type fichier et logiciel
    Par chris_wafer_2001 dans le forum Autres Logiciels
    Réponses: 14
    Dernier message: 21/11/2005, 21h12
  3. [Conception] Accès multiples à une même instance
    Par Rockz dans le forum Général Java
    Réponses: 16
    Dernier message: 31/12/2004, 14h46
  4. Réponses: 5
    Dernier message: 28/04/2004, 15h20
  5. [SHELL] Icônes associées à des fichiers
    Par agh dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 09/04/2003, 17h04

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