引き続き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」を呼び出せば、猶予時間を表示した後パソコンがロックされます。
今回は、ここまで。
今回の仕組み必要なステップは下記になります。
この断片があなたの星へ続く道を、少しでも照らすことを願って
「【2】パソコンをロックするVBSファイルを準備する(ロックまでのカウントダウンを表示する)」への1件のフィードバック