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 :

Lancer un exe sans session windows


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Points : 89
    Points
    89
    Par défaut Lancer un exe sans session windows
    Bonjour ,

    J'ai développé une application windows form qui exécute plusieurs Thread en background et qui possède également une interface avec une Form. Celle-ci peut se réduite dans la zone de notification.

    Quand j'exécute mon application, tout se passe très bien sauf que quand je veux fermer ma session, celle-ci se ferme même si je l'ai réduite dans la zone de notification.

    Je préfère ne pas passer par un service windows car c'est plutôt fastidieux à débugguer.

    Comment pourrais-je faire pour maintenir l'exécution de mon application même sans session Windows ?

  2. #2
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    Utilises le Windows scheduler ou une tâche au boot de l'os :

    dans la base des registres, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Points : 89
    Points
    89
    Par défaut
    Bonjour ,

    ça fonctionne avec un .bat qui lance mon exe. Cependant, l'icône de notification ne s'affiche pas dans la zone de notification quand j'ouvre une session Windows :S

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    un service windows est très simple à débugger
    en testant if system.environment.userinteractive ou avec #if debug tu peux lancer une fenetre (vide c'est juste pour "vivre") ou le service (donc en fenetre ca fonctione pareil mais c'est débuggable dans vs)
    par contre un service n'a pas d'interface, donc il faudrait une appli en plus (qui elle serait dans le system tray) et qui dialoguerait avec le service
    c'est la façon de faire la plus propre, mais le dialogue entre les 2 ca fait du codage en plus (certains passent par les cannaux nommés, jamais essayé mais il parait que c'est simple)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    un service windows est très simple à débugger
    en testant if system.environment.userinteractive ou avec #if debug tu peux lancer une fenetre (vide c'est juste pour "vivre") ou le service (donc en fenetre ca fonctione pareil mais c'est débuggable dans vs)
    par contre un service n'a pas d'interface, donc il faudrait une appli en plus (qui elle serait dans le system tray) et qui dialoguerait avec le service
    c'est la façon de faire la plus propre, mais le dialogue entre les 2 ca fait du codage en plus (certains passent par les cannaux nommés, jamais essayé mais il parait que c'est simple)

    Le problème c'est que mon application fait beaucoup de choses lors de son lancement et je ne peux pas débugguer la méthode "OnStart()".
    N'y a t'il pas un moyen plus simple de procéder comme par exemple rendre visible par tous les utilisateurs l'icône de notification et d'empêcher la fermeture de l'application à la fermeture de session ?

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    comme dit précédemment un service peut être simple à débugger

    en changeant un peu la mécanique un service peut etre aussi une appli windows forms (définir démarrage sur void main et le type de projet sur winforms à priori)


    (désolé le convertisseur c#/vb.net n'a pas l'air en forme, ou mon code lui plait pas, donc je te laisse traduire)
    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
     
    public class monservice
     
    public shared sub main
      if system.environment.userinteractive then /// si lancé par un utilisateur (cas depuis vs ou explorateur windows)
           dim th as new system.threading.thread(adressof Demarrage) 
           th.Start /// on démarre les traitements
           dim f as new system.windows.forms.form
           system.windows.application.run(f) /// on démarre une fenetre pour que l'appli ne s'arrete pas
        else /// donc démarré en tant que service
          dim s as new monservice 
          system.serviceprocess.servicebase.run(s) /// on lance notre service
       end if
    end sub
     
    overrides sub onstart
       dim th as new system.threading.thread(adressof Demarrage)
       th.Start /// on démarre les traitements
    end sub
     
    private sub Demarrage
       /// ici tu démarres tout ce qu'il te faut
    end sub

    ici que tu sois dans vs ou en service le démarrage est le même, sauf que dans vs tu auras une fenetre qui s'affichera
    donc l'appli démarrera (alors qu'un service ne peut pas démarrer depuis vs)
    et tu pourras alors débugger ton service depuis vs



    une application qui tourne dans une session est obligée de s'arreter à la fermeture de session
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    je n'ai plus le nom en tête mais il existe un soft qui permet de transformer une application en service.

    Je l'avais utilisé il y a 5 ans, et ça avait parfaitement fonctionné.
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

Discussions similaires

  1. lancer une application perl+tk sans console (windows/linux)
    Par mmiikkll dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 07/09/2010, 16h56
  2. Lancer l'exe sans passer par C::B
    Par Macharius66 dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 31/01/2009, 13h37
  3. Lancer un .exe sans la fenêtre msdos
    Par eose1 dans le forum Général Python
    Réponses: 4
    Dernier message: 04/12/2007, 19h45
  4. Réponses: 1
    Dernier message: 16/01/2006, 20h15
  5. Lancer mon exe au démarage de Windows
    Par zejo63 dans le forum Installation, Déploiement et Sécurité
    Réponses: 6
    Dernier message: 06/11/2005, 15h05

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