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 :

Appel executable externe


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut Appel executable externe
    Bonjour,

    Je vous explique mon problème.

    J'ai un service windows qui tourne sur mon pc et j'aimerais que ce service appel le GUI que j'ai également créer afin de visualiser son état ou autre.

    Le service et le GUI sont deux programmes différents donc deux exécutables.

    J'ai trouvé comment faire pour lancer un exécutable depuis mon service windows.

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Process myInfo = new Process(); 
    myInfo.StartInfo.FileName = "MonAppli.exe"; 
    myInfo.StartInfo.WorkingDirectory = "Repertoire"; 
    myInfo.Start();
    Cela fonction à moitié car dans ma liste de processus le GUI ce lance mais l'IHM du GUI ne ce lance pas.

    Mon but est que l'IHM le lance également lors de l'appel du GUI.

    Est ce que quelqu'un sais comment faire ?.?

    Je ne comprend pas pourquoi elle ne ce lance pas car quand je le lance avec le .exe l'IHM est ouverte directement.

    Est ce que quelqu'un peux m'aider ?.?

    Merci d'avance pour vos réponse.

    Cordialement

  2. #2
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    tu n'as pas un problème de droit par hazard?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Je ne sais pas je lance mon service en LocalSystem est ce que cela peut poser problème ?

  4. #4
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    éventuellement aussi permettre d'interagir le service avec le bureau (réglages du service dans windaube)

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    éventuellement aussi permettre d'interagir le service avec le bureau (réglages du service dans windaube)
    Je ne comprends pas ce que tu veux dire ?.? Peux tu être plus clair.

  6. #6
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Par contre je viens de tester ce code avec un projet Windows Form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Process myInfo = new Process(); 
    myInfo.StartInfo.FileName = "MonAppli.exe"; 
    myInfo.StartInfo.WorkingDirectory = "Repertoire"; 
    myInfo.Start();
    l'application du GUI ce lance correctement et l'IHM également.

    Cela viens donc qu'il s'agit d'un service windows.

    Il est lancer en LocalSystem est ce que cela peux venir de là ?.?

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Désolé, mais ce n'est pas clair.

    Chez moi GUI = IHM.

    Alors essaye de préciser ce que tu veux faire, car c'est pas limpide.

  8. #8
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Désolé, mais ce n'est pas clair.

    Chez moi GUI = IHM.

    Alors essaye de préciser ce que tu veux faire, car c'est pas limpide.
    Je reformule.

    J'ai 2 programmes, un est un windows services et un second est un windows form (GUI). Le programme en windows form est mon GUI, c'est lui qui contient mes IHM.

    Voici mon problème : je lance mon service windows et ce dernier doit lancer automatiquement le GUI sans l'aide de l'utilisateur.

    Voici le code que j'utilise pour lancer un programme externe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Process myInfo = new Process(); 
    myInfo.StartInfo.FileName = "MonAppli.exe"; 
    myInfo.StartInfo.WorkingDirectory = "Repertoire"; 
    myInfo.Start();
    Voici les 2 tests que j'ai réalisé :

    - Code exécuté depuis un windows form : le programme du GUI s'exécute correctement et l'IHM apparait instantanément.

    - Code exécuté depuis le service windows : le programme ce lance car il est présent dans la liste des processus windows mais l'IHM n'apparait pas.

    Pourquoi elle n'apparait pas ?.? car il faut absolument qu'elle s'affiche pour mon utilisateur.

    Pour info : le service windows est lancé en LocalSystem.

    MErci de m'aider.

    Cordialement

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    C'est plus clair, merci.

    Mais ce que tu fais ne me semble pas très logique. (je ne dis pas que c'est impossible mais que à première vue ce n'est pas très logique).

    Peux tu exprimer ton besoin fonctionnel ? (il est pour le moins inhabituel de faire lancer un GUI par un service).

  10. #10
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    C'est plus clair, merci.

    Mais ce que tu fais ne me semble pas très logique. (je ne dis pas que c'est impossible mais que à première vue ce n'est pas très logique).

    Peux tu exprimer ton besoin fonctionnel ? (il est pour le moins inhabituel de faire lancer un GUI par un service).
    Voici mon besoin.

    Le service permet de récupérer des boitiers GPS sur des ports TCP. Il récupère donc les informations nécessaire dans une base de données MySQL ou SQL Serveur.

    Donc depuis le GUI l'utilisateur à la possibilité de paramétrer la connexion à la base de données. Une fois les informations saisie par l'utilisateur et valider elles sont stockées dans la base de registre en crypter .

    Lors de chaque lancement ou redémarrage du service, il va récupérer les informations de connexion dans la base de registre puis les décrypte et essai de ce connecter à la base de données.

    Si les informations sont correct pas de problème le programme fonctionne très bien.

    Mais si l'utilisateur s'est trompé par exemple dans le password, le service ne pourra pas se connecter correctement et donc j'aimerai a ce moment là que le GUI soit lancé automatiquement afin que l'utilisateur puisse être averti qu'il y a une erreur de connexion à la BDD et qu'il puisse la reconfigurer directement.

    J'espère que tu comprends ... lol

    Sinon je suis la pour t'aider à comprendre.

    Merci de prendre un peu de ton temps pour m'aider.

    Cordialement

  11. #11
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    et pourquoi tu ne met pas le traitement dans ton application Winform?

  12. #12
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Citation Envoyé par chamamo Voir le message
    et pourquoi tu ne met pas le traitement dans ton application Winform?
    Bas mon application windows form n'est pas lancé automatiquement par le serveur, mais seulement sur demande de l'utilisateur ou par le service (ci possible).

    Et le GUI peut être déporté sur une autre machine, elle ne sera pas forcément sur la même machine que le service.

    Avez vous une idée ou une solution à mon problème ?

  13. #13
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Citation Envoyé par ppphil Voir le message
    éventuellement aussi permettre d'interagir le service avec le bureau (réglages du service dans windaube)
    Dans la gestion de l'ordinateur tu vas sur "Services", tu cliques droit sur le service en question, tu cliques sur "Propriétés", tu vas sur l'onglet "Connexion" et tu coche la case "Autoriser le service à interagir avec le bureau"

  14. #14
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Citation Envoyé par ppphil Voir le message
    Dans la gestion de l'ordinateur tu vas sur "Services", tu cliques droit sur le service en question, tu cliques sur "Propriétés", tu vas sur l'onglet "Connexion" et tu coche la case "Autoriser le service à interagir avec le bureau"
    Je me suis rendu sur l'onglet que tu m'as indiqué et voici la configuration par défaut de mon service (lien)

    http://img411.imageshack.us/img411/3982/imglhh.jpg

    Par contre j'ai modifié pour tester et je l'ai mis en compte system local et j'ai autorisé d'interagir avec le bureau et cela fonctionne maintenant.

    Pouvez vous me dire comment mettre c'est paramètres par défaut ?.?

    Et surtout est ce que cela engendre une grande différence entre les 2 modes de connexion ?

  15. #15
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Je vais peut-être dire des conneries là, mais bon j'essaie.
    En LocalSystem, ton service tourne sous ta session. Il a donc les droits d'interagir avec ton bureau.
    Sinon, dans ton cas, il tourne au niveau du système, que tu sois logué en tant que ceci ou cela.
    C'est une différence majeure.
    Quant à savoir si tu peux mettre par défaut l'interaction avec le bureau, je cherche moi aussi depuis longtemps.

  16. #16
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par ppphil Voir le message
    Je vais peut-être dire des conneries là, mais bon j'essaie.
    En LocalSystem, ton service tourne sous ta session.
    Non, pas du tout !!!

    - En LocalSystem, le service tourne sous le compte built-in LocalSystem qui a un certain nombre de privilèges particuliers.
    - un service est (par définition) indépendant de la session puisqu'il démarre avant la mise en session et peut tourner sans session ouverte (heureusement pour les serveurs !).

    Il a donc les droits d'interagir avec ton bureau.
    Le droit d'interagir avec le bueau est un privilège spécifique du compte LocalSystem.

    Quant à savoir si tu peux mettre par défaut l'interaction avec le bureau, je cherche moi aussi depuis longtemps.
    Ca doit être possible au niveau du service installer, je vérifie dès que j'ai un moment.

  17. #17
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Merci pour votre aide je comprends un peu mieu.

    Je vais essayer de regarder de mon coté sur google pour voir si le paramétrage et possible ou non.

    Mais si quelqu'un trouve quelque chose merci de me tenir informé. Car j'ai peur de revenir vers vous rapidement pour cause de non résultat à ma recherche

  18. #18
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Non, pas du tout !!!
    Aïe !

  19. #19
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    http://www.supinfo-projects.com/fr/2...net_service/3/

    Voici un tuto qui permet normalement de modifier la clé de la base de registre afin de pouvoir donner l'interaction au bureau.

    Mais je ne comprends pas du tout le code de cette personne.

    Si quelqu'un peux m'aider et notamment le mettre au clair.

    Merci de votre aide.

Discussions similaires

  1. [c#]Lancement d'un executable externe
    Par jldgbu dans le forum C#
    Réponses: 2
    Dernier message: 30/12/2006, 16h21
  2. appel à script externe
    Par pistache42 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/09/2006, 17h10
  3. Réponses: 4
    Dernier message: 01/05/2006, 14h37
  4. Appel application externe
    Par gerald2545 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 28/01/2005, 18h54
  5. appel programme externe depuis pl/sql
    Par txouki dans le forum PL/SQL
    Réponses: 6
    Dernier message: 11/05/2004, 18h35

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