Título: Averiguar proceso de un archivo. Publicado por: Freeze. 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 :( Título: Re: Averiguar proceso de un archivo. Publicado por: HaDeS, - 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 ;) Título: Re: Averiguar proceso de un archivo. Publicado por: Freeze. en 25 Octubre 2007, 00:43 am Lo que sucede es que no es asi es al reves.
Tu dices: Código: Hallar procesos Yo digo: Código: Obtener la ruta De todas formas postea el codigo tal vez me sirve. ;) Título: Re: Averiguar proceso de un archivo. Publicado por: HaDeS, - 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 en text1.text metes el proceso que queres buscar, por ejemplo "notepad.exe" saludos y espero que te sirva ;) Título: Re: Averiguar proceso de un archivo. Publicado por: abel_c_b 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 Título: Re: Averiguar proceso de un archivo. Publicado por: Eternal Idol 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. Título: Re: Averiguar proceso de un archivo. Publicado por: HaDeS, - 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 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 ;) Título: Re: Averiguar proceso de un archivo. Publicado por: Eternal Idol en 26 Octubre 2007, 08:03 am Una breve acotacion: el parent no es 100% confiable ya que los PIDs se reciclan.
Título: Re: Averiguar proceso de un archivo. Publicado por: HaDeS, - 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 ;) Título: Re: Averiguar proceso de un archivo. Publicado por: Freeze. 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 Título: Re: Averiguar proceso de un archivo. Publicado por: Eternal Idol en 26 Octubre 2007, 23:51 pm En ese caso podes recurrir a Module32First (el primer modulo siempre es el ejecutable) y el campo szExePath de la estructura MODULEENTRY32. Sino tambien GetModuleFileNameEx ...
Título: Re: Averiguar proceso de un archivo. Publicado por: Freeze. en 27 Octubre 2007, 00:04 am Disculpame, podrias aclararme bien como hacelo...?
Espero que no sea una molestia :( Título: Re: Averiguar proceso de un archivo. Publicado por: Eternal Idol en 27 Octubre 2007, 00:07 am Disculpame, podrias aclararme bien como hacelo...? Espero que no sea una molestia :( La primera forma es exactamente igual que Process* solo que mas simple, no necesitas enumerar todos los modulos, el que te interesa es el primero. Para la segunda necesitas abrir un HANDLE al proceso (OpenProcess) y despues pasarle a GetModuleFileNameEx ese handle como primer parametro, cero como segundo, un puntero a cadena como tercero y el tamaño de la misma como cuarto y ultimo. Hace muchos años que no programo en VB asi que te doy una descripcion teorica, para la primera forma te podes guiar con el codigo que esta arriba, sigue la misma logica. Título: Re: Averiguar proceso de un archivo. Publicado por: Freeze. en 27 Octubre 2007, 00:15 am De este tipo de Apis no se mucho, no entiendo como obtener el Handle. :( :( :(
Título: Re: Averiguar proceso de un archivo. Publicado por: Eternal Idol en 27 Octubre 2007, 00:19 am De este tipo de Apis no se mucho, no entiendo como obtener el Handle. :( :( :( Si usas Module32First no necesitas ningun HANDLE. Título: Re: Averiguar proceso de un archivo. Publicado por: Freeze. en 27 Octubre 2007, 00:29 am Encontre este codigo, pero no me da la ruta completa:
Código: Private Type MODULEENTRY32 Título: Re: Averiguar proceso de un archivo. Publicado por: Eternal Idol en 27 Octubre 2007, 00:31 am Usa szExePath no szModule.
Título: Re: Averiguar proceso de un archivo. Publicado por: Freeze. en 27 Octubre 2007, 00:34 am Gracias.
I love You..! xD Título: Re: Averiguar proceso de un archivo. Publicado por: HaDeS, - en 27 Octubre 2007, 00:50 am Editado: Este es mi Código::
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. Título: Re: Averiguar proceso de un archivo. Publicado por: Eternal Idol en 27 Octubre 2007, 22:10 pm De nada ►Freeze, para la segunda forma no necesitas usar mas que OpenProcess y GetModuleFileNameEx con 0 como el segundo parametro, ya que como indica la documentacion:
hModule [in] Handle to the module. If this parameter is NULL, GetModuleFileNameEx returns the path of the executable file of the process specified in hProcess. Por cierto si necesitas trabajar con servicios habilita el privilegio SE_DEBUG_NAME primero. |