¿Cómo finalizar un proceso usando lenguaje C? pedir codigo
Idea básica:
1. Utilice Process32First Process32Next para enumerar todos los procesos.
2. Tome el nombre del programa del proceso enumerado y compare si es el programa que se va a cerrar.
3. Si es así, llame a TerminateProcess() para finalizarlo.
Algunos programas tienen más de un proceso nada más iniciarse, por lo que aunque se cierre uno, la enumeración continuará.
Ejemplo de uso: kp iexplore.exe cierra el proceso de IE (todas las ventanas del navegador IE están cerradas)
/************** ** **************************
Nombre de archivo: kp.c
Nombre de programa: kp .exe
Ejemplo de uso: kp iexplore.exe
*************************** *** **********************/
#include lt;windows.hgt;
#include lt ;tlhelp32.hgt;
int KillMyProcess(char *exeName)
{
int rc = 0;
HANDLE hSysSnapshot = NULL ;
p>
PROCESSENTRY32 proc;
hSysSnapshot = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
if (hSysSnapshot == (HANDLE)-1) return 1;
proc.dwSize = sizeof(proc);
if (Process32First (hSysSnapshot, amp; proc)) {
do {
if (stricmp( proc.szExeFile, exeName)==0) {
HANDLE Proc_handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc.th32ProcessID);
if (Proc_handle ==NULL || !TerminateProcess( Proc_handle, 0)) rc = 1;
else rc = 0;
}
} mientras ( Process32Next ( hSysSnapshot , amp; proc ) );
}
CloseHandle ( hSysSnapshot
return rc; p>int main(int argc, char *argv[])
{
if (argcgt; 1) {
printf("Mata a s.. ..\n", argv[ 1]);
if (KillMyProcess(argv[1])==0) printf(" --- El proceso se elimina.\n");
else printf(" --- El proceso no se finaliza \n"
}
return
}