services ne reçoivent généralement pas des messages de fenêtre. Ils n'ont pas nécessairement de poignées de fenêtre.Même s'ils le font, ils fonctionnent dans un bureau séparé. Les programmes ne peuvent pas envoyer de messages d'un bureau à un autre, de sorte qu'un service peut uniquement recevoir des messages d'un autre service ou d'un programme démarré par un service. Avant Windows Vista, vous pouviez configurer votre service pour interagir avec le bureau. Cela fait que le service s'exécute sur le même bureau que l'utilisateur connecté, de sorte qu'un programme s'exécutant en tant qu'utilisateur peut envoyer des messages aux fenêtres de votre service. Windows Vista isole les services, cependant; ils ne peuvent plus interagir avec le bureau d'un utilisateur.
Il existe de nombreuses autres façons de communiquer avec les services. Ils incluent les canaux nommés, les mailslots, les fichiers mappés en mémoire, les sémaphores, les événements et les sockets. Par exemple, avec un socket, votre service peut écouter sur un port ouvert, et les programmes qui doivent communiquer avec lui peuvent se connecter à ce port. Cela pourrait ouvrir la porte à l'administration à distance, mais vous pouvez également restreindre le service pour écouter uniquement les connexions locales.
Tout ce qui précède essaie de vous dire que vous prenez la mauvaise approche. Mais il y a aussi la question du problème. Votre programme se comporte d'une façon dans le débogueur et d'une autre manière en dehors de celui-ci. Comment déboguez-vous le service en premier lieu, s'il n'est pas installé? Quel compte d'utilisateur votre service fonctionne-t-il? Votre débogueur? Quelles techniques de débogage avez-vous essayées qui n'impliquent pas le débogueur (par exemple writeln
dans un fichier journal pour suivre les actions de votre programme)?
Exemple de code aiderait .... – CheGueVerra
Il semble que vous n'avez pas fini de poser votre question. –