Foros del Web » Programación para mayores de 30 ;) » C/C++ »

saber si un proceso se esta ejecutando..

Estas en el tema de saber si un proceso se esta ejecutando.. en el foro de C/C++ en Foros del Web. 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++ ...
  #1 (permalink)  
Antiguo 20/11/2007, 11:54
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 2 meses
Puntos: 7
Sonrisa 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.
  #2 (permalink)  
Antiguo 20/11/2007, 19:32
Avatar de Hardrive  
Fecha de Ingreso: julio-2006
Ubicación: La Plata - Bs. As.
Mensajes: 65
Antigüedad: 17 años, 10 meses
Puntos: 0
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
  #3 (permalink)  
Antiguo 21/11/2007, 04:39
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 2 meses
Puntos: 7
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 20:28.