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

Visual C++ Discussion :

Probleme avec Service interactif


Sujet :

Visual C++

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut Probleme avec Service interactif
    Bonjour,

    j'ai essayé le création de service telle que décrite dans la faq, mais j'ai un petit problème :
    je n'arrive pas à faire interagir le service avec le bureau, même si je coche la case "autoriser le service à interagir avec le bureau" ou si je met le flag "SERVICE_INTERACTIVE_PROCESS" dans la fonction CreateService.
    Le service est lancé en LocalAccount.

    J'aimerais pouvoir visualiser ma console lorsque le service est lancé.

    Auriez-vous une idée ?

    @+

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    personne n'a d'idée ?

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    autoriser le service à interagir avec le bureau ,ne crée par pour autant une console dans le service ..
    il te faudra la créer, mais bon c'est pas terrible pour un service...
    si tu veux faire une interface de visu de ton service ce n'est pas comme ça qu'il faut proceder.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En effet, pour interagir avec un service, il vaut mieux utiliser un processus séparé pour l"utilisateur, communiquant avec des tubes nommés ou des sockets (comme FileZilla Server, McAfee VScan, NOD32...).
    Et c'est tellement plus sain au niveau sécurité qu'un service interactif: J'en ai connu un qui était disponible pour tout utilisateur (pour commencer) et qui ouvrait carrément une File Dialog si on cliquait sur le bon bouton... Parfait pour ouvrir un explorateur et/ou un invite de commande en tant que LocalSystem...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Bonjour,

    Citation Envoyé par farscape
    autoriser le service à interagir avec le bureau ,ne crée par pour autant une console dans le service ..
    Heu ... ha bon ! Mais pourtant j'ai bien une console avec mon programme, dans laquelle je fais des "printf" lorsque je le lance en mode "DEBUG" (exactement comme c'est fait dans le tuto de la faq).
    Donc en mode non debug, je ne comprends pas pourquoi je ne peux pas interragir avec en cochant la case "autoriser le service à interagir avec le bureau". Cette case sert bien à quelque chose quand même, de même que le flag "SERVICE_INTERACTIVE_PROCESS" dans la fonction CreateService ?

    Citation Envoyé par Medinoc
    Et c'est tellement plus sain au niveau sécurité qu'un service interactif: J'en ai connu un qui était disponible pour tout utilisateur (pour commencer) et qui ouvrait carrément une File Dialog si on cliquait sur le bon bouton... Parfait pour ouvrir un explorateur et/ou un invite de commande en tant que LocalSystem...
    Oui je sais bien, mais bon ... là n'est pas le problème.
    J'aimerais comprendre ...
    Déjà merci pour vos conseils.

    @+

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Le flag "interactif" permet au service d'avoir des NotifyIcon appartenant au service lui-même, ou d'afficher des fenêtres/boîtes de dialogue/boîtes de message...
    http://msdn.microsoft.com/library/de...e_services.asp
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Heu ... ha bon ! Mais pourtant j'ai bien une console avec mon programme, dans laquelle je fais des "printf" lorsque je le lance en mode "DEBUG" (exactement comme c'est fait dans le tuto de la faq).
    c'est une histoire de contexte :
    en mode debug le programme est considéré comme un programme console classique . c'est un choix personnel permettant la mise au point.
    en release c'est un service et il n'y a pas de console...


  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Citation Envoyé par farscape
    c'est une histoire de contexte :
    en mode debug le programme est considéré comme un programme console classique . c'est un choix personnel permettant la mise au point.
    en release c'est un service et il n'y a pas de console...

    Oui Oui tout à fait, j'ai bien compris, et c'est d'ailleurs nickel de faire comme ça !
    Mais du tout coup je pensais que la console restait visible en mode service (si on activait le flag) ...
    Bon apparemment non ...

    Pour faire apparaître des trucs (même si je sais que c'est pas bien, et que dans les prochaines versions de Windows on ne pourra certainement plus le faire), il faut donc :
    - soit allouer une console pour le service ?
    - soit créer une dialog box dans laquelle on printe les messages ?
    - soit lui associer un petit prog avec une communication socket ou File qui recevra les infos à printer ?
    C'est bien ça ?

    @+

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    oui c'est bien ça ...
    tu peux aussi utiliser les pipes nommés voir cet exemple .
    http://www.developpez.net/forums/sho...449#post331449
    et la un simple programme console coté client suffit ....

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    Bonjour,
    et si je ne souhaite pas passer par une communication inter-programme (socket ou pipe), les solutions 1 (AllocConsole) et 2 (DialogBox) marchent-elles aussi ?
    @+

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    dialogbox ça fonctionne ,console j'ai jamais essayé ...
    tu as une classe console dans la faq .

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Points : 256
    Points
    256
    Par défaut
    C'est OK en faisant des AllocConsole() et WriteConsole()

    Merci
    @+

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

Discussions similaires

  1. [WS 2008 R2] Probleme avec Service W3SVC sur windows 2008 R2
    Par vladock dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 18/09/2014, 13h50
  2. probleme avec service wcf
    Par tchitchimon dans le forum Silverlight
    Réponses: 4
    Dernier message: 18/07/2008, 16h21
  3. [Debutant] Probleme avec service et eventlog
    Par xavDIP dans le forum VB.NET
    Réponses: 5
    Dernier message: 06/06/2007, 18h15
  4. probleme avec Analysis Services de sql server 2000
    Par thefaycal dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/02/2006, 16h41
  5. [servlet] probleme avec service()
    Par logica dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 03/06/2005, 10h48

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