Как убить поток чужого процесса? - 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5