起動しているアプリの情報を取得するには?

解決


たき  2003-04-18 00:16:49  No: 77735

タスクマネージャのアプリケーションタブに
表示されているプログラムと、
プロセスタブに表示されているプログラムの名前と
プロセスIDを取得したいのですが、
どうやればいいのか分かりません。
どなたか教えていただけないでしょうか。
よろしくお願いします。


Y2  2003-04-20 01:09:14  No: 77736

久しぶり?に書き込みします。Y2です。
WinAPIでいろいろそれ関係のものがありますけど、VB.NETであれば、APIを直接呼び出さなくてもいい簡単な方法があります。
たきさんは、VB6以前もしくはVB.NETのどちらをお使いでしょうか?


たき  2003-04-21 19:00:45  No: 77737

すみません、VB6を使ってます。
VB6での方法は分かりますでしょうか。


魔界の仮面弁士  2003-04-21 20:37:07  No: 77738

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


たき  2003-04-21 21:04:53  No: 77739

魔界の仮面弁士さんありがとうございます!!
実行ファイル名やコマンドラインまで取得できるとは思いませんでした。
WMIについて、もっと調べてみたいと思います。
本当にありがとうございました!!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加