Je cherche à montrer une forme d'un service sur Vista (en utilisant WinForms .NET)Services Vista: Peut afficher un formulaire sur un bureau invisible?
Il est évident que la forme ne serait pas montrer à l'utilisateur de la console, que les services sont isolés dans la session 0.
Cependant l'expérience est de voir s'il est possible de "montrer" une forme invisible et d'obtenir un handle de fenêtre & boucle de message
J'ai essayé mais quand j'émets form.Show(), seul l'événement formulaire.Load ne déclenche pas .Shown ou .FormClosing
Y at-il un moyen de capturer windo ws messages de cette manière comme une application utilisateur serait?
Je n'ai pas essayé de rendre le service 'interactif' car je ne souhaite pas interagir avec l'utilisateur connecté.
Un grand merci. Comment avez-vous commencé le formulaire dans votre test? J'ai essayé ShowDialog() mais j'ai obtenu >> 'System.InvalidOperationException' L'affichage d'une boîte de dialogue modale ou d'un formulaire lorsque l'application n'est pas en cours d'exécution en mode UserInteractive n'est pas une opération valide. Spécifiez le style ServiceNotification ou DefaultDesktopOnly pour afficher une notification d'une application de service. << Je veux afficher cette fenêtre (cachée) et obtenir des messages pour tenter de gérer WM_QUERYENDSESSION dans le service lorsque le système est en cours d'arrêt - dans une tentative d'annuler shutdown en conjonction avec ShutdownBlockReasonCreate –
J'ai utilisé Application.Run dans mon test et cela fonctionne bien. ShowDialog avait l'habitude de fonctionner correctement mais apparemment ils ont ajouté une vérification dans le framework 2.0 pour l'interdire. Personnellement, je pense qu'annuler la fermeture d'un service n'est pas une très bonne idée, mais si vous voulez vraiment faire cela, cela devrait fonctionner. Appelez simplement Application.Run (myFormInstance) au lieu de myFormInstance.ShowDialog. –