WMI イベント処理

  ネットワーク切断?



  
Set obj = GetObject("winmgmts:\\.\root\wmi")
Set objEvents = obj.ExecNotificationQuery _
	("select * from MSNdis_StatusMediaDisconnect") 

' ここで停止します
Set objLatestEvent = objEvents.NextEvent 
WScript.Echo objLatestEvent.InstanceName & vbCrLf & Now
  



  ネットワーク回復?



  
Set obj = GetObject("winmgmts:\\.\root\wmi")
Set objEvents = obj.ExecNotificationQuery _
	("select * from MSNdis_StatusMediaConnect") 

Set objLatestEvent = objEvents.NextEvent 
WScript.Echo objLatestEvent.InstanceName & vbCrLf & Now
  



  プロセス開始?

  
Set obj = GetObject("winmgmts:\\.\root\cimv2")
Set objEvents = obj.ExecNotificationQuery( _
	"select * from __InstanceCreationEvent " & _
	"within 10 " &_
	"where TargetInstance isa 'Win32_Process'")

Set objLatestEvent = objEvents.NextEvent 
WScript.Echo _
	objLatestEvent.TargetInstance.Name & vbCrLf & _
	objLatestEvent.TargetInstance.ExecutablePath & vbCrLf & _
	Now

' 10 : PollingInterval
  



  タイマー処理 ( 秒単位の Sleep )

Windows XP または Windows 2003 で
Win32_LocalTime が使用できます

実行してから 5 秒後に処理を再開します

  
dtBase = Now()
dtTarget = dtBase
dtTarget = DateAdd( "s", 5, dtTarget )
TargetH = Hour( dtTarget )
TargetM = Minute( dtTarget )
TargetS = Second( dtTarget )

Set obj = GetObject("winmgmts:\\.\root\cimv2")
Set objEvents = obj.ExecNotificationQuery( _
	"select * from __InstanceModificationEvent " & _
	"where TargetInstance isa 'Win32_LocalTime' " & _
	"and TargetInstance.Hour = " & TargetH & " " & _
	"and TargetInstance.Minute = " & TargetM & " " & _
	"and TargetInstance.Second = " & TargetS & " " _
)

Set objLatestEvent = objEvents.NextEvent 
WScript.Echo _
	Now() & " ( Start = " & dtBase & ")"
  

参考 : Microsoft の Creating a Timer Event with Win32_LocalTime or Win32_UTCTime


Windows 2000 では以下のようにして下さい

  
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\.\root\cimv2")

Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOS in colOSes
	Target = objOS.LocalDateTime
Next

Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}\\.\root\cimv2")
Set objMonitor = obj.ExecNotificationQuery( _
	"select * from __InstanceModificationEvent " & _
	"within 5 " & _
	"where TargetInstance isa 'Win32_OperatingSystem' " & _
	"and TargetInstance.LocalDateTime > '" & Target & "'" _
)

Set objLatestEvent = objMonitor.NextEvent 
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ