@echo off
REM 画面ロックフラグ
set "lockFlag=0"
REM タイムアウト値(秒)
set "timeout=15"
REM キーボード入力およびマウス入力を監視するVBSファイルを作成
(
echo Set objShell = CreateObject("WScript.Shell")
echo strInitialIdleTime = objShell.AppActivate("Batch File")
echo Do
echo intIdleTime = objShell.AppActivate("Batch File")
echo If intIdleTime - strInitialIdleTime >= %timeout%000 Then
echo objShell.Run "rundll32.exe user32.dll,LockWorkStation"
echo set lockFlag=1
echo End If
echo WScript.Sleep 1000
echo Loop While True
) > CheckIdle.vbs
REM VBSファイルをバックグラウンドで実行
start /B wscript //nologo CheckIdle.vbs
REM alt+enterキーの入力を監視するVBSファイルを作成
(
echo Set objShell = CreateObject("WScript.Shell")
echo Do
echo If objShell.AppActivate("Batch File") And objShell.AppActivate("Batch File").Document.Title = "Batch File" Then
echo If objShell.CapsLock And objShell.ScrollLock And objShell.NumLock Then
echo WScript.Sleep 100
echo If objShell.CapsLock And objShell.ScrollLock And objShell.NumLock Then
echo objShell.Popup "OKを押すとバッチファイルを終了します。", 0, "終了の確認", 1
echo If Err.Number = 0 Then
echo exit
echo End If
echo End If
echo End If
echo End If
echo WScript.Sleep 100
echo Loop While True
) > CheckAltEnter.vbs
REM VBSファイルをバックグラウンドで実行
start /B wscript //nologo CheckAltEnter.vbs
REM 画面ロック解除監視のタイマーを開始
timeout /T %timeout% /NOBREAK > nul
REM 画面ロック解除
if %lockFlag% equ 1 (
rundll32.exe user32.dll,LockWorkStation
)
REM バッチファイルの終了メッセージ
echo バッチファイルを終了します。