您好,登錄后才能下訂單哦!
通過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);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。