Dans quelle session tournent les services Windows ?

Toutes les semaines un peu de code pour aller plus loin avec Windows 7

Retrouvez l'intégralité des questions / réponses sur le développement sous Windows 7 dans l'article suivant.

Commentez cet article : 41 commentaires Donner une note à l'article (5)

Article lu   fois.

Les deux auteurs

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Dans quelle session tournent les services Windows ?

Les services Windows tournent dans la session 0 et depuis Windows Vista ils sont seuls. En effet avec Windows XP, les applications et les services Windows tournaient ensemble en session 0. Avec Windows Vista et Windows 7 ce n'est plus le cas. Néanmoins, comme les messages Windows ne peuvent pas traverser les sessions, un service Windows est désormais incapable d'afficher une interface utilisateur avec les API de base de Windows, ce qui n'était pas le cas avec Windows XP.

Pour afficher un message simple, il suffit alors d'utiliser la fonction WTSSendMessage, comme illustré dans le listing suivant :

 
Sélectionnez
void ShowMessage(LPWSTR lpszMessage, LPWSTR lpszTitle)
{
	DWORD dwSession = WTSGetActiveConsoleSessionId();
	DWORD dwResponse = 0;

	WTSSendMessage(WTS_CURRENT_SERVER_HANDLE, dwSession,
		lpszTitle,
		static_cast<DWORD>((wcslen(lpszTitle) + 1) * sizeof(wchar_t)),
		lpszMessage,
		static_cast<DWORD>((wcslen(lpszMessage) + 1) * sizeof(wchar_t)),
		0, 0, &dwResponse, FALSE);
}

Pour des scénarios plus complexes, il faut utiliser CreateProcessAsUser.

Pour plus d'infos :

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2011 Microsoft MSDN France. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.