Starte den Thread mit ShellexecuteEx dann bekommst du die ProzessID. Und mit TerminateProcess* kannst du einen Prozess gewaltsam beenden, was aber nicht zu empfehlen ist, da eventuell geladenen DLLs ihre Ressourcen nicht mehr freigeben können bzw. deren Reefernzzähler nicht dekremntiert wird und sie so unnötig von Windows im Speicher gehalten werden. Besser ist es die Nachricht WM_CLOSE an das Hauptfenster der zu beendenden Anwendung zu schicken und sie so sauber zu beenden.
PS: Das hättest du aber auch alles über die Suche gefunden.
*) TerminateProcess arbeitet desweiteren asynchron, das heißt die Funktion kehrt zurück bevor der Prozess wirklich beendet wurde. Nach Rückkehr von TerminateProzess musst du also noch mal prüfen, ob der Prozess wirklich beendet wurde.