Во-первых, вы должны пройти через все окна верхнего уровня.Сделайте это, позвонив в Win32 EnumWindows
.Эта функция требует подпрограммы обратного вызова, поэтому ее сложно объяснить на C #.В любом случае, проверьте документацию.
Затем на каждой итерации вызывайте функцию ниже, передавая дескриптор окна:
[DllExport("user32.dll")]
static bool IsHungAppWindow(IntPtr theWndHandle);
Вызов этой функции в окне должен возвращать true для окна без ответа,Затем получите идентификатор процесса, позвонив по номеру GetWindowThreadProcessId
.
. Затем получите ссылку на процесс и выйдите из него:
Process aPrc = Process.GetProcessById(aPrcID);
aPrc.Kill();