Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo finalizar un proceso usando lenguaje C? pedir codigo

¿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

}