Hola,
Tal vez "matar el proceso" de la aplicación, pero, ten en cuenta que matar un proceso implica que la aplicación en cuestión no se cerrará en condiciones, es decir, "no se enterará" de que ha sido "asesinada", si no me equivoco...
Código Delphi
[-]
uses
TlHelp32;
function MatarProcesos(nombre: string): boolean;
var
moduleEntry: TModuleEntry32;
processEntry: TProcessEntry32;
hSnapshot, hProcess: cardinal;
begin
result := false;
moduleEntry.dwSize := SizeOf(TModuleEntry32);
processEntry.dwSize := SizeOf(TProcessEntry32);
hSnapshot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
if Process32First(hSnapshot,processEntry) then
begin
repeat
if (lstrcmpi(PChar(nombre),@processEntry.szExeFile) = 0) then
begin
hProcess := OpenProcess(PROCESS_TERMINATE,
false,processEntry.th32ProcessID);
result := TerminateProcess(hProcess,0);
CloseHandle(hProcess);
end;
until not Process32Next(hSnapshot,processEntry);
end;
CloseHandle(hSnapshot);
end;
Y ten en cuenta además que lo anterior mataría todos los procesos con el mismo nombre, es decir, que si algún ejecutable se llama como el de la aplicación que quieres "matar", también este será "asesinado" sin piedad. En definitiva, que no sé si te servirá de algo o qué.