Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   C/C++ (http://www.forosdelweb.com/f96/)
-   -   saber si un proceso se esta ejecutando.. (http://www.forosdelweb.com/f96/saber-si-proceso-esta-ejecutando-534592/)

aeb_asturias 20/11/2007 11:54

saber si un proceso se esta ejecutando..
 
Hola a todos. Mi duda es la siguiente:

Tengo que averiguar si un proceso sigue ejecutándose en una máquina windows.

Tengo una versión en C++ ejecutada bajo linux donde hacía:

system ("ps PID ")

Si el resultado de ejecutar el comando anterior no era vacío entonces el proceso con pid "PID" estába ejecutandose.


Esto mismo quiero realizarlo pero esta vez se trata de un proceso windows y nose como se puede hacer.

Alguna idea??


Saludos.

Hardrive 20/11/2007 19:32

Re: saber si un proceso se esta ejecutando..
 
Hola

Puedes usar Process32First y Process32Next, con la estructura PROCESSENTRY32 hasta encontrar un proceso que coincida con el nombre que buscas. Tenes mucha info y ejemplos en la página de msdn.


Salu2

aeb_asturias 21/11/2007 04:39

Re: saber si un proceso se esta ejecutando..
 
Muchas gracias Hardrive por responder. He consultado esas funciones que me has dicho y he conseguido obtener lo que quería.

Pongo aqui el código por si le puede resultar de ayuda a otra gente:



HANDLE hProcessSnap;
HANDLE hProcess;
PROCESSENTRY32 pe32;
DWORD dwPriorityClass;
int result=0;


hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hProcessSnap == INVALID_HANDLE_VALUE )
{
printf( TEXT("CreateToolhelp32Snapshot (of processes)") );
return( FALSE );
}


pe32.dwSize = sizeof( PROCESSENTRY32 );



if( !Process32First( hProcessSnap, &pe32 ) )
{
printf( TEXT("Process32First") );
CloseHandle( hProcessSnap );
return( FALSE );
}


do
{

if(strcmp("genetico.exe",pe32.szExeFile )==0){
result=1;
break;
}

} while( Process32Next( hProcessSnap, &pe32 ) );

if(result==1)
cout<<"Existe el proceso genetico.exe"<<endl;
else
cout<<"No existe el proceso genetico.exe"<<endl;

CloseHandle( hProcessSnap );



En mi ejemplo lo que pretendía saber es si se estaba ejecutando el ejecutable "genetico.exe". De ahí que haga la comparación con dicha cadena.



Muchas gracias por la ayuda.


La zona horaria es GMT -6. Ahora son las 19:55.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.