【2】パソコンをロックするVBSファイルを準備する(ロックまでのカウントダウンを表示する)

パソコンをロックするVBSファイルを準備する(ロックまでのカウントダウンを表示する)

適度な休憩で高い集中力を作る。これを習慣化するには意思の力だけでは難しいところもあります。仕組みを作って休憩時間を強制してるので、その仕組を紹介していきます。今回はVBSでパソコンをロックする仕組みを作ります。

引き続きOutlookの予定に沿ってパソコンをロックする仕組みをつくっていきたいとおもいます。
前回はOutlookから今日の予定一覧を取得し、休憩中かを判断するところまで進めました。

今回は休憩中だった場合、パソコンをロックする仕組みをつくりたいと思います。

ここでいうロックはキーボードで「Windowsキー + L」を押したときの動作になります。アカウントへのログインは継続したまま、パスワードの入力画面に戻ります。

パソコンをロックするコード

今作っている仕組みにはパソコンをロックするタイミングがいくつかあるので、使い回しができるようにしておきます。

Option Explicit

dim counttime,i
if WScript.Arguments.count > 0 then
	counttime = WScript.Arguments(0)
else
	counttime = 0
End if

Dim wsShell
Set wsShell = CreateObject("WScript.Shell")

' 猶予時間の指定があれば、カウントダウン
wsShell.run "sysCountdown.bat" & " " & counttime,1,true

' パソコンをロックする
wsShell.run "rundll32.exe user32.dll,LockWorkStation",0

ここではこのファイルを「sysLockWordStatin.vbs」として保存します。

猶予時間の指定について

「sysLockWordStatin.vbs」では引数として秒数を渡せるようにしています。
これはロックされるまでに少しの猶予時間が欲しい時があるためです。

ここは個人的に必要な処理なので、猶予時間の表示が不要であれば「猶予時間の呼び出し部分」へ処理をコメントアウトしてください。

なぜ、猶予時間が必要なのか?

予定管理とは別に、実作業時間を把握するために時間の計測もしています。
休憩前には記録の切替を行う時間が必要になります。

猶予時間のカウントダウン

猶予時間は基本的に数十秒程度の短い時間になると思います。
こういった短い時間で操作を行う場合、残り時間がカウントダウン表示されるとわかりやすいと思います。

VBSは手軽にカウントを表示できるUIがないので、ここはバッチファイルを作って対応します。

カウントダウン表示を行うコード

@echo off

set counttime=%1

rem 猶予時間の指定があれば、カウントダウン
for /l %%a in (%counttime%,-1,1) do (
	echo ロックまで: %%a
	timeout /t 1 > NUL
	cls
)

ここでは上記を「sysCountdown.bat」として保存します。

猶予時間の呼び出し部分

このバッチファイルは「sysLockWordStatin.vbs」内で呼び出しています。

' 猶予時間の指定があれば、カウントダウン
wsShell.run "sysCountdown.bat" & " " & counttime,1,true

猶予時間が必要ない方は、この部分を下記のようにコメントアウトしてください。

' 猶予時間の指定があれば、カウントダウン
'wsShell.run "sysCountdown.bat" & " " & counttime,1,true

「sysLockWordStatin.vbs」を呼び出せば、猶予時間を表示した後パソコンがロックされます。

今回は、ここまで。

今回の仕組み必要なステップは下記になります。


この断片があなたの星へ続く道を、少しでも照らすことを願って

投稿者: 0.1

厚塗りで「存在感や重さ、質感による説得力」のあるイラストを目指しています。 日本では線画をベースとしたイラストが主流ですが、そこから外れたモノもイラストの世界を広げる為に必要だと考えています。「世界観にもう一味試したい」そんなときには、ぜひお声がけください。

「【2】パソコンをロックするVBSファイルを準備する(ロックまでのカウントダウンを表示する)」への1件のフィードバック

COMMENT