Если вы хотите явно / программно уничтожить другую программу / процесс любого рода, в pstools SysInternals есть небольшой инструмент с именем "pskill", который ведет себя так же, как и Unixen "kill".
Если вы хотите что-то еще, продолжайте читать (хотя я могу ошибаться в некоторых особенностях ниже - это было давно, с тех пор как я в последний раз разрабатывал программу для Windows на C, используя только WinAPI и превосходные книги Чарльза Петцольда «Программирование для Windows» в качестве руководства).
В Windows у вас нет правильных «сигналов», какие функции WinMain и WinProc получают из операционной системы - это простые сообщения . Например, когда вы нажимаете на кнопку «X» окна, Windows отправляет обработчику этого окна сообщение WM_CLOSE. Когда окно удалено, но программа все еще работает, оно отправляет WM_DESTROY. Когда он собирается выйти из основного цикла обработки сообщений, WinMain (не WinProc) получает WM_QUIT. Ваша программа должна реагировать на все это, как и ожидалось - на самом деле вы можете разработать «не подлежащее закрытию» приложение, не делая то, что должно, после получения WM_CLOSE.
Когда пользователь выбирает задачу в диспетчере задач Windows и нажимает «Завершить задачу», ОС отправит WM_CLOSE (и еще одну, которую я не помню). Однако, если вы используете «Завершить процесс», процесс прекращается напрямую, сообщения никогда не отправляются (источник: The Old New Thing
Я помню, что был способ получить HWND окна другого процесса, как только вы узнали, что другой процесс может отправить этому окну сообщение через функции PostMessage и DispatchMessage.