タスクマネージャのアプリケーションタブに
表示されているプログラムと、
プロセスタブに表示されているプログラムの名前と
プロセスIDを取得したいのですが、
どうやればいいのか分かりません。
どなたか教えていただけないでしょうか。
よろしくお願いします。
久しぶり?に書き込みします。Y2です。
WinAPIでいろいろそれ関係のものがありますけど、VB.NETであれば、APIを直接呼び出さなくてもいい簡単な方法があります。
たきさんは、VB6以前もしくはVB.NETのどちらをお使いでしょうか?
すみません、VB6を使ってます。
VB6での方法は分かりますでしょうか。
WMIがインストールされている環境であれば、以下のようにすればいけるかと。
ListViewコントロールとCommandButtonを貼っておいてください。
# Win98等の古い環境では、別途WMIのインストールが必要ですが、
# 最近の環境(Win2000やWinXPなど)であれば、標準でWMIが含まれています。
Option Explicit
Private Sub Command1_Click()
GetProcessesList
End Sub
Private Sub Form_Load()
Command1.Caption = "更新"
ListView1.ColumnHeaders.Clear
With ListView1.ColumnHeaders
.Add Text:="プロセスID"
.Add Text:="イメージ名"
.Add Text:="開始時間"
.Add Text:="ユーザー時間", Alignment:=lvwColumnRight
.Add Text:="カーネル時間", Alignment:=lvwColumnRight
.Add Text:="実行ファイル"
.Add Text:="コマンドライン"
End With
ListView1.View = lvwReport
End Sub
Private Sub GetProcessesList()
Dim DateTime As Object
Dim Proc As Object
Dim LIs As ListItems
Dim LI As ListItem
Dim Dt As Variant
Set LIs = ListView1.ListItems
Set DateTime = CreateObject("WbemScripting.SWbemDateTime")
LIs.Clear
With GetObject("winmgmts:")
For Each Proc In .InstancesOf("Win32_Process")
Set LI = LIs.Add()
LI.Text = Format(Proc.ProcessId)
LI.SubItems(1) = Format(Proc.Caption)
Dt = Proc.CreationDate
If Not IsNull(Dt) Then
DateTime.Value = Dt
Dt = DateTime.GetVarDate()
LI.SubItems(2) = Format(Dt, "yyyy-mm-dd hh:nn:ss")
End If
'100ナノ秒単位
LI.SubItems(3) = Format(Proc.UserModeTime / 10 ^ 7, "#,0.000\秒")
LI.SubItems(4) = Format(Proc.KernelModeTime / 10 ^ 7, "#,0.000\秒")
LI.SubItems(5) = Format(Proc.ExecutablePath)
LI.SubItems(6) = Format(Proc.CommandLine)
Set LI = Nothing
Next
End With
Set LIs = Nothing
Set DateTime = Nothing
End Sub
魔界の仮面弁士さんありがとうございます!!
実行ファイル名やコマンドラインまで取得できるとは思いませんでした。
WMIについて、もっと調べてみたいと思います。
本当にありがとうございました!!
ツイート | ![]() |