1,获取线程的创建时间,通常情况下主线程的创建时间是最早的
2,如果是GUI程序,可以通过GetWindowThreadProcessId获取窗口的线程,通常程序员都使用主线程创建窗口
3,其中有一种是线程堆栈查找main函数的地址,如果发现了那就是所谓的主线程.
其实这个问题跟窗口一样,对于程序员来说一个进埋睁拿程有主窗口,但对于WINDOWS来说只有父窗口和子窗口的概念(但据<WINDOWS核心编程>里的说法,WINDOWS连线程的父子关系也不保存),所以也没用获取主窗口的API
VC 获取进程线程枝枯颂数#include <tlhelp32.h>
void EnumProcess(void)
{
HANDLE hProcessSnap
HANDLE hProcess
PROCESSENTRY32 pe32
DWORD dwPriorityClass
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
return
}
pe32.dwSize = sizeof(PROCESSENTRY32)
if (!Process32First(hProcessSnap, &pe32))
{
CloseHandle(hProcessSnap)
return
}
do
{
//printf("%s", pe32.szExeFile)//完整文件名
//printf("%d", (int)pe32.cntThreads)//线程数
}while(Process32Next(hProcessSnap, &pe32))
CloseHandle(hProcessSnap)
}
如果要获取进程句柄
HANDLE hProcessHandle
hProcessHandle = OpenProcess(0x1F0FFF, true, ProcessID)//ProcessID进程ID
这个在控制台,Win32 SDK ,MFC 都败闷可以用的,只不过
SDK ,MFC 输出就 不用 printf 了,只猛郑要把获取的内容赋给变量就行了
用GetCurrentThread得到枝岩当前姿盯线程的伪句柄,然后利用这个伪句柄猛册御调用GetThreadPriority,GetThreadTimes之类的函数就可以得到当前线程的信息欢迎分享,转载请注明来源:内存溢出
评论列表(0条)