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

原文链接:https://zhidao.baidu.com/question/93050956.html

#include <tlhelp32.h>
int GetProcessThreadList(DWORD th32ProcessID) //进程bai的duID
{
	HANDLE hThreadSnap;
	THREADENTRY32 th32;
	hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, th32ProcessID);
	if (hThreadSnap == INVALID_HANDLE_VALUE)
	{
		return 1;
	}
	th32.dwSize = sizeof(THREADENTRY32);
	if (!zhiThread32First(hThreadSnap, &th32))
	{
		CloseHandle(hThreadSnap);
		return 1;
	}
	do
	{
		if (th32.th32OwnerProcessID == th32ProcessID)
		{
			printf("ThreadID: %ld\n", th32.th32ThreadID); //显示找到的线dao程的ID
		}
	} while (Thread32Next(hThreadSnap, &th32));
	CloseHandle(hThreadSnap);
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows 下使用 C++ 获取可执行程序的进程句柄,可以使用 Windows API 函数 CreateProcess。 首先,需要包含 Windows.h 头文件,然后可以使用以下代码创建进程获取进程句柄: ```c++ #include <Windows.h> PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); BOOL bResult = CreateProcess( NULL, // 可执行程序的路径 NULL, // 命令行参数 NULL, // 进程句柄不可被继承 NULL, // 进程句柄不可被继承 FALSE, // 进程不继承父进程句柄 CREATE_NEW_CONSOLE, // 新建控制台窗口 NULL, // 环境变量指针 NULL, // 工作目录指针 &si, // STARTUPINFO 结构体指针 &pi // PROCESS_INFORMATION 结构体指针 ); if (bResult) { HANDLE processHandle = pi.hProcess; // 获取进程句柄 // ... } CloseHandle(pi.hProcess); // 关闭进程句柄 CloseHandle(pi.hThread); // 关闭线程句柄 ``` 其中,第一个参数是可执行程序的路径,可以是绝对路径或者相对路径;第二个参数是命令行参数,可以为 NULL;第三个参数和第四个参数分别指定进程句柄线程句柄是否可被继承,可以为 NULL;第五个参数指定进程是否继承父进程句柄,一般设置为 FALSE;第六个参数指定新进程的标志,例如是否新建控制台窗口等;第七个参数是环境变量指针,一般为 NULL;第八个参数是工作目录指针,可以为 NULL;第九个参数是 STARTUPINFO 结构体指针,用于指定新进程的标准输入、标准输出和标准错误输出等信息;第十个参数是 PROCESS_INFORMATION 结构体指针,用于接收新进程进程句柄和主线程句柄等信息。 获取进程句柄后,就可以使用 Windows API 函数操作进程,例如读取或写入进程内存等。需要注意的是,使用完进程句柄后需要关闭句柄,以避免资源泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值