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