PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Mon application est lancée en arrirère plan à l'aide d'un service que faire ?
Mon application est lancée en arrirère plan à l'aide d'un service que faire ?
Iniciado por Alexandre, 22,nov. 2018 12:10 - 3 respuestas
Miembro registrado
8 mensajes
Publicado el 22,noviembre 2018 - 12:10
Bonjour,
j'ai fait un service windev qui lance une application à chaque fois qu'une nouvelle donnée entre dans ma base de données.

en mode débogage le service marche bien, c'est à dire il lance l'application sans problème.
Quand je l'ai installé, il marche toujours mais mon application tourne en arrière-plan. Je constate qu'elle est lancée juste en regardant le processus de l'ordinateur.

PS : j'ai déjà autorisé le service à interagir avec le Bureau.

Pourrai-je avoir une aide afin que la fenêtre de mon application apparaisse ?
Merci d'avance.
cordialement.
Miembro registrado
351 mensajes
Publicado el 22,noviembre 2018 - 15:35
Bonjour,

L'interaction d'un service avec le bureau ne fonctionne que si tu es sur la session 0 (zéro). Quand tu te connectes sur ton poste, tu es sur la session 1 ... ou plus si tu es en TSE.

Depuis la version Windows Server 2003 et Windows 7 (je dis ça de mémoire) ... il n'est plus possible d’interagir sur la session en cours.

Soit tu te connectes sur la session 0 pour voir ton application se lancer ... soit tu dis à ton service de lancer ton application sur ta session.

Regarde avec "psexec" ou "tscon" ... tu pourras faire ce dont tu as besoin.

--
Bon développement, Patrick [3po.fr]
Miembro registrado
8 mensajes
Publicado el 22,noviembre 2018 - 15:53
Bonjour Patrick,

Merci pour la réponse.

Je teste en local pour l'instant.

Pourrais-je avoir un exemple d'utilisation avec "psexec" ou "tscon" ?

Merci.
Miembro registrado
351 mensajes
Publicado el 22,noviembre 2018 - 16:15
Le test du service en local est un artifice du fonctionnement réel. Le test de ton service avec F9 ou Ctrl-F9 s'exécute malheureusement dans ta session en cours.

Regarde psexec avec l'option -i qui permet de préciser le numéro de session.

Vu que c'est dans ma librairie et que je n'ai pas mon code sous la main, je ne me souviens plus comment je récupère la liste des sessions en cours me permettant ainsi d'avoir toutes les sessions ouvertes.

Mais tu peux utiliser la commande Dos "query user" pour avoir cette liste et récupérer le ID de la session, ensuite tu fais ton psexec sur ce ID, tu auras donc ton interaction.

Tu trouveras tous les paramètres de psexec ici : https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

Ce que je fais pour tester correctement un service (une fois le fonctionnement de base validé) ... tu installes ton service sur ton poste en local à partir de l'emplacement de l'exécutable que tu génères, tu arrêtes le service, tu génères l'exécutable depuis Windev, et tu relances ton service.
Utilise un log dans un fichier pour suivre son fonctionnement par exemple ou tout autre méthode qui te permet de loguer.

--
Bon développement, Patrick [3po.fr]