Comment activer l'économiseur d'écran (Windows 7) par un code (en cmd)?Comment activer l'économiseur d'écran (Windows 7) par un code (en cmd)?
Répondre
using System;
using System.Runtime.InteropServices;
public static class LockDesktop
{
[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
private static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
private const int SC_SCREENSAVE = 0xF140;
private const int WM_SYSCOMMAND = 0x0112;
public static void SetScreenSaverRunning()
{
SendMessage(GetDesktopWindow(), WM_SYSCOMMAND, SC_SCREENSAVE, 0);
}
public static void Main()
{
LockDesktop.SetScreenSaverRunning();
}
}
Cela fonctionne - seul inconvénient est que u cant interagir avec pc pour quelque chose comme 7 sec, mais je pense que ses 7 années pour donner ppl temps avant de faire écran « permanent ».
Vous pouvez essayer Powershell Script To Start A Random Screen Saver.
cela signifierait le téléchargement de logiciels supplémentaires - je ne le veux pas. –
@oO .: Powershell est ** déjà installé ** sur Windows 7. – surfasb
Est-ce que ce qui suit répond à vos besoins?
start logon.scr /s
Tant que le .scr
est sur le chemin de la commande ci-dessus devrait fonctionner.
EDIT: Je ne sais pas si Windows 7 est livré avec logon.scr
, assurez-vous que vous testez avec un .scr
qui est réellement installée dans Windows 7.
Notez que j'ai eu l'idée de simplement invoquer la .scr
avec /s
de Screensaver Sample Command Line Options:
Lorsque Windows fonctionne votre écran de veille, il lance avec l'une des trois options de ligne de commande :
- /s - Démarrer l'économiseur d'écran en mode plein écran.
- /c - Affiche la boîte de dialogue des paramètres de configuration.
- /p #### - Affiche un aperçu de l'économiseur d'écran en utilisant la poignée de fenêtre spécifiée.
EDIT 2:
Je l'ai fait quelques recherches supplémentaires et a constaté que vous pouvez créer lock.cmd
:
@start /wait logon.scr /s & rundll32 user32.dll,LockWorkStation
Ou lock.vbs
:
Set objShell = CreateObject("Wscript.Shell")
' The "True" argument will make the script wait for the screensaver to exit
returnVal = objShell.Run("logon.scr", 1, True)
' Then call the lock functionality
objShell.Run "rundll32.exe user32.dll,LockWorkStation"
Aucune de ces réponses est parfait, les deux révèlent un scintillement du bureau après r l'économiseur d'écran est désactivé et juste avant le verrouillage du poste de travail.
Il peut ne pas être possible de reproduire le comportement du système lors du démarrage de l'économiseur d'écran et de la protection par mot de passe lors de la reprise. Même the answer to Launch System Screensaver from C# Windows Form commence seulement l'économiseur d'écran, il ne protège pas le mot de passe à la reprise.
Je ne me souviens pas comment cela a fonctionné dans les vieilles fenêtres, mais dans 7 il montre juste comment cet économiseur d'écran aurait l'air mais il ne l'allume pas réellement (Ce que je veux dire, c'est quand vous interagissez avec le système, l'économiseur disparaît, quand l'écran de connexion devrait s'afficher) –
@Grant, Pourriez-vous copier "Edit 3" dans une réponse séparée? Je voudrais le remettre en question, mais le but de l'upvoting est de faire en sorte que la bonne réponse soit au top, et les gens n'ont pas besoin de passer au crible les tentatives précédentes. :-) –
@system: La solution C# est maintenant une réponse séparée. J'ai laissé cette réponse telle quelle dans le cas où les solutions 'cmd' ou' vbs' sont "assez bonnes" pour les autres qui posent la même question. –
Mettre sur pied the cmd
and vbs
script ideas avec le code de the answer to Launch System Screensaver from C# Windows Form je suis venu avec les éléments suivants:
using System;
using System.Runtime.InteropServices;
public static class LockDesktop
{
[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
private static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
[DllImport("user32.dll", EntryPoint = "LockWorkStation")]
private static extern IntPtr LockWorkStation();
private const int SC_SCREENSAVE = 0xF140;
private const int WM_SYSCOMMAND = 0x0112;
public static void SetScreenSaverRunning()
{
SendMessage(GetDesktopWindow(), WM_SYSCOMMAND, SC_SCREENSAVE, 0);
LockWorkStation();
}
public static void Main()
{
LockDesktop.SetScreenSaverRunning();
}
}
Pour construire, install the .NET Framework, copiez et collez le code ci-dessus dans lock.cs
, puis exécutez:
%SystemRoot%\Microsoft.NET\Framework\v3.5\csc.exe lock.cs
Mettez le lock.exe
créé dans votre chemin, après cela, en tapant lock
devrait engager l'économiseur d'écran configuré et verrouiller votre station de travail.
Trop sucré! Cela fonctionne parfaitement pour moi sur XP, 2003 et 2008, et je ne peux pas imaginer quoi que ce soit qui ferait échouer sur Vista ou 7 (bien que je ne l'ai pas essayé là-bas). MERCI! –
@oO Remarque: Windows 7 est fourni avec .NET 3.5 SP1. Vous pouvez donc ignorer l'étape d'installation si vous essayez cette méthode. –
@system PAUSE bien, il le fait - après l'activation il y a un blip (économiseur d'écran je suppose) et ensuite vous êtes rediriger vers l'écran de connexion. il ya une solution - j'ai posté est comme une réponse –
Cela semble étrange, que partout où j'ai regardé il n'y a pas de réponse qui reflète cela dans le O/S lui-même. Ce que font tous ces hacks, c'est d'exécuter l'économiseur d'écran et puis, à l'arrêt (interrompu), le programme exécute le verrou workstation/desktop, après le fait. L'effort sans faille pour invoquer un économiseur d'écran avec une protection par mot de passe que lorsque je suis arrêté/interrompre un mot de passe est nécessaire pour revenir dans le poste de travail. Ne semble pas être un si grand ordre, n'est-ce pas? Je continuerai à rechercher tout type de solution de langage de programmation que je puisse trouver, mais qui doit évidemment être invoqué par d'autres applications au niveau de l'application (y compris les technologies de script), plutôt que d'être enterré au niveau O/S .
J'ai Windows 7. Je mis la ligne:
@Start/wait% windir% \ ExtraPath \ ScreenSaverName.scr/s & rundll32 user32.dll, LockWorkStation
dans un lot (.bat), placez-le dans un répertoire approprié et créez un raccourci pointant vers celui-ci, avec la touche de raccourci désirée. Dans cette ligne, \ ExtraPath est le chemin supplémentaire sous votre répertoire de gains (en général, c'est \ system32) où se trouvent les économiseurs d'écran, et ScreenSaverName.scr est le nom de l'économiseur d'écran désiré lui-même.
Cela fonctionne parfaitement.
Maintenant, je peux appuyer sur les touches de raccourci pour exécuter l'économiseur d'écran et verrouiller le PC.
Merci beaucoup beaucoup.
- 1. Comment puis-je déboguer le code source sur Windows 7?
- 2. Comment activer le menu dans Windows Mobile par programmation
- 3. Windows Vista/7 Connectez-vous par programme
- 4. Comment activer un second moniteur en C#?
- 5. Windows Terminal - Windows Formulaire à intégrer cmd
- 6. comment exécutez-vous un programme c en cmd
- 7. CMD Script: Comment fermer le CMD
- 8. par programme tuer un processus dans Vista/Windows 7 en C#
- 9. Windows 7 logo test
- 10. Programmer CMD en C
- 11. Stop/Start service dans le code sous Windows 7
- 12. cryptoapi windows 7 support
- 13. Comment puis-je capturer la sortie du shell cmd Windows?
- 14. Fin de la ligne sur Windows cmd
- 15. Windows 7 & VB Classic Code: Des problèmes d'exécution?
- 16. Windows 7 Action Center
- 17. Windows 7 Bibliothèques
- 18. Comment puis-je filtrer par type de fichier dans un IExplorerBrowser dans les bibliothèques Windows 7?
- 19. Windows 7 Sticky Notes
- 20. Windows 7 Device Stage
- 21. Windows 7 MSDN Expiration
- 22. Zend Studio 7 code pliage
- 23. cmd par défaut à F: lecteur
- 24. Windows 7 asp.net mvc RC
- 25. Comment se connecter par programme à IIS 7
- 26. Comment enregistrer une liste des dernières utilisations avec Windows en préparation de Windows 7?
- 27. Comment puis-je trouver la langue actuelle de Windows à partir de cmd?
- 28. Ajout à% TIME% variable dans Windows cmd script
- 29. Comportement FolderBrowserDialog sous Windows 7
- 30. Test du logo Windows 7
La solution Grant Wagners démarre l'économiseur d'écran, puis verrouille l'écran, mais le verrou provoque la sortie de l'économiseur d'écran. Cette solution démarre simplement l'économiseur d'écran sans le verrouiller explicitement, il faut donc quelques secondes avant qu'il ne soit verrouillé par les fenêtres. Inverser l'ordre de la solution Grant Wagners (en appelant LockWorkStation avant SendMessage) résout les deux problèmes, l'écran est immédiatement verrouillé et l'économiseur d'écran est démarré après. – Istador