#include <iostream>
#include <windows.h>
#include <TlHelp32.h>
int main()
{
// 1. 使用函数创建线程快照,此时参数二没有意义,无论填写什么,遍历到的都是所有线程
HANDLE Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
// 2. 创建一个结构体用于保存遍历到的所有线程信息
THREADENTRY32 ThreadInfo{ sizeof(THREADENTRY32) };
// 3. 尝试从快照中获取到保存的第一个线程的信息
if (Thread32First(Snapshot, &ThreadInfo))
{
do {
// 4. 由于遍历到的是所有的线程,所以我们需要判断
if (ThreadInfo.th32OwnerProcessID == 12560)
{
// 打开目标进程的每一个线程,结束这个线程
HANDLE Thread = OpenThread(THREAD_TERMINATE, FALSE, ThreadInfo.th32ThreadID);
if (Thread)
{
TerminateThread(Thread, -1);
CloseHandle(Thread);
}
}
} while (Thread32Next(Snapshot, &ThreadInfo));
}
return 0;
}