Question

Comment activer l'économiseur d'écran (Windows 7) avec un code (en cmd)?

Était-ce utile?

La solution 5

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 - le seul inconvénient, c’est que vous ne pouvez pas interagir avec votre ordinateur pendant 7 secondes, mais j’imagine qu’il en faut 7 pour donner à ppl le temps de rendre l’écran de veille 'permanent'.

Autres conseils

Les éléments suivants répondent-ils à vos exigences?

start logon.scr /s

Tant que le .scr est sur le chemin PATH, la commande ci-dessus doit fonctionner.

EDIT: Je ne sais pas si Windows 7 est fourni avec logon.scr , assurez-vous de le tester avec un .scr réellement installé dans Windows. 7.

Notez que j'ai eu l'idée d'invoquer simplement le .scr avec / s à partir de Économiseur d'écran, exemple d'options de ligne de commande :

  

Lorsque Windows exécute votre économiseur d'écran, il   le lance avec l'une des trois commandes   options de ligne:

     
      
  • / 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 le paramètre spécifié.   poignée de fenêtre.
  •   

EDIT 2:

J'ai effectué quelques recherches supplémentaires et découvert que vous pouviez 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 n'est parfaite, les deux révèlent un scintillement du bureau après la désactivation de l'économiseur d'écran et juste avant le verrouillage du poste de travail.

Il peut ne pas être possible de reproduire le comportement du système consistant à démarrer l’économiseur d’écran et la protection du mot de passe lors de la reprise. Même la réponse à l'option Lancer l'économiseur d'écran du système à partir de C # Windows Form ne démarre que l'économiseur d'écran, elle ne protège pas le CV par un mot de passe .

Création des idées de script cmd et vbs avec le code de réponse à la commande Lancer l’écran de veille du système à partir de C # Windows Form , j’ai proposé ce qui suit:

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 le construire, installez .NET Framework , copiez et collez le code ci-dessus dans le verrou . cs , puis exécutez:

%SystemRoot%\Microsoft.NET\Framework\v3.5\csc.exe lock.cs

Placez le lock.exe créé dans votre chemin, puis tapez lock pour activer l'économiseur d'écran configuré et verrouiller votre poste de travail.

J'ai Windows 7. J'ai placé la ligne:

@start / wait% windir% \ ExtraPath \ ScreenSaverName.scr / s & amp; rundll32 user32.dll, LockWorkStation

dans un fichier de commandes (.bat), placez-le dans un répertoire approprié et créez un raccourci pointant vers celui-ci, avec la touche de raccourci souhaitée. Dans cette ligne, \ ExtraPath est le chemin supplémentaire situé sous votre répertoire win (généralement, \ system32) où se trouvent les écrans de veille. ScreenSaverName.scr est le nom de l’écran de veille souhaité.

Cela fonctionne parfaitement.

Je peux maintenant appuyer sur les touches de raccourci pour exécuter l'économiseur d'écran et verrouiller le PC.

Merci beaucoup.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top