如何用WindowsAPI取得一个进程的所有线程句柄

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用WindowsAPI取得一个进程的所有线程句柄相关的知识,希望对你有一定的参考价值。

我能取得一个进程所有线程的ID,但不会取所有线程的句柄。。?

参考技术A #include <tlhelp32.h>

int GetProcessThreadList(DWORD th32ProcessID) //进程的ID

HANDLE hThreadSnap;
THREADENTRY32 th32;

hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, th32ProcessID);

if (hThreadSnap == INVALID_HANDLE_VALUE)

return 1;


th32.dwSize = sizeof(THREADENTRY32);
if (!Thread32First(hThreadSnap, &th32))

CloseHandle(hThreadSnap);
return 1;


do

if (th32.th32OwnerProcessID == th32ProcessID)

printf("ThreadID: %ld\n", th32.th32ThreadID); //显示找到的线程的ID

while(Thread32Next(hThreadSnap, &th32));

CloseHandle(hThreadSnap);
return 0;
本回答被提问者采纳

如何用CMD命令结束一个进程和打开一个程序?

一、使用命令提示符(CMD)命令结束一个进程的方法

1、已知进程名称或PID,可以直接使用 taskkill命令加速它。

命令格式 :taskkill /IM 映像名称 、taskkill /PID PID编号

例如关闭正在运行的pb90.exe,命令:taskkill /IM pb90.exe

A、需要注意的是,改方式相对于点击程序的关闭按钮,不会强制关闭程序,如本里,程序没有直接关闭,而是与点击关闭按钮相同,弹出关闭提醒。

B、如需强制关闭则需要给命令,加上参数“/F”,如图

2、如果结束未知进程,可以通过tasklist命令显示当前运行的进程列表,查看PID或映像名称(IMAGENAME ),然后再用taskkill命令结束它

二、使用命令提示符(CMD)命令打开一个程序的方法:

命令输入程序的完整路径,然后按回车键即可

例如启动程序foobar2000,输入 E:\\Foobar2000\\foobar2000.exe,然后按回车即可

参考技术A

1、用CMD命令结束一个进程和打开一个程序首先,利用运行快捷键Win+R,输入cmd也可以用开始运行,输入cmd。

2、输入tasklist,确认以显示进程。


3、这些就是我现在电脑正在运行的进程,接下来就是结束进程了。这里就以结束qq为例好了,可以看到qq的进程名字是qq.exe,那么就输入taskkill /f /t /im qq.exe 然后回车确认就好了。

参考技术B taskkill /im QQ.exe 结束QQ进程,注意,进程大小写有区别。start "D:\Program Files\Tencent\QQ\Bin\QQ.exe" 开启QQ进程。^_^ 参考技术C taskkill /im explorer.exe /fstart explorer.exe

以上是关于如何用WindowsAPI取得一个进程的所有线程句柄的主要内容,如果未能解决你的问题,请参考以下文章

Diary如何用 Event Loop 理解异步

我如何用JAVA调用存储过程取得 serveroutput?

如何用MYSQL的IFNULL()编写一句完整的话?

如何用shell命令杀死linux内核线程

如何用qt4编程结束linux进程

如何用python的selenium提取页面所有资源加载的链接