saber si esta ejecutado

Iniciado por xXnewbieXx, 24 Febrero 2006, 16:18 PM

0 Miembros y 1 Visitante están viendo este tema.

xXnewbieXx

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:
Hardware: Lo que golpeas. Software: La causa

Error 943 - El sistema esta funcionando demasiado bien, se caerá para seguir con la rutina...

Kizar

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

APOKLIPTICO

Si vos lo abris con tu propio programa eso es posible:

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.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

xXnewbieXx

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
Hardware: Lo que golpeas. Software: La causa

Error 943 - El sistema esta funcionando demasiado bien, se caerá para seguir con la rutina...

xXnewbieXx

 ;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.
Hardware: Lo que golpeas. Software: La causa

Error 943 - El sistema esta funcionando demasiado bien, se caerá para seguir con la rutina...

APOKLIPTICO

usa otro proceso para monitorear al general e incluso 2 procesos.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.