J'ai une application C++ Win32 qui a été écrite en tant que projet Windows GUI, et maintenant j'essaie de comprendre pour en faire un hybride Service/GUI. Je comprends qu'un service Windows ne peut/ne doit pas avoir une interface utilisateur. Mais permettez-moi d'expliquer ce que j'ai jusqu'ici et ce que je suis en train de photographier.Service Windows avec moniteur graphique?
CE QUE JE SUIS est une application Windows. Lorsqu'il est exécuté, il place une icône dans la barre d'état système sur laquelle vous pouvez double-cliquer pour ouvrir l'interface graphique. Le but de cette application est de traiter les fichiers situés dans un répertoire spécifié selon un horaire nocturne. L'interface graphique se compose des éléments suivants:
- Un bouton pour lancer un balayage/processus non planifié manuellement.
- Un bouton pour ouvrir une boîte de dialogue pour modifier les paramètres.
- Une zone de liste pour afficher les messages d'état envoyés à partir du thread de traitement.
- Une fenêtre dessinée personnalisée pour afficher des données d'image (le traitement de fichier comprend la création et la sauvegarde d'images).
- Une barre d'état - lorsqu'un processus n'est pas en cours d'exécution, il affiche un compte à rebours jusqu'à la prochaine analyse planifiée. Au cours d'un scan, il fournit également un retour d'état, y compris une barre de progression.
QU'EST-CE QUE JE POUR PRISE DE VUE est un service qui fonctionnera sur démarrage et ne nécessite pas un utilisateur de se connecter. Cela consisterait en le traitement de fichier planifié. Cependant, lorsqu'un utilisateur se connecte, je voudrais quand même que l'icône de la barre soit chargée et lui permette d'ouvrir une interface graphique comme décrit ci-dessus pour surveiller l'état actuel du service, modifier les paramètres, lancer un scan manuellement et suivre la progression d'un scan.
Je suis sûr que je l'ai vu des applications comme celle-ci -. Cette fonction en tant que service, même quand je ne suis pas loggué, mais encore me donner une interface utilisateur de travailler avec une fois que je ne connecte
Je pense qu'au lieu d'avoir une seule application multithread qui envoie des messages au thread GUI à partir du thread de traitement, j'ai besoin de deux applications - un service pour effectuer le traitement et une application graphique pour fournir des commentaires visuels du service et aussi envoyer des messages au service (par exemple, pour démarrer une analyse manuellement). Mais je suis nouveau pour Windows Services et je n'ai aucune idée de comment cela est fait.
Il est également possible que je sois complètement hors de la base et un service n'est pas ce que je cherche du tout.
Toute aide, idée ou suggestion serait grandement appréciée! Je vous remercie.
Nous vous remercions de votre réponse. Je n'ai jamais traité avec IPC mais votre lien semble être très utile. Je verrai ce que j'apprends. –
+1. Consultez également ma réponse ci-dessous pour obtenir quelques conseils pour configurer votre application en ligne: http://stackoverflow.com/questions/1554047/convert-ac-program-to-a-windows-service/1554405#1554405 –
Vous peut le faire avec l'interface utilisateur et le service appariés (deux entités distinctes). Le service expose un objet COM ou un serveur RPC et l'interface utilisateur se connecte à l'objet COM/serveur RPC pour effectuer le travail. –