電子書籍の厳選無料作品が豊富!

vb.netで開発しています。
あるexe(仮にwatch_p.exeとします)のプロセスの情報(CPU時間)を取得し、一定時間以上(30分以上)だった場合強制終了するプログラムを作成しようとしています。
以下のようにCPU時間の取得する方法までは見えていますが、取得した
時間を比較する方法が見えていません。
忙しいことと思いますが、回答をお願いします。

Dim ps As System.Diagnostics.Process() = _
System.Diagnostics.Process.GetProcesses()

'配列から1つずつ取り出す
Dim p As System.Diagnostics.Process
For Each p In ps
Try
If p.ProcessName="watch_p" then
'合計プロセッサ時間
Console.WriteLine(p.TotalProcessorTime)
End if
Catch
End Try
Next p

A 回答 (1件)

未確認だけど,比較だけなら,



http://msdn2.microsoft.com/en-us/library/system. …

TimeSpanにはop_GreaterThan(>)っていう演算子と
TimeSpan.FromMinutesっていうSharedなメソッドがあるので

If (p.TotalProcessorTime > TimeSpan.FromMinutes(30.0)) Then
End If
・・・
とかでいけると思う

だけれど,気になるのは,For Each で指定される列挙子は変更できないので,これをkillできないかもしれないこと。
(Do Whileあたりで書き換えることになるのかな?
プロセス終了と同時にps.lengthが書き換わったりしそうで怖いので
For to Next云々もちょっと怖いような気がする)
    • good
    • 0
この回答へのお礼

ありがとうございました。
役にたちました。

お礼日時:2008/01/15 11:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!