30と言う秒数は、サンプルです。最もテストしやすい間隔なので使用しています。
' このセクションは、cscript.exe で処理を強制させるものです str = WScript.FullName str = Right( str, 11 ) str = Ucase( str ) if str <> "CSCRIPT.EXE" then str = WScript.ScriptFullName Set WshShell = CreateObject( "WScript.Shell" ) Call WshShell.Run( "cmd.exe /c cscript.exe """ & str & """ & pause", 3 ) WScript.Quit end if ' 現在の日付・時刻を取得 dtBase = Now() dtTarget = dtBase ' 30秒後の日付・時刻を取得 dtTarget = DateAdd( "s", 30, dtTarget ) ' Win32_LocalTime に対して比較する為の値を作成 TargetH = Hour( dtTarget ) TargetM = Minute( dtTarget ) TargetS = Second( dtTarget ) ' WMI の処理の為のオブジェクトを取得 Set obj = GetObject("winmgmts:\\.\root\cimv2") ' 該当する時間になればイベント発生 Set objMonitor = obj.ExecNotificationQuery( _ "select * from __InstanceModificationEvent " & _ "where TargetInstance isa 'Win32_LocalTime' " & _ "and TargetInstance.Hour = " & TargetH & " " & _ "and TargetInstance.Minute = " & TargetM & " " & _ "and TargetInstance.Second = " & TargetS & " " _ ) Wscript.Echo "イベントを待機しています..." ' 以下の行で処理が停止します Set objLatestEvent = objMonitor.NextEvent ' イベントが発生したら、ここ以下が実行される Wscript.Echo "イベントが発生しました" Wscript.Echo dtTarget Wscript.Echo Now()
以下では、イベントに関する解説と、ログオフさせる方法について書かれています スクリプトセンターのドキュメント あるプロセスを開始し、そのプロセスが終了した時点でユーザーをログオフさせる