No tengo el builder instalado, lo mas parecido que tengo para programar en C es el MinGW, pero no debería de ser muy diferente. La cosa quedaría así:
Código:
void MatarProceso(char nombre[])
{
DWORD lista[1024];
HANDLE proceso;
char buffer[MAX_PATH + 1];
DWORD l;
int i;
if (!EnumProcesses(lista, sizeof(lista), &l))
return;
l = l / sizeof(DWORD);
for ( i = 0; i<l; i++ )
{
proceso = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ
| PROCESS_TERMINATE,FALSE,lista[i]);
if (proceso != NULL)
{
if (GetModuleFileNameEx(proceso,NULL,buffer,sizeof(buffer)-1))
{
if (strcasecmp(buffer,nombre)==0)
TerminateProcess(proceso,0);
}
CloseHandle( proceso );
}
}
}
Se utilizaría de esta manera:
Código:
MatarProceso("C:\\Windows\\System32\\Notepad.exe");
Puede que tengas que añadir alguna librería para usar las funciones EnumProcesses y OpenProcess, en MinGW el header se llama psapi.h y la libreria libpsapi.a supongo que en el Builder tendrán nombres parecidos.
De todas formas si tu creas el proceso y luego quieres destruirlo, deberías pensar en utilizar la función CreateProccess que además de iniciar el proceso nos devuelve sus identificador que luego podemos usar para matarlo.