Programmpfad per ProcessID

Hallo alle zusammen!

Weiß einer von Euch wie ich den Pfad und den Datei-Namen von anderen Programmen durch die ProzessId bekommen.

Rückgabewert sollte etwa so aussehen: „C:\Windows\Notepad.exe“

Danke an alle die Helfen wollen,
AlexR

Hallo,

sieh mal, ob Dir das hilft.
http://www.activevb.de/tipps/vb6tipps/tipp0273.html

Dem Titel nach sollte es das sein, was Du suchst.

Gruß, Rainer

Danke schön!!
Nur habe ich ein weiteres Problem (was ich leider in der Problembeschreibung nicht erwähnt hatte):
Ich nutze VBScript! Und daraus kann ich „Declare“ und spezielle Datentypen nicht verwanden,

Gruß,
AlexR

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Alex,

es ist zwar eilig hier rein kopiert, aber es müsste kein Problem sein, das folgende Programm so anzupassen, dass es anhand der ProzessID den Pfad angibt:

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
eingabe = PROC\_Dialog
Set colItems = objWMIService.ExecQuery("Select \* from Win32\_Process",,48)
For Each objItem in colItems
 If objItem.Caption = eingabe Then
 WScript.Echo \_
 "Caption: " & objItem.Caption & vbCr & \_
 "CommandLine: [" & objItem.CommandLine & "]" & vbCr & \_
 "CreationClassName: " & objItem.CreationClassName & vbCr & \_
 "CreationDate: " & objItem.CreationDate & vbCr & \_
 "CSCreationClassName: " & objItem.CSCreationClassName & vbCr & \_
 "CSName: " & objItem.CSName & vbCr & \_
 "Description: " & objItem.Description & vbCr & \_
 "ExecutablePath: " & objItem.ExecutablePath & vbCr & \_
 "ExecutionState: " & objItem.ExecutionState & vbCr & \_
 "Handle: " & objItem.Handle & vbCr & \_
 "HandleCount: " & objItem.HandleCount & vbCr & \_
 "InstallDate: " & objItem.InstallDate & vbCr & \_
 "KernelModeTime: " & objItem.KernelModeTime & vbCr & \_
 "MaximumWorkingSetSize: " & objItem.MaximumWorkingSetSize & vbCr & \_
 "MinimumWorkingSetSize: " & objItem.MinimumWorkingSetSize & vbCr & \_
 "Name: " & objItem.Name & vbCr & \_
 "OSCreationClassName: " & objItem.OSCreationClassName & vbCr & \_
 "OSName: " & objItem.OSName & vbCr & \_
 "OtherOperationCount: " & objItem.OtherOperationCount & vbCr & \_
 "OtherTransferCount: " & objItem.OtherTransferCount & vbCr & \_
 "PageFaults: " & objItem.PageFaults & vbCr & \_
 "PageFileUsage: " & objItem.PageFileUsage & vbCr & \_
 "ParentProcessId: " & objItem.ParentProcessId & vbCr & \_
 "PeakPageFileUsage: " & objItem.PeakPageFileUsage & vbCr & \_
 "PeakVirtualSize: " & objItem.PeakVirtualSize & vbCr & \_
 "PeakWorkingSetSize: " & objItem.PeakWorkingSetSize & vbCr & \_
 "Priority: " & objItem.Priority & vbCr & \_
 "PrivatePageCount: " & objItem.PrivatePageCount & vbCr & \_
 "ProcessId: " & objItem.ProcessId & vbCr & \_
 "QuotaNonPagedPoolUsage: " & objItem.QuotaNonPagedPoolUsage & vbCr & \_
 "QuotaPagedPoolUsage: " & objItem.QuotaPagedPoolUsage & vbCr & \_
 "QuotaPeakNonPagedPoolUsage: " & objItem.QuotaPeakNonPagedPoolUsage & vbCr & \_
 "QuotaPeakPagedPoolUsage: " & objItem.QuotaPeakPagedPoolUsage & vbCr & \_
 "ReadOperationCount: " & objItem.ReadOperationCount & vbCr & \_
 "ReadTransferCount: " & objItem.ReadTransferCount & vbCr & \_
 "SessionId: " & objItem.SessionId & vbCr & \_
 "Status: " & objItem.Status & vbCr & \_
 "TerminationDate: " & objItem.TerminationDate & vbCr & \_
 "ThreadCount: " & objItem.ThreadCount & vbCr & \_
 "UserModeTime: " & objItem.UserModeTime & vbCr & \_
 "VirtualSize: " & objItem.VirtualSize & vbCr & \_
 "WindowsVersion: " & objItem.WindowsVersion & vbCr & \_
 "WorkingSetSize: " & objItem.WorkingSetSize & vbCr & \_
 "WriteOperationCount: " & objItem.WriteOperationCount & vbCr & \_
 "WriteTransferCount: " & objItem.WriteTransferCount 
 End If
Next

Schöne Grüße,

Mohamed.

… hatte noch eine Funktion vergessen:

Function PROC\_Dialog
 Set colItems = objWMIService.ExecQuery("Select \* from Win32\_Process",,48)
 For Each objItem in colItems
 prozessliste = prozessliste & objItem.Caption & vbCr
 Next
 antw = InputBox("Welchen der folgenden Prozesse möchten Sie abfragen?" & vbCr & vbCr & prozessliste, "Process Information", , 0, 0)
 PROC\_Dialog = antw
 End Function
1 Like