Título: Problemas con un mataprocesos Publicado por: Pseudoroot en 20 Enero 2006, 16:33 pm Resulta. que estoy haciendo un mataprocesos en VB.
pero la cosa es que, como recien empiezo a codear en este lenguaje...xD ..me cuesta un poco familiarizarme con las funciones, por eso, he decidido postear el code..para que alguien me ayude y me diga como puedo quitar el proceso seleccionado, mi problema esta ,en como le paso el Id. del proceso ...para que lo termine.. gracias... el code es este. Código: ' Written By Pseudoroot Título: Re: Problemas con un mataprocesos Publicado por: sch3m4 en 20 Enero 2006, 16:54 pm aquí te pongo una funcion que acabo de hacer para cerrar el proceso a partir de su pid
Código: Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 20 Enero 2006, 16:59 pm gracias. pero .el problema es como obtener justamente ese pid.que representa el proceso que el usuario a seleccionado, para cerrar.
Título: Re: Problemas con un mataprocesos Publicado por: sch3m4 en 20 Enero 2006, 17:48 pm sorry, aqui te pongo una ampliacion que he hecho
Código: 'para buscar el pid Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 20 Febrero 2006, 16:17 pm Lympex.. sabs hay un problema con el code..
esque lo probe .pasandole el string del proceso con List1.Text lo puse en una variable string para que me devolviera el pid a partir de su nombre. pero no paso absolutamente nada. y eso que lo probe de varias formas. incluso lo puse directamente.. pero tampoco..puede ser que en el code de esa funcion haya algun error, o talvez...yo no le paso el argumento de forma correcta .auque no creo saludos. Título: Re: Problemas con un mataprocesos Publicado por: sch3m4 en 20 Febrero 2006, 16:24 pm no hay ningun problema en el code, esque para obtener cualquier item (linea) de un listbox tienes que hacerlo asi:
para uno en concreto Código: List1.List(c) para el seleccionado Código: List1.List(List1.ListIndex) cuando tengas algun problema, prueba a meter en un msgbox las variables que uses si crees que el problema es de la funcion, y ves si son las que tu esperabas o no, te lo digo por experiencia. Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 21 Febrero 2006, 18:54 pm no hay caso, no logro hacer que la funcion me devuelva el pid
probe como lo dices tu leo los valores con Msgbox. y veo que cuando le paso los datos a la funcion..efectivamente va el proceso.pero luego..cuando quiero obtener el pid.en todos los casos me devuelve 0,,que sera.. pero es que tu has probado el code,,,?? Título: Re: Problemas con un mataprocesos Publicado por: sch3m4 en 21 Febrero 2006, 19:08 pm yo si lo he probado, en WinXP, para wini9x creo que tienes que pasarle el tamaño de la estructura PROCESSENTRY32.
Título: Re: Problemas con un mataprocesos Publicado por: sch3m4 en 27 Febrero 2006, 17:05 pm le retoque algunas cosas:
modulo Código: 'para buscar el pid timer Citar Private Sub TmrProcesos_Timer() For C = 0 To C = lstProcesos.ListCount 'buscamos su pid Pid = BuscaPid(lstProcesos.List(C)) 'si existe, lo matamos If Pid > 0 Then If Check1.Value = Checked Then Open txtLogProcesos.Text For Append As #1 Print #1, vbCrLf & vbCrLf & "[- " & Now & " -]" Print #1, "
Print #1, "
Print #1, "
Close #1 Else Call MataProceso(Pid) End If End If Next C End Sub Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 6 Marzo 2006, 14:12 pm Por fin puede hacer que mi programa me encontrara el PId y deteniera el proceso, pero funciona solo en windows 98, ya que en este sistema, la estructura Info.szExeFile devuelve el path completo del programa que origina el proceso, sin embargo en windows Xp esto no sucede, pues aqui solo me nombra el proceso por su nnombre EJ: Winword.exe
no con su path completo. Es decir, al momento de pasarle la ruta asi List1.List(List1.ListIndex) a una variable. y luego pasarsela a la funcion que devuelve el Pid , no podria ,puesto que lee solo el nombre del proceso y no el Path completo. ahi esta el problema. Por eso me extraña que digas que ati si te resulte en Win XP puesto que en Win 98 si resulta sin problemas. Título: Re: Problemas con un mataprocesos Publicado por: .Slasher-K. en 6 Marzo 2006, 14:26 pm Código: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 6 Marzo 2006, 14:47 pm gracias Slasher, pero que quieres decir con eso.
que hay que leer esa ruta del registro para saber el path completo ? Título: Re: Problemas con un mataprocesos Publicado por: .Slasher-K. en 6 Marzo 2006, 15:12 pm Sí no especifica el path tiene que estar debajo de esa clave, con el siguiente formato:
Código: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\<appname> Y lees el valor predeterminado, que es la ruta de acceso completa. Si no existe esa clave, entonces el siguiente paso es buscar en la variable de entorno PATH Código: Debug.Print Environ("PATH") Y por último en el directorio de Windows y en el directorio del sistema (GetWindowsDirectory y GetSystemDirectory). Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 6 Marzo 2006, 15:14 pm Otra opcion, seria con la api GetModuleFileNameExA...o no?
utilizando EnumProcesss y EnumProcessModules.. Título: Re: Problemas con un mataprocesos Publicado por: .Slasher-K. en 6 Marzo 2006, 15:36 pm GetModuleFilenameEx no funciona en Win9X, hay una manera mucho más sencilla usando sólo GetModuleFilename.
La manera fácil es obtener el handle del módulo usando sólo el nombre, que es lo que te devuelve Process32First/Next y luego llamar a GetModuleFilename, como en la siguiente función: Código: Function GetProcessFilename(ByVal ModuleName As String) As String Y te ahorras mucho código. Saludos. Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 6 Marzo 2006, 15:59 pm Tengo un pequeño problema, necesito la declaracion completa de la APi GetModuleHandle
Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 6 Marzo 2006, 16:08 pm las apis ya las tengo,. aunque quiero .la declaracion completa de las apis. pa el visor que trae el VB. supongo que se podra descargar de internet?
aps..Slasher. probe tu code. pero la funcion luego de pasarle el nombre del proceso como parametro Ej: winword.exe se supone que tendria que devolverme el path completo de ese proceso. pero na. solo me da el path completo de mi proceso, es decir de mi programa que ejecuto.. Título: Re: Problemas con un mataprocesos Publicado por: .Slasher-K. en 6 Marzo 2006, 16:59 pm Windows API (Ansi) (http://www.geocities.com/slasher_keeper/data/winapi.zip)
Agrega eso como referencia y te olvidas de declarar las APIs. La función va a devolver el path de tu proceso si el nombre del proceso que le pasaste no se está ejecutando. Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 6 Marzo 2006, 19:16 pm Disculpa, pero como se supone que debo agregar ese archivo como referencia.??
Aps. por eso entonces no me daba el path. puesto que estaba probando con procesos activos. Entonces no me sirve de mucho esta funcion pues, necesito el path del proceso en ejecucion. Título: Re: Problemas con un mataprocesos Publicado por: .Slasher-K. en 7 Marzo 2006, 21:03 pm Windows API (Ansi) (http://www.geocities.com/slasher_keeper/data/winapi.zip) Agrega eso como referencia y te olvidas de declarar las APIs. La función va a devolver el path de tu proceso si el nombre del proceso que le pasaste no se está ejecutando. Eso significa lo que dice xD. La función devuelve el path de un proceso en ejecución. Y con lo otro, Proyecto -> Referencias -> Examinar -> Win.tlb Título: Re: Problemas con un mataprocesos Publicado por: Pseudoroot en 8 Marzo 2006, 16:57 pm era demasiado facil agregar el archivo como referencia, eso me pasa por no pasearme un poco por lo menus de Vb
Te digo que ami no me devuelve el paht del proceso en ejecucion sino que unicamente, el proceso de mi exe. |