문제

코드 (CMD)로 Screensaver를 켜는 방법 (Windows 7)?

도움이 되었습니까?

해결책 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 초 동안 PC와 상호 작용할 수 없다는 것입니다. 그러나 Screensaver를 '영구적으로 만들기 전에 PPL 시간을주는 7 개가 있다고 생각합니다.

다른 팁

다음이 귀하의 요구 사항을 충족합니까?

start logon.scr /s

길이 .scr 위의 명령이 작동해야합니다.

편집 : Windows 7이 함께 제공되는지 모르겠습니다. logon.scr, 당신이 그것을 테스트하고 있는지 확인하십시오 .scr 실제로 Windows 7에 설치되어 있습니다.

나는 단지 .scr ~와 함께 /s ~에서 스크린 세이버 샘플 명령 줄 옵션:

Windows가 Screensaver를 실행하면 세 가지 명령 줄 옵션 중 하나를 사용하여 시작합니다.

  • /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 Form에서 System Screensaver를 시작한 답변 화면 보호기 만 시작하고 이력서에서 암호 보호되지 않습니다.

함께 넣다 그만큼 cmd 그리고 vbs 스크립트 아이디어 코드로 C# Windows Form에서 System Screensaver를 시작한 답변 나는 다음을 생각해 냈다.

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 프레임 워크를 설치하십시오, 위의 코드를 복사하여 붙여 넣습니다 lock.cs, 그 다음 달리기 :

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

생성물을 넣으십시오 lock.exe 그 후, 그 후에 타이핑 lock 구성된 화면 보호기를 사용하고 워크 스테이션을 잠그십시오.

나는 Windows 7이 있습니다. 나는 줄을 배치했습니다.

@Start /Wait %Windir % extrapath screensavername.scr /s & rundll32 user32.dll, lockworkstation

배치 (.BAT) 파일에서 적절한 디르에 놓고 원하는 바로 가기 키와 함께이를 가리키는 바로 가기를 만들었습니다. 이 라인에서 extrapath는 화면 보호기가 위치한 Win Dir (일반적으로 System32)의 추가 경로이며 ScreenSaverName.scr은 원하는 화면 보호기 자체의 이름입니다.

완벽하게 작동합니다.

이제 바로 가기 키를 눌러 화면 보호기를 실행하고 PC를 잠글 수 있습니다.

정말 감사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top