Retroceder   Foros del Web > Temas generales de computación > Programación > C/C++

Respuesta
 
Herramientas Desplegado
Antiguo 20-nov-2007, 10:54   #1 (permalink)
aeb_asturias está en el buen camino
 
Fecha de Ingreso: marzo-2004
Mensajes: 495
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.
aeb_asturias está desconectado   Responder Citando
Antiguo 20-nov-2007, 18:32   #2 (permalink)
Hardrive no se puede cailificar en este momento
 
Avatar de Hardrive
 
Fecha de Ingreso: julio-2006
Mensajes: 23
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
Hardrive está desconectado   Responder Citando
Antiguo 21-nov-2007, 03:39   #3 (permalink)
aeb_asturias está en el buen camino
 
Fecha de Ingreso: marzo-2004
Mensajes: 495
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.
aeb_asturias está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 1 votos, 4,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 02:38.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93