10

コード(cmd)でスクリーンセーバーをオン(Windows 7)にするにはどうすればよいですか?

4

5 に答える 5

10

以下はあなたの要件を満たしていますか?

start logon.scr /s

.scrがPATH上にある限り、上記のコマンドは機能するはずです。

編集:Windows 7が付属しているかどうかはわかりませんが、実際にWindows7にインストールされているlogon.scrものでテストしていることを確認してください。.scr

スクリーンセーバーのサンプルコマンドラインオプションから.scrwithを呼び出すというアイデアが浮かんだことに注意してください。/s

Windowsがスクリーンセーバーを実行すると、次の3つのコマンドラインオプションのいずれかを使用してスクリーンセーバーが起動します。

  • / 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フォームからシステムスクリーンセーバーを起動するという答えでさえ、スクリーンセーバーを起動するだけで、再開時にパスワードで保護されません。

于 2009-09-16T15:05:58.033 に答える
7

スクリプトのアイデアとスクリプトのアイデアを、 C#Windowsフォームからシステムスクリーンセーバーを起動するための回答のコードと組み合わせcmdvbs、次のことを思いつきました。

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をインストールし、上記のコードをコピーしてに貼り付けてから、次のコマンドをlock.cs実行します。

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

作成lock.exeしたものをパスに配置します。その後、入力lockすると、構成済みのスクリーンセーバーが有効になり、ワークステーションがロックされます。

于 2009-09-17T16:52:38.950 に答える
3
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と対話できないことですが、スクリーンセーバーを「永続的」にする前に、7がpplに時間を与えると思います。

于 2009-09-18T00:10:59.423 に答える
3

私はWindows7を持っています。次の行を配置しました。

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

バッチ(.bat)ファイルで、適切なディレクトリに配置し、目的のショートカットキーを使用して、これを指すショートカットを作成します。

この行で\ExtraPathは、はスクリーンセーバーが配置されているwin dir(通常はこれ\system32)の下の追加パスであり、ScreenSaverName.scrは目的のスクリーンセーバー自体の名前です。

それは完璧に動作します。

これで、ショートカットキーを押してスクリーンセーバーを実行し、PCをロックできます。

于 2010-11-18T16:26:48.830 に答える
2

Powershellスクリプトを試してランダムスクリーンセーバーを起動することができます。

于 2009-09-15T23:24:26.753 に答える