2014年05月22日


VBScript : 30秒後のイベント処理

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()

以下では、イベントに関する解説と、ログオフさせる方法について書かれています

スクリプトセンターのドキュメント

あるプロセスを開始し、そのプロセスが終了した時点でユーザーをログオフさせる


posted by at 2014-05-22 20:35 | WMI | このブログの読者になる | 更新情報をチェックする