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 :

Executer un programme externe en mode GUI


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Executer un programme externe en mode GUI
    Je cherche a lancer un programme Externe (.exe) à partir d'un dll que j'ai créée.

    je viens de faire quelques tests, si je créé un projet "Windows application" et que dans ma Form je place un bouton sur lequel j'attache le code suivant: Process.Start("notepad") sur l'evenenement "click";
    en cliquant sur mon bouton lorsque je lance l'appli, Notepad se lance correctement en mode GUI et je peux utiliser notepad pour saisir du texte.
    Maintenant je copie le meme code dans ma dll et lorsque elle est executée Notepad se lance mais il est seulement visible dans le Task Manager et pas d'acces possible a notepad.

    Comment est ce que je pourrai faire pour que notepad ou un .exe soit en mode GUI comme dans mon premier test ?
    Malgres mes recherches sur plusieurs forums dont celui-ci je n'ai pas trouvé de solution. Toutes celles trouvées lance le programme comme un service sans laisser la possibilité a l'utilisateur d'interagir.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Si tu commencais par nous montrer le code que tu utilises pour lancer Notepad ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Voila le premier test qui fonctionne car c'est une WindowsApplication.
    Notepad se lance sans problème et je peux taper du texte dans celui-ci.
    **************************
    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
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;
     
    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                Process.Start("notepad");
            }
        }
    }
    **************************

    Et là la classe qui me genere une DLL avec laquelle je lance mon .exe lors d'un evenement (J'ai volontairement supprimer la déclaration des propriétés pour limiter de trop scroller sur le forum
    **********************
    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
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Metastorm.Engine.Interface;
    using Metastorm.ProcessEvents.CodeBehindSupport;
    using System.Diagnostics;
     
    namespace Metastorm.ProcessEvents.Schneider_chr32_Process
    {
        // The dll file will need publishing to an Engine machine
        // at one of the following locations:
        // C:\Program Files\Metastorm BPM\Engine\dotnetbin
        // C:\Program Files\Metastorm BPM\Engine\dotnetlib
        public partial class Schneider_chr32_Process
        {
     
            #region properties
           // supression des propriétes pour simplifier la lecture dans le forum
            #endregion
     
            public Schneider_chr32_Process()
            {
                InitializeComponent();
                currentVersion = 2;
                //   Set warn mode for version conflicts
                //   WarnOnError
                //   StopOnError
                warnMode = WarningStatus.WarnOnError;
            }
     
            public bool ActionAction2FromStageRF_chr32_ReceiptWhenActionStarted()
            {
                Process.Start("notepad");
                return true;
            }
        }
    }
    **********************
    voila les deux versions
    j'aimerai avoir le comportement de la première solution dans la deuxieme c'est a dire pouvoir avoir accés à notepad pour par exemple y taper du texte.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Heu là, c'est très étrange, je ne vois pas pourquoi le processus n'apparait pas avec sa fenêtre

    Tu es sur que la méthode ActionAction2FromStageRF_chr32_ReceiptWhenActionStarted est bien déclenchée ?

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    c'est pas très lisible sans

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    merci Smyley pour le tuyau

    Oui le programme passe bien par mon evenement et lance notepad en tache de fond.

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Personne n'a jamais lancé un .exe en mode GUI à partir d'une DLL ?

  8. #8
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    la dll et l'application windows se trouve bien sur la même machine ?
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    oui tout est sur la même machine.
    Est ce que quelqu'un a deja fait le test avec par exemple notepad?
    Pour etre plus précis, j'ai mon Application MetaStorm qui me permet de gerer des evenements en externe.
    Sous C# j'ai donc traité un de ces evenements et c'est a l'interrieur de celui-ci que je dois lancer une appli .exe (notepad pour les test ça suffit).
    MetaStorm Utilise bien cette DLL créé car elle utilise des données de celle-ci pour mettre a jour des champs. Je suis donc sur que l'appli passe par mon evenement.
    En plus je peux voir Notepad lancé dans les services du Task Manager de Windows.

  10. #10
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    Je viens de faire un exemple de solution avec deux projets :

    Une application windows avec un bouton et une Dll avec une classe et une méthode qui lance notepad (Process.start("notepad"))

    Sur le clic de mon bouton j'appelle la méthode de ma dll et notepad s'ouvre normalement.
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Sympa d'avoir fait des tests de ton coté
    ça doit être mon application MetaStorm qui gère differement les appels des DLL.
    Je vais essayer de faire d'autres tests
    Merci pour ton aide

Discussions similaires

  1. [C#] Comment executer un programme externe ?
    Par Worldofdada dans le forum C#
    Réponses: 7
    Dernier message: 11/02/2009, 14h36
  2. [Système] execution des programmes externes
    Par jadoo dans le forum Langage
    Réponses: 2
    Dernier message: 06/11/2006, 16h55
  3. Exécuter un programme externe et détecter sa terminaison
    Par leserapheen dans le forum Pascal
    Réponses: 10
    Dernier message: 04/10/2006, 17h19
  4. [VB6]Executer un programme externe et récuperer les sorties
    Par agro dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 29/03/2006, 13h08
  5. [Système] Executer un programme externe depuis un scripte php
    Par Scorpion Rouge dans le forum Langage
    Réponses: 1
    Dernier message: 24/01/2006, 11h59

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