Pour interagir avec le code à l'aide de bureau:
Mettre cela juste avant de commencer le service.
String sYourServiceName = @"MyService" //Change this to r service name
ConnectionOptions co = new ConnectionOptions();
co.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", co);
mgmtScope.Connect();
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" + sYourServiceName + "'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);
ou
Essayez d'exécuter iexplore
"Internet Explorer" en tant que compte système de la page d'ouverture de session. Exécutez simplement Process.Start("Iexplore.exe")
à partir de votre service Windows et cela devrait fonctionner, mais je ne suis pas sûr si vous pouvez exécuter iexplore
en tant que compte de niveau système.
Sinon, vous pouvez essayer de bloquer l'écran de verrouillage en écrivant une clé de saisie de base ou un enregistreur de frappe pour bloquer le verrouillage MENU+L
, vous pouvez le faire en activant l'interaction avec le bureau. J'ai posté le code pour le rendre plus facile ou le faire manuellement en allant aux services et en cliquant sur votre service. Là, vous devriez voir une case à cocher avec le texte interact with desktop
.
// M
merci CodeCanvas. Mais, j'ai besoin d'une capture d'écran IE entière, la façon dont la mention dans votre solution capture capture d'écran seulement de la page Web, j'ai besoin de l'écran entier IE. Une solution à ce problème? – Ankit
@Ankit: Désolé, je ne connais aucune méthode permettant de prendre une capture d'écran d'une application qui s'exécute dans une session Windows verrouillée. –