如何用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,然后按回车即可
参考技术A1、用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取得一个进程的所有线程句柄的主要内容,如果未能解决你的问题,请参考以下文章