elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Averiguar proceso de un archivo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Averiguar proceso de un archivo.  (Leído 6,700 veces)
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Averiguar proceso de un archivo.
« en: 25 Octubre 2007, 00:14 am »

Bueno, un ejemplo es obtener la ruta o el nombre del archivo y que se devuelva el proceso (en tal caso que se este ejecutando).

estuve buscando en Google pero en este caso no encontre nada. >:( >:( >:(

La busqueda de el Foro no me arrojo ningún resultado :(


En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #1 en: 25 Octubre 2007, 00:37 am »

Se puede hacer que se listen todos los procesos, se haya la ruta de cada proceso y se compare con la ruta que necesitas, con archivo te referis a ejecutables no?
bueno, yo tengo la medio idea de como hacer el code, si queres lo posteo, pero no es lo que pedis. (El code que pienso es listar los procesos y devolver ruta).

Saludos ;)


En línea

Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #2 en: 25 Octubre 2007, 00:43 am »

Lo que sucede es que no es asi es al reves.

Tu dices:
Código:
Hallar procesos
Devolver la ruta

Yo digo:
Código:
Obtener la ruta
Hallar proceso de la ruta obtenida



De todas formas postea el codigo tal vez me sirve. ;)
En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #3 en: 25 Octubre 2007, 01:24 am »

Bueno, lo que dije fue que no tenia la respuesta jajaj, pero idee una alternativa, y ya la habia posteado, primero se listan los procesos, los nombres o rutas de los procesos, y luego se compara con alguna string a ver si el proceso esta activo.
checa este codigo, hasta el momento solo llevo la parte del nombre del ejecutable, si queres hago el de la ruta completa
Código
  1. Option Explicit
  2. Private Const LETRAS As String = "abcdefghijklmnoñpqrstuvwxyz[].1234567890"
  3. Private Type PROCESSENTRY32
  4. dwSize As Long
  5. cntUsage As Long
  6. th32ProcessID As Long
  7. th32DefaultHeapID As Long
  8. th32ModuleID As Long
  9. cntThreads As Long
  10. th32ParentProcessID As Long
  11. pcPriClassBase As Long
  12. dwFlags As Long
  13. szExeFile As String * 260
  14. End Type
  15. Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
  16. Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  17. Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  18. Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
  19.  
  20. Private Sub Command1_Click()
  21. Dim hSnapShot#, ProcesoC#, ResP#, ProcesoC2#, R#, uProcess As PROCESSENTRY32
  22. hSnapShot = CreateToolhelp32Snapshot(&H2, 0&)
  23. uProcess.dwSize = Len(uProcess)
  24. R = Process32First(hSnapShot, uProcess)
  25. Do While R
  26.    If LCase$(Limpiar(uProcess.szExeFile)) = LCase$(Text1.Text) Then
  27.        MsgBox "Programa ejecutandose"
  28.        Exit Sub
  29.    End If
  30. R = Process32Next(hSnapShot, uProcess)
  31. Loop
  32. CloseHandle hSnapShot
  33. End Sub
  34.  
  35. Private Function Limpiar(proceso$)
  36. Dim i%
  37. For i = 1 To Len(proceso)
  38.    If InStr(1, LETRAS, Mid(proceso, i, 1), vbTextCompare) = 0 Then
  39.        proceso = Replace(proceso, Mid(proceso, i, 1), "")
  40.    End If
  41. Next i
  42. Limpiar = proceso
  43. End Function
  44.  
en text1.text metes el proceso que queres buscar, por ejemplo "notepad.exe"

saludos y espero que te sirva ;)
« Última modificación: 25 Octubre 2007, 01:27 am por HaDeS, - » En línea

abel_c_b

Desconectado Desconectado

Mensajes: 91



Ver Perfil
Re: Averiguar proceso de un archivo.
« Respuesta #4 en: 25 Octubre 2007, 21:28 pm »

hola hades, bueno por lo que veo y lo rapido que respondes eres una persona muy instruida en vb 6, te felicito, ahora yo tengo una duda con respecto a esto de los procesos:

con el codigo anterior, si quisiera saber el numero de identificacion que se le asigna a cada proceso, como lo sabria?

ademas, como lo compararia si la aplicacion es abierta mas de una vez, y como es logico van a tener numeros de identificacion de procesos diferentes, espero me haya explicado, saludos
En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.960


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #5 en: 25 Octubre 2007, 21:50 pm »

ahora yo tengo una duda con respecto a esto de los procesos:

con el codigo anterior, si quisiera saber el numero de identificacion que se le asigna a cada proceso, como lo sabria?

En la estructura PROCESSENTRY32 hay un campo llamado th32ProcessID.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #6 en: 26 Octubre 2007, 01:57 am »

Para comparar si la aplicación está abierta más de una vez, tenes dos vias, la primera es comparar nombres de los procesos, y la segunda añadir al código algo como:
Código
  1.    w = Limpiar(uProcess.szExeFile)
  2.    Text1.Text = Text1.Text & vbCrLf & w & " - " & uProcess.th32ParentProcessID
  3.  
En el bucle donde se inicia la búsqueda de los procesos.
El th32ParentProcessID, sirve para indicar cual es el proceso padre de una aplicación, este te podría servir para observar si la aplicación esta abierta más de una vez.

Saludos ;)
En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.960


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #7 en: 26 Octubre 2007, 08:03 am »

Una breve acotacion: el parent no es 100% confiable ya que los PIDs se reciclan.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #8 en: 26 Octubre 2007, 22:03 pm »

Una breve acotacion: el parent no es 100% confiable ya que los PIDs se reciclan.
Por eso dije que se podian tomar dos vías, la primera comparar el nombre del proceso, aunque esta también es insegura, y la del parent id. Pensandolo mejor, se podría programar algo para que según el proceso me devuelva la ruta de donde se está ejecutando el programa, así, se podría comparar un proceso con diferente id.

Saludos ;)
En línea

Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Averiguar proceso de un archivo.
« Respuesta #9 en: 26 Octubre 2007, 23:37 pm »

se podría programar algo para que según el proceso me devuelva la ruta de donde se está ejecutando el programa.

Justo lo que yo quiero.!! ;) ;) ;)

PD: Se adueñaron de mi Post xD xD xD
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA averiguar cuando se subio un archivo pdf
Dudas Generales
Buchi 1 19,688 Último mensaje 10 Marzo 2011, 20:49 pm
por el-brujo
PROCESO/ARCHIVO WINLOGON.EXE
Seguridad
JMM13 5 5,487 Último mensaje 1 Abril 2011, 02:37 am
por humberto22
el proceso no puede acceder al archivo.
.NET (C#, VB.NET, ASP)
Baldomero123 3 2,690 Último mensaje 21 Febrero 2024, 09:00 am
por elektrostudios2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines