Как включить заставку (windows 7) по коду (в cmd)?[закрыто]
-
07-07-2019 - |
Вопрос
Как включить заставку (windows 7) по коду (в cmd)?
Решение 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();
}
}
Это работает - единственным недостатком является то, что вы не можете взаимодействовать с ПК в течение примерно 7 секунд, но я предполагаю, что его 7 дают ppl время перед тем, как сделать заставку "постоянной".
Другие советы
Соответствует ли следующее вашим требованиям?
start logon.scr /s
Пока .scr
находится в PATH, приведенная выше команда должна работать.
РЕДАКТИРОВАТЬ:Я не знаю, поставляется ли Windows 7 logon.scr
, убедитесь, что вы тестируете его с помощью .scr
который фактически установлен в Windows 7.
Обратите внимание, что у меня возникла идея просто вызвать .scr
с /s
от Примеры параметров командной строки заставки:
Когда Windows запускает заставку, она запускает его одной из трех команд Опции линии:
- /s — запустить заставку в полноэкранном режиме.
- /c — показать диалоговое окно настроек конфигурации.
- /p #### – Отобразить превью заставки с помощью указанного оконная ручка.
РЕДАКТИРОВАТЬ 2:
Я провел дополнительный поиск и обнаружил, что вы можете создать lock.cmd
:
@start /wait logon.scr /s & rundll32 user32.dll,LockWorkStation
Или 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"
Ни один из этих ответов не идеален: оба показывают мерцание рабочего стола после отключения заставки и непосредственно перед блокировкой рабочей станции.
Возможно, не удастся воспроизвести поведение системы при запуске заставки и защите паролем при возобновлении работы.Даже ответ на запуск системной заставки из формы C# Windows запускает только заставку, при возобновлении работы пароль не защищает.
Объединение идей сценариев cmd
и vbs
с кодом из ответа на Запуск системной заставки из C # Windows Form я придумал следующее: р>
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();
}
}
Чтобы создать его, установите .NET Framework , скопируйте и вставьте приведенный выше код в замок . cs
, затем запустите:
%SystemRoot%\Microsoft.NET\Framework\v3.5\csc.exe lock.cs
Поместите созданный файл lock.exe
в свой путь, после чего при вводе lock
включится настроенная заставка и заблокируется ваша рабочая станция.
У меня Windows 7. Я разместил строку:
@start / wait% windir% \ ExtraPath \ ScreenSaverName.scr / s & amp; rundll32 user32.dll, LockWorkStation
в пакетном файле (.bat), поместите его в соответствующий каталог и создайте ярлык, указывающий на это, с нужной клавишей быстрого доступа. В этой строке \ ExtraPath - это дополнительный путь к вашему каталогу win (обычно это \ system32), где расположены хранители экрана, а ScreenSaverName.scr - это имя требуемой заставки. Р>
Работает отлично. Р>
Теперь я могу нажимать сочетания клавиш, чтобы запустить заставку и заблокировать компьютер. Р>
Большое спасибо. Р>
Вы можете попробовать скрипт Powershell для запуска случайной заставки а>. р>