Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: xXnewbieXx en 24 Febrero 2006, 16:18 pm



Título: saber si esta ejecutado
Publicado por: xXnewbieXx en 24 Febrero 2006, 16:18 pm
hola, soy nuevo en el foro y tp llevo muxo tiempo programando, tengo una pekeña duda y staria agradecido si alguien m la resolviera.
Intento q mi exe pueda saber si otro exe se está ejecutando, q esté abierto. :-\. yo intenté hacerlo d esta forma:

Dim Comprobar_Uso As Integer
    Comprobar_Uso = App.PrevInstance
        If Comprobar_Uso <> 0 Then...       :-X

pero va ser q eso solo m sirve para mi propio programa.
hay alguna forma d poner un directorio y q compruebe si el programa d ahi esta abierto??? :huh:


Título: Re: saber si esta ejecutado
Publicado por: Kizar en 24 Febrero 2006, 16:27 pm
Lo k tienes k comprobar es k procesos hay en el administrador de tareas.

Busca en el foro, se ablo mucho de ese tema.

Salu2


Título: Re: saber si esta ejecutado
Publicado por: APOKLIPTICO en 25 Febrero 2006, 18:01 pm
Si vos lo abris con tu propio programa eso es posible:

Código:
Private Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function GetExitCodeProcess Lib "kernel32" Alias "GetExitCodeProcess" (ByVal hProcess As Long, lpExitCode As Long) As Long

Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400

Sub Ejecutar(Aplicacion As String)
Dim hProceso As long
Dim Activa As Long

hProceso = OpenProcess(PROCESS_QUERY_INFORMATION, 0, Shell(Aplicacion, 1))

Do
 ret = GetExitCodeProcess(hProceso, Activa)
DoEvents
Loop While Activa = STILL_ACTIVE

'Una vez que se termino la ejecucion...

End sub

Fuente: Microsoft Visual Basic 6.0 Manual de referencia. USERS

Si tenes la handle del proceso tambien podes usar el GetExitCodeProcess.

Suert y espero q t sirva.


Título: Re: saber si esta ejecutado
Publicado por: xXnewbieXx en 25 Febrero 2006, 21:32 pm
muxas gracias APOKLIPTICO, al final m kede con sólo con la línea:

hProceso = OpenProcess(PROCESS_QUERY_INFORMATION, 0, Shell(Aplicacion, 1))

pq desde k el valor fuera 0 ya sabia k no estaba en ejecutado o q el directorio q intentaba abir no existia.
vamos k mate a 2 pajaros d un tiro para lo q queria hacer, d nuevo gracias!! ;D


Título: Re: saber si esta ejecutado
Publicado por: xXnewbieXx en 25 Febrero 2006, 22:16 pm
 ;D ;D ;D ;D en mi anterior mensaje t di las gracias, pero m kede corto...era justo la pieza clave para terminar d crear un proceso q no pudiera ser cerrado...llevaba 1 semana ataskado para encontrar la manera d hacerlo funcionar...lo uniko una cosilla a ver si alguien sabe alguna forma para evitar la siguiente parida... :o
Puse en un timer la comprobacion, si lo pongo el intervalo aprox un seg (1000) no hay problemas, pero 1 mano agil m puede cerrar el proceso. si pongo menos d 1000 el ordena c coge la trabadera y no para d salir parpadeando el reloj  :-[
saludos.


Título: Re: saber si esta ejecutado
Publicado por: APOKLIPTICO en 26 Febrero 2006, 02:40 am
usa otro proceso para monitorear al general e incluso 2 procesos.