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

Windows Forms Discussion :

Exécuter le programme en passant par le double-click sur un fichier du programme


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de wil4linux
    Inscrit en
    Février 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 205
    Points : 174
    Points
    174
    Par défaut Exécuter le programme en passant par le double-click sur un fichier du programme
    Bonjour,
    j'ai développé un outil en winform C#, qui enregistre des fichiers de configuration.
    J'aimerai savoir comment en double cliquant sur ce fichier (lorsque le programme n'est pas lancé) que le programme s'ouvre avec le fichier chargé.

    Comment faire svp ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Points : 130
    Points
    130
    Par défaut
    je ne sais pas trop comment tu as fait ton programme

    mais peut etre en définissant ton programme comme programme par défaut par défaut

    -> clique droit -> propriété
    onglet général -> s'ouvrir avec ---> modifier

  3. #3
    Membre habitué Avatar de wil4linux
    Inscrit en
    Février 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 205
    Points : 174
    Points
    174
    Par défaut
    oui ca je suis d'accord.
    Ca marche comme cela, mais le fichier sur lequel on a cliqué en amont n'est pas chargé.

    Par exemple, dans VS, quand tu double clik sur ton .sln, VS s'ouvre avec ton projet.

    Ben là j'aimerai faire pareil

  4. #4
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Tu peux créer dans ta solution un projet de type "Setup", et en fouillant dans les propriétés de ce projet tu dois pouvoir définir une extension de fichier à associer à ton exécutable.
    ಠ_ಠ

  5. #5
    Membre habitué Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 142
    Points
    142
    Par défaut
    Avec cette manipulation, ton programme est démarré et le nom du fichier est passé en paramètre de ton programme (c'est en tout cas le comportement par défaut).

    Ensuite, c'est a toi de modifier ton programme pour vérifier quels paramètres il a reçu au démarrage, pour charger toi même le fichier si nécessaire.

    Pour récupérer les arguments passé au démarrage de ton programme (dans ton cas, le nom du fichier "double cliqué") regarde dans les paramètres de la fonction Main (le point d'entrée de ton application).
    Working as designed

  6. #6
    Membre habitué Avatar de wil4linux
    Inscrit en
    Février 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 205
    Points : 174
    Points
    174
    Par défaut
    non, en fait c'est pas le fait d'associer un fichier au programme.

    En fait c'est pour donner la possiblité d'ouvrir un fichier de 2 facons différentes.

    1-> lancer le programme, puis "ouvrir un fichier" et aller chercher le fichier.

    2-double-cliquer sur le fichier, qui va déclencher l'ouverture du programme en chargeant ce fichier à l'ouverture.

  7. #7
    Membre habitué Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par wil4linux Voir le message
    2-double-cliquer sur le fichier, qui va déclencher l'ouverture du programme en chargeant ce fichier à l'ouverture.
    Pour arriver a faire cela, il te faut donc faire 2 choses :
    - Associer ton programme au type d'extension que tu veux ouvrir (pour qu'il lance automatiquement ton programme lorsque tu vas double cliquer sur ce type de fichier) : voir les commentaires plus haut
    - Modifier le code de ton programme pour charger toi même le fichier si tu récupère un nom de fichier au démarrage de l'application (voir mon post ci dessus)
    Working as designed

  8. #8
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    non, en fait c'est pas le fait d'associer un fichier au programme.
    bah si c'est exactement ce que tu demandes, que tu le veuilles ou non

    Citation Envoyé par Nikoui Voir le message
    Pour arriver a faire cela, il te faut donc faire 2 choses :
    - Associer ton programme au type d'extension que tu veux ouvrir (pour qu'il lance automatiquement ton programme lorsque tu vas double cliquer sur ce type de fichier) : voir les commentaires plus haut
    - Modifier le code de ton programme pour charger toi même le fichier si tu récupère un nom de fichier au démarrage de l'application (voir mon post ci dessus)
    je confirme ce que dit nikoui depuis deux posts.
    tu dois
    1- modifier ton programme pourqu'il puisse prendre le paramètre 1 en tant que fichier
    2- modifier le registre pour que l'extension ouvre ton programme en faisant "prog.exe %1" où %1 représentera le fichier double-cliqué
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  9. #9
    Membre habitué Avatar de wil4linux
    Inscrit en
    Février 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 205
    Points : 174
    Points
    174
    Par défaut
    Oui je suis d'accord avec vous. Comment fait-on dans ce cas là?

    Comment récupérer le nom et l'emplacement du fichier au démarrage du programme ?

    Le constructeur de la forme principale du programme est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Form1()
    {
        InitializeComponent();
    }
    Faut il intercepter un paramètre à cette endroit?
    les fichier que j'utilise sont de type xml, avec la récupération des infos du fichier avec le stream (déserialisation)

  10. #10
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    Juste pour compléter ce qui a été dit :
    pour
    modifier ton programme pourqu'il puisse prendre le paramètre 1 en tant que fichier
    il faut que tu modifie la fonction load de ton formulaire principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            void Form1_Load(object sender, EventArgs e)
            {
     
                    //si le chemin du fichier est passé en argument
                    if (Environment.GetCommandLineArgs().Length >= 2)
                    {
                        //demande quel modèle ouvrir
                        _cheminModele = Environment.GetCommandLineArgs()[1];
    Pour que ton programme se lance lors d'un double-clic sur un fichier ayant une extension particulière, tu peux indiquer cette extension dans "Type de fichier" du projet de déploiement de ton application.

  11. #11
    Membre habitué Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 142
    Points
    142
    Par défaut
    Ou bien une autre façon de faire (je m'auto cite ) :

    Citation Envoyé par Nikoui Voir le message
    Pour récupérer les arguments passé au démarrage de ton programme (dans ton cas, le nom du fichier "double cliqué") regarde dans les paramètres de la fonction Main (le point d'entrée de ton application).
    Working as designed

  12. #12
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par Nikoui Voir le message
    Ou bien une autre façon de faire (je m'auto cite ) :
    sauf que la solution de clochettes est plus propre (et pourtant j'ai tjs fait comme toi nikoui).

    en fait, récupérer les paramètres dans la main, les oblige à les passer dans le constructeur de ta From1 alors qu'on peut les récupérer grace à Environnement.GetCommandLineArgs().

    merci clochettes, j'ai appris un truc utile aujourd'hui
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  13. #13
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    Contente de t'avoir aidé (pour une fois que c'est dans ce sens là : tes posts et tes articles m'ont appris beaucoup )

  14. #14
    Membre habitué Avatar de wil4linux
    Inscrit en
    Février 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 205
    Points : 174
    Points
    174
    Par défaut
    oki merci. ca marche pas encore complement.
    ca marche dans le cas ou je glisse mon fichier sur mon executable.

    mais ca marche pas quand je fais "ouvrir avec..." sur mon fichier.

    je vais continuer de chercher

    merci pour vos posts

  15. #15
    Membre habitué Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    sauf que la solution de clochettes est plus propre (et pourtant j'ai tjs fait comme toi nikoui).
    Mouai, ça se discute. Pour moi, un Form n'est pas fait pour faire ce genre de chose, mais uniquement pour la représentation...

    Donc je préfère mettre ce code ailleurs que dans un Form_Load...
    Working as designed

  16. #16
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    pas forcément dans Form_Load mais reste que c'est bien souvent dans ta form qui charge le fichier et l'affichage dans ton interface. A moins que le programme n'ait pas besoin d'un affichage (grille, simplement affiché tel quel), la récupération des paramètres peut se faire dans la form qui contiendra le code métier de traitement du fichier, non?
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  17. #17
    Membre habitué Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    dans la form qui contiendra le code métier de traitement du fichier, non?
    Sauf que "dans un monde parfait" le code métier de traitement n'est pas dans la Form, mais ailleurs (dans un controller, ou un truc dans le genre) - la Form ne contenant que le code dédié à l'affichage et aux interactions avec l'utilisateur.

    Cela étant dit, comme on est rarement dans un monde parfait, je suis d'accord pour dire que faire ça dans le Form n'est pas si grave. Mais de là à dire que c'est plus propre de le faire de cette façon, là non je ne suis pas d'accord
    Working as designed

  18. #18
    Membre éclairé
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Points : 751
    Points
    751
    Par défaut
    Mais de là à dire que c'est plus propre de le faire de cette façon, là non je ne suis pas d'accord
    +1.
    Idéalement, le nom du fichier devrait être passé en argument d'un des constructeurs du Modèle, si l'on a une architecture de style MVC.
    mais ailleurs (dans un controller, ou un truc dans le genre)
    Le modèle est chargé de la partie métier.
    Voilà, c'était l'intervention du relou pointilleux , car dans la plupart des cas, on fait au plus pratique.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/07/2012, 10h40
  2. Réponses: 16
    Dernier message: 02/09/2011, 19h22
  3. [AC-2003] Trier un sous formulaire par bouton / double clique sur entête
    Par thefutureisnow dans le forum IHM
    Réponses: 3
    Dernier message: 22/03/2011, 14h52
  4. Réponses: 2
    Dernier message: 21/08/2008, 17h34
  5. ouverture d'un programme par double clic sur un fichier
    Par zieg18 dans le forum Visual C++
    Réponses: 6
    Dernier message: 12/07/2006, 10h02

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