TlHelp32枚举进程、线程、模块信息-创新互联

通过tlhelp32提供的api,可以很容易的获取进程、模块、线程的快照信息。

按需网站设计可以根据自己的需求进行定制,做网站、成都做网站构思过程中功能建设理应排到主要部位公司做网站、成都做网站的运用实际效果公司网站制作网站建立与制做的实际意义

所涉及头文件:

tlhelp32.h

枚举进程Process信息:

    HANDLE hSnapshot;

PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) };

HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, dwPid);

if(hProcessSnap == INVALID_HANDLE_VALUE)

{

return -1;

}

if(Process32First(hProcessSnap, &pe32))

{

do

{

    printf("process id: %d\n", pe32.th42ProcessID);

}

while(Process32Next(hProcessSnap, &pe32));

}

CloseHandle(hProcessSnap);

枚举模块module信息:

MODULEENTRY32 Mod32;

Mod32.dwSize=sizeof(Mod32);

HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPid);

if( hSnap == INVALID_HANDLE_VALUE )

{

printf("无法打开该程序模块!");

CloseHandle(hSnap);

return;

}

BOOL bModule = Module32First(hSnap,&Mod32);

while(bModule)

{

printf("module process id: %d \n", Mod32.th42ProcessID);

bModule=Module32Next(hSnap,&Mod32);

}

CloseHandle(hSnap);

枚举线程Thread信息:

THREADENTRY32 te32;

te32.dwSize=sizeof(te32);

HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);

if( hSnap == INVALID_HANDLE_VALUE )

{

printf("无法打开该程序模块!");

CloseHandle(hSnap);

return;

}

BOOL bThread = Thread32First(hSnap,&te32);

while(bThread)

{

    printf("owner process id: %d \n", te32.th42OwnerProcessID);

     printf("thread id: %d \n", te32.th42ThreadID);

bThread = Thread32Next(hSnap,&te32);

}

CloseHandle(hSnap);

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:TlHelp32枚举进程、线程、模块信息-创新互联
文章来源:http://scyanting.com/article/ispcd.html