Editado: Este es mi Código::
Saludos!
Editado: Para que el código te quede bien funcional, minimamente tenes que usar las apis, EnumProcess, OpenProcess, EnumProcessModules y GetModuleFileNameExA, porque si quitas por ejemplo EnumProcessModules, en el text1.text algunas lineas quedarían vacias y el resultado sería pésimo.
Código (vb) [Seleccionar]
Private Declare Function EnumProcesses Lib "psapi.dll" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
Private Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal Handle As Long) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Sub Command1_Click()
Dim Procesos() As Long, cb&, cb2&, cbNeeded&, Ret&, Proceso&, Modulos(1 To 200) As Long, Elementos&, NombrePath$
cb = 16
cbNeeded = 96
Do While cb <= cbNeeded
cb = cb * 2
ReDim Procesos(cb / 4)
EnumProcesses Procesos(1), cb, cbNeeded
Loop
Elementos = cbNeeded / 4
For i = 1 To Elementos
Proceso = OpenProcess(1024 Or 16, 0, Procesos(i))
If Proceso <> 0 Then
Ret = EnumProcessModules(Proceso, Modulos(1), 200, cb2)
If Ret <> 0 Then
NombrePath = Space(260)
GetModuleFileNameExA Proceso, Modulos(1), NombrePath, 500
If Procesos(i) <> GetCurrentProcessId Then
NombrePath = Replace(Replace(NombrePath, "\systemroot\", "c:\windows\", , , vbTextCompare), "\??\", "")
Text1.Text = Text1.Text & vbCrLf & NombrePath
Text1.Text = Text1.Text & " - " & Procesos(i)
End If
End If
End If
CloseHandle Proceso
Next
End Sub
Saludos!
Editado: Para que el código te quede bien funcional, minimamente tenes que usar las apis, EnumProcess, OpenProcess, EnumProcessModules y GetModuleFileNameExA, porque si quitas por ejemplo EnumProcessModules, en el text1.text algunas lineas quedarían vacias y el resultado sería pésimo.