トップ回答者
VB.NETでスクリーンセーバーの開始時刻と終了時刻を記録

質問
-
こんにちは、お世話になります。
Hey, Scripting Guy! で以下のURLを見つけました。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/feb06/hey0210.mspx
VBSでスクリーンセーバーの開始時刻と終了時刻を記録する方法です。
そこで、vb.netで可能か試してみました。
ほぼそのままでも動きましたが、
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set objEventSource = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Process'") Do While True Set objEventObject = objEventSource.NextEvent() If Right(objEventObject.TargetInstance.Name, 4) = ".scr" Then Select Case objEventObject.Path_.Class Case "__InstanceCreationEvent" Wscript.Echo "Screensaver " & objEventObject.TargetInstance.Name & _ " started: " & Now Case "__InstanceDeletionEvent" Wscript.Echo "Screensaver " & objEventObject.TargetInstance.Name & _ " ended: " & Now End Select End If Loop
vb.net版はないでしょうか?ご教示の程よろしくお願いいたします。
また、マウスやキーボードもこういった方法で取れるのでしょうか?
回答
-
こんにちは、以下のコードでメモリ使用量が増大してしまい、
しばらく放置すると、エラー JITエラー?が出でしまい。ループができなくなります。
なにか解消法ありませんでしょうか?
ご教授の程よろしくお願致します。
sub main()
Dim objWMIService
Dim objEventSource
Dim objEventObjectobjWMIService = GetObject("winmgmts:\\.\root\cimv2")
objEventSource = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Process'")
Do While True
objEventObject = objEventSource.NextEvent()
If Right(objEventObject.TargetInstance.Name, 4) = ".scr" Then
Select Case objEventObject.Path_.Class
Case "__InstanceCreationEvent"
'Call conTEST("スクリーンセーバ起動中")'コメントアウトした状態です。
Case "__InstanceDeletionEvent"
'Call conTEST("スクリーンセーバ停止中")'コメントアウトした状態です。
End Select
End If
Loopend sub
すべての返信
-
こんにちは、以下のコードでメモリ使用量が増大してしまい、
しばらく放置すると、エラー JITエラー?が出でしまい。ループができなくなります。
なにか解消法ありませんでしょうか?
ご教授の程よろしくお願致します。
sub main()
Dim objWMIService
Dim objEventSource
Dim objEventObjectobjWMIService = GetObject("winmgmts:\\.\root\cimv2")
objEventSource = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Process'")
Do While True
objEventObject = objEventSource.NextEvent()
If Right(objEventObject.TargetInstance.Name, 4) = ".scr" Then
Select Case objEventObject.Path_.Class
Case "__InstanceCreationEvent"
'Call conTEST("スクリーンセーバ起動中")'コメントアウトした状態です。
Case "__InstanceDeletionEvent"
'Call conTEST("スクリーンセーバ停止中")'コメントアウトした状態です。
End Select
End If
Loopend sub