windows で、プロセスIDが判明しているときに、WSHでプロセスの名前(プログラム名)を取り出したいのです。下記のように、WMI (Windows Management Instrumentation)を操作すれば簡単にできそうです。

http://www012.upp.so-net.ne.jp/scotchegg/VBScript/Tips/WaitFinish.htm
調べればできないことはないのですが、調べる手間を減らしたいので、プロセスIDからプロセス名を簡単に割り出すスクリプトがあったら教えてください。いろいろできて複雑なスクリプトでなく、解読するのが簡単なものが希望です。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2011/08/11 16:19:36
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:cx20 No.2

回答回数607ベストアンサー獲得回数108

ポイント95pt

サンプルを作成してみました。

' File : GetProcessNameByProcessID.vbs
' Usage : CScript //Nologo GetProcessNameByProcessID.vbs
' Description : WMI を使用してプロセスIDからプロセス名を取得するサンプル
Option Explicit

Call Main()

Sub Main()
    Dim nProcessID
    nProcessID = 1652 ' 任意のプロセスIDを入れてください
    
    Dim strProcessName
    strProcessName = GetProcessNameByProcessID( nProcessID )
    WScript.Echo strProcessName
End Sub

Function GetProcessNameByProcessID( nProcessID )
    Dim strResult
    
    Dim strComputer
    strComputer = "."   ' ドット (.) は ローカル コンピュータを表します。

    Dim objWMIService
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
    
    Dim strSQL
    strSQL = "SELECT * FROM Win32_Process WHERE ProcessID = " & nProcessID ' ProcessID を条件に検索します
    
    Dim colItems
    Set colItems = objWMIService.ExecQuery( strSQL ) 
    
    Dim objItem
    For Each objItem in colItems 
        strResult = objItem.Name
        Exit For
    Next 

    GetProcessNameByProcessID = strResult
End Function
  • 実行結果
notepad.exe
  • 参考

■ Hey, Scripting Guy! バッチ ファイルに関連付けられているプロセス ID を特定する方法はありますか

http://gallery.technet.microsoft.com/scriptcenter/5109d5df-6116-40a4-9f4e-31e51ecf0edd/

その他の回答1件)

id:mirakurutoshiki No.1

回答回数157ベストアンサー獲得回数3

id:kaiketsu

調べる手間を減らすために質問しているのです。ずばり回答を期待します。

2011/08/11 16:19:04
id:cx20 No.2

回答回数607ベストアンサー獲得回数108ここでベストアンサー

ポイント95pt

サンプルを作成してみました。

' File : GetProcessNameByProcessID.vbs
' Usage : CScript //Nologo GetProcessNameByProcessID.vbs
' Description : WMI を使用してプロセスIDからプロセス名を取得するサンプル
Option Explicit

Call Main()

Sub Main()
    Dim nProcessID
    nProcessID = 1652 ' 任意のプロセスIDを入れてください
    
    Dim strProcessName
    strProcessName = GetProcessNameByProcessID( nProcessID )
    WScript.Echo strProcessName
End Sub

Function GetProcessNameByProcessID( nProcessID )
    Dim strResult
    
    Dim strComputer
    strComputer = "."   ' ドット (.) は ローカル コンピュータを表します。

    Dim objWMIService
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
    
    Dim strSQL
    strSQL = "SELECT * FROM Win32_Process WHERE ProcessID = " & nProcessID ' ProcessID を条件に検索します
    
    Dim colItems
    Set colItems = objWMIService.ExecQuery( strSQL ) 
    
    Dim objItem
    For Each objItem in colItems 
        strResult = objItem.Name
        Exit For
    Next 

    GetProcessNameByProcessID = strResult
End Function
  • 実行結果
notepad.exe
  • 参考

■ Hey, Scripting Guy! バッチ ファイルに関連付けられているプロセス ID を特定する方法はありますか

http://gallery.technet.microsoft.com/scriptcenter/5109d5df-6116-40a4-9f4e-31e51ecf0edd/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません