2010-03-14 6 views
6

He estado buscando ejemplos para la función Win32 API C++ TerminateProcess() pero no he podido encontrar ninguno.C++ Función TerminateProcess

No soy tan familiarizados con la API de Win32 en general, y por eso quería preguntar si alguien aquí que es mejor en lo que a mí me podría mostrar un ejemplo para,

  • Recuperando un identificador de proceso por se requiere su PID para terminarlo y luego llamar a TerminateProcess con él.

Si no está familiarizado con C++, un equivalente de C# ayudaría también.

+0

¿Está buscando esta función WINAPI OpenProcess http://msdn.microsoft.com/en-us/library/ms684320%28VS.85%29.aspx? Poner esto junto con TerminateProcess no debería ser demasiado difícil. –

+0

No, quiero finalizar un proceso en ejecución. Es por eso que he mencionado que primero tengo que recuperar el PID. – jemper

+1

Cuando alguien te da un enlace, léelo. No asuma por el nombre lo que hace. De hecho, OpenProcess crea un identificador de proceso, dado un PID, que es exactamente lo que usted solicitó. @Charles: Esa debería ser una respuesta en lugar de un comentario. –

Respuesta

14

Para responder a la pregunta original, con el fin de recuperar un identificador de proceso por su PID y llamar TerminateProcess, necesita un código como el siguiente:

BOOL TerminateProcess(DWORD dwProcessId, UINT uExitCode) 
{ 
    DWORD dwDesiredAccess = PROCESS_TERMINATE; 
    BOOL bInheritHandle = FALSE; 
    HANDLE hProcess = OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId); 
    if (hProcess == NULL) 
     return FALSE; 

    BOOL result = TerminateProcess(hProcess, uExitCode); 

    CloseHandle(hProcess); 

    return result; 
} 

Tenga en cuenta que TerminateProcess no permite su objetivo de limpiar subir y salir en un estado válido. Piense dos veces antes de usarlo.

+0

¿Cómo puedo obtener el PID del proceso? – BlackBear

+0

¿Qué tipo de identificador tiene para el proceso para el que desea un PID? –

+0

Solo su nombre (de taskmanager) – BlackBear