Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: revenge1252 en 18 Mayo 2011, 13:25 pm



Título: [VB6] Comprobar si proceso existe y mostrar su ruta, AYUDA
Publicado por: revenge1252 en 18 Mayo 2011, 13:25 pm
Hola a todos mi duda seria esta

Me gustaria que mi proyecto comprobara si un proceso esta activo, por ejemplo, explorer.exe.

y si esta activo me de su ruta en por ejemplo un text.


llevo rato mirando pero no consigo encontrar la manera de hacerlo, aver si alguien puede ayudarme.


Saludos! ;D


Título: Re: [VB6] Comprobar si proceso existe y mostrar su ruta, AYUDA
Publicado por: skapunky en 18 Mayo 2011, 13:35 pm
Aquí una ayuda utilizando WMI:

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/14.htm

Con esto tienes de sobras para lo que quieres hacer.

Solo te faltará lo de mostrar la ruta, que en google podrás encontrar info.


Título: Re: [VB6] Comprobar si proceso existe y mostrar su ruta, AYUDA
Publicado por: 79137913 en 18 Mayo 2011, 18:40 pm
HOLA!!!

En el foro hay mucho de eso, busca y vas a encontrar,,igual, ya te respondieron.

GRACIAS POR LEER!!!


Título: Re: [VB6] Comprobar si proceso existe y mostrar su ruta, AYUDA
Publicado por: seba123neo en 19 Mayo 2011, 03:52 am
WMI esta bien pero yo usaria api, siempre es lo mejor.


Título: Re: [VB6] Comprobar si proceso existe y mostrar su ruta, AYUDA
Publicado por: revenge1252 en 19 Mayo 2011, 12:06 pm
El problema esque nose como hacer el codigo para comprobar si el proceso existe y que muestre su ruta :S ya tenia codigos para mostrar y cerrar procesos...


aun asi gracias igualmente x la ayuda!


aver si alguien puede decirme algo, saludos ^^


Título: Re: [VB6] Comprobar si proceso existe y mostrar su ruta, AYUDA
Publicado por: revenge1252 en 19 Mayo 2011, 12:12 pm
Aqui tengo el code para ver si esta corriendo, alguien podria modificarlo para que coja ese mismo proceso y diga su ruta en el caso de que este corriendo?

gracias por la ayuda! :)

el code es este:

Código
  1. Option Explicit
  2. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  3. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  4. Private Declare Function EnumProcesses Lib "PSAPI.DLL" (lpidProcess As Long, ByVal cb As Long, cbNeeded As Long) As Long
  5. Private Declare Function EnumProcessModules Lib "PSAPI.DLL" (ByVal hProcess As Long, lphModule As Long, ByVal cb As Long, lpcbNeeded As Long) As Long
  6. Private Declare Function GetModuleBaseName Lib "PSAPI.DLL" Alias "GetModuleBaseNameA" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
  7. Private Const PROCESS_VM_READ = &H10
  8. Private Const PROCESS_QUERY_INFORMATION = &H400
  9.  
  10. Private Function EstaCorriendo(ByVal NombreDelProceso As String) As Boolean
  11. Const MAX_PATH As Long = 260
  12. Dim lProcesses() As Long, lModules() As Long, N As Long, lRet As Long, hProcess As Long
  13. Dim sName As String
  14. NombreDelProceso = UCase$(NombreDelProceso)
  15. ReDim lProcesses(1023) As Long
  16. If EnumProcesses(lProcesses(0), 1024 * 4, lRet) Then
  17. For N = 0 To (lRet \ 4) - 1
  18. hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lProcesses(N))
  19. If hProcess Then
  20. ReDim lModules(1023)
  21. If EnumProcessModules(hProcess, lModules(0), 1024 * 4, lRet) Then
  22. sName = String$(MAX_PATH, vbNullChar)
  23. GetModuleBaseName hProcess, lModules(0), sName, MAX_PATH
  24. sName = Left$(sName, InStr(sName, vbNullChar) - 1)
  25. If Len(sName) = Len(NombreDelProceso) Then
  26. If NombreDelProceso = UCase$(sName) Then EstaCorriendo = True: Exit Function
  27. End If
  28. End If
  29. End If
  30. CloseHandle hProcess
  31. Next N
  32. End If
  33. End Function
  34.  
  35. Private Sub Command1_Click()
  36. If EstaCorriendo("calc.exe") = True Then
  37. MsgBox "Esta Corriendo"
  38. End If
  39. If EstaCorriendo("calc.exe") = False Then
  40. MsgBox "No esta Corriendo"
  41. End If
  42. End Sub


Título: Re: [VB6] Comprobar si proceso existe y mostrar su ruta, AYUDA
Publicado por: Hasseds en 19 Mayo 2011, 19:34 pm
.

Código:

Function Ruta(lngPid As Long) As String
 
    Dim Handle_Proceso As Long
    Handle_Proceso = OpenProcess(&H410, &H0, lngPid)
   
    Dim Buffer As String * 260
   
    Call GetModuleFileNameExA(Handle_Proceso, &H0, Buffer, 260)
    Call CloseHandle(Handle_Proceso)
   
    Ruta = Split(Buffer, Chr$(0))(0)

End Function



lngPid = lProcesses(N)



Título: Re: [VB6] Comprobar si proceso existe y mostrar su ruta, AYUDA
Publicado por: revenge1252 en 20 Mayo 2011, 11:23 am
.

Código:

Function Ruta(lngPid As Long) As String
 
    Dim Handle_Proceso As Long
    Handle_Proceso = OpenProcess(&H410, &H0, lngPid)
   
    Dim Buffer As String * 260
   
    Call GetModuleFileNameExA(Handle_Proceso, &H0, Buffer, 260)
    Call CloseHandle(Handle_Proceso)
   
    Ruta = Split(Buffer, Chr$(0))(0)

End Function



lngPid = lProcesses(N)



Muchas gracias por tu ayuda, ya lo adapte y funciona perfectamente  ;-)

Saludos!  :D