コード(cmd)でスクリーンセーバーをオン(Windows 7)にするにはどうすればよいですか?
5 に答える
以下はあなたの要件を満たしていますか?
start logon.scr /s
.scr
がPATH上にある限り、上記のコマンドは機能するはずです。
編集:Windows 7が付属しているかどうかはわかりませんが、実際にWindows7にインストールされているlogon.scr
ものでテストしていることを確認してください。.scr
スクリーンセーバーのサンプルコマンドラインオプションから.scr
withを呼び出すというアイデアが浮かんだことに注意してください。/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フォームからシステムスクリーンセーバーを起動するという答えでさえ、スクリーンセーバーを起動するだけで、再開時にパスワードで保護されません。
スクリプトのアイデアとスクリプトのアイデアを、 C#Windowsフォームからシステムスクリーンセーバーを起動するための回答のコードと組み合わせてcmd
vbs
、次のことを思いつきました。
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
すると、構成済みのスクリーンセーバーが有効になり、ワークステーションがロックされます。
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に時間を与えると思います。
私はWindows7を持っています。次の行を配置しました。
@start /wait %windir%\ExtraPath\ScreenSaverName.scr /s & rundll32 user32.dll,LockWorkStation
バッチ(.bat)ファイルで、適切なディレクトリに配置し、目的のショートカットキーを使用して、これを指すショートカットを作成します。
この行で\ExtraPath
は、はスクリーンセーバーが配置されているwin dir(通常はこれ\system32
)の下の追加パスであり、ScreenSaverName.scrは目的のスクリーンセーバー自体の名前です。
それは完璧に動作します。
これで、ショートカットキーを押してスクリーンセーバーを実行し、PCをロックできます。
Powershellスクリプトを試してランダムスクリーンセーバーを起動することができます。