Как убить поток чужого процесса? - C#
Формулировка задачи:
Всем привет!
Через System.Diagnostics.GetProcesses() получаю список процессов. Свойство Threads каждого процесса содержит список потоков. Один из этих потоков требуется завершить. Как это сделать?
Решение задачи: «Как убить поток чужого процесса?»
textual
Листинг программы
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool TerminateThread(IntPtr handle, uint exitCode);
[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr OpenThread(uint access, bool inherit, int id);
const uint THREAD_TERMINATE = 0x1;
// ...
System.Diagnostics.ProcessThread thread;
var th = OpenThread(THREAD_TERMINATE, false, thread.Id);
if (th == IntPtr.Zero)
throw new Win32Exception(Marshal.GetLastWin32Error());
TerminateThread(th, 0);