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

Delphi Discussion :

afficher l'interface du processus


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 76
    Par défaut afficher l'interface du processus
    Bonjour

    J’ai un service qui exécute une autre application autant que service. Quand j’ouvre la session le processus de mon appli est bien la (dans le gestionnaire des tâches) mais il n’y a pas d’interface. Le seul moyen c’est de terminer le processus et relancer l’application mais s’il y a des traitements en cours les données seront perdues. Est-il possible d’afficher l’interface du processus (qui est en mode service, mais n'est pas le service lui même)?

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Par défaut
    Un service qui lance une application la fait démarrer par défaut sur la station du service et non la station interactive (WinSta0). Il faut donc passer par CreateProcess et spécifier explicitement le lancement de l'application sur le bureau utilisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        STARTUPINFO si = {0};
        si.lpDesktop = "WinSta0\\Default";
        ...
        CreateProcess(..., &si, ...);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 76
    Par défaut
    Si j’ai bien compris il faut lancer le processus explicitement en mode visible (sur le bureau utilisateur) et pas utiliser WinExec pour lancer une application.
    Et ca marchera dans le cas où aucun utilisateur n’est connecté ? Je veux dire s’il n’y a aucune session ouverte, il y a juste un PC allumé ? Car c’est justement ca l’intérêt de ce service.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Par défaut
    Non. Si aucune session n'est ouverte, rien ne sera affiché. Et si tu veux afficher quelque chose alors qu'aucune session n'est ouverte, franchement, je crains que ce soit du genre pas facile-facile du tout ;-)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 76
    Par défaut
    Non en fait je ne veux rien afficher quand aucune session n’est ouverte, mais je veux que les fenêtres d’application qui est en mode service soient accessibles quand l’utilisateur se connecte. C'est-à-dire comment est-ce qu’on peut avoir l’interface à l’ouverture de la session ? Sinon on peut rien modifier dans les paramètres du programme qui tourne en mode service ?

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Par défaut
    C'est possible, si tu marques le service comme service interactif. Néanmoins ce type de fonctionnement est déconseillé par Microsoft car il présente des failles de sécurité, un utilisateur malintentionné pouvant se servir d'une interface mal programmée pour accèder au système avec les droits du service. Par conséquent ce mode de fonctionnement ne marchera pas sous Windows Vista et ultérieur. Au final, il vaut mieux suivre le modèle proné par MS : un service n'affiche rien mais "discute" via un canal de communication (pipe, socket) avec une application graphique qui tourne en mode utilisateur et affiche une interface.

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

Discussions similaires

  1. Afficher l'interface d'un exécutable lancé en tant que Service
    Par romulus dans le forum Windows Serveur
    Réponses: 8
    Dernier message: 07/01/2009, 10h54
  2. Afficher une interface en plein ecran
    Par lfournie dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 22/09/2008, 15h50
  3. Afficher une interface en plein ecran
    Par soufiane121 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 16/05/2008, 10h34
  4. [c#]Afficher une interface webservices dans une form
    Par jambono dans le forum Services Web
    Réponses: 1
    Dernier message: 21/10/2006, 12h30
  5. afficher une interface graphique au premier plan
    Par Martin Guélat dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 03/03/2006, 10h44

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