怎么获得一个进程下边的所有的子进程啊?
怎么获得一个进程下边的所有的子进程啊?
楼主great_kker(阿当)2006-07-12 09:43:11 在 VC/MFC / 基础类 提问 请问各位大虾,如何获得一个进程下边的所有的子进程啊?进程名和id都行
问题点数:20、回复次数:4Top
1 楼forover(天下无吥散dě宴席)回复于 2006-07-12 09:46:02 得分 20
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
BOOL RefreshThreadList (DWORD dwOwnerPID)
{
HANDLE hThreadSnap = NULL;
BOOL bRet = FALSE;
THREADENTRY32 te32 = {0};
// Take a snapshot of all threads currently in the system.
hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (hThreadSnap == INVALID_HANDLE_VALUE)
return (FALSE);
// Fill in the size of the structure before using it.
te32.dwSize = sizeof(THREADENTRY32);
// Walk the thread snapshot to find all threads of the process.
// If the thread belongs to the process, add its information
// to the display list.
if (Thread32First(hThreadSnap, &te32))
{
do
{
if (te32.th32OwnerProcessID == dwOwnerPID)
{
printf( "\nTID\t\t%d\n", te32.th32ThreadID);
printf( "Owner PID\t%d\n", te32.th32OwnerProcessID);
printf( "Delta Priority\t%d\n", te32.tpDeltaPri);
printf( "Base Priority\t%d\n", te32.tpBasePri);
}
}
while (Thread32Next(hThreadSnap, &te32));
bRet = TRUE;
}
else
bRet = FALSE; // could not walk the list of threads
// Do not forget to clean up the snapshot object.
CloseHandle (hThreadSnap);
return (bRet);
}
Top
2 楼great_kker(阿当)回复于 2006-07-12 10:05:05 得分 0
你给的这个是list进程的线程啊,我说的是父进程与子进程.
有人跟我说没有这种从属关系,但是我用july看的,如msnmsgr.exe,他的父进程是explorer.exeTop
3 楼great_kker(阿当)回复于 2006-07-12 11:30:19 得分 0
void EnumSonProcess()
{
DWORD pid = ; // the id of father process
HANDLE hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 pe;
::ZeroMemory(&pe,sizeof(pe));
pe.dwSize = sizeof(pe);
BOOL bMore = ::Process32First(hSnapshot,&pe);
while(bMore)
{ //循环到没有
HANDLE hProcess = ::OpenProcess( PROCESS_QUERY_INFORMATION, FALSE,pe.th32ProcessID);
if((hProcess != NULL) &&(pe.th32ParentProcessID == pid))
{
printf( "\nTID\t\t%d\n", pe.th32ProcessID );
}
::CloseHandle(hProcess);
//移到下一个进程
bMore = ::Process32Next(hSnapshot,&pe);
}
}Top
4 楼great_kker(阿当)回复于 2006-07-12 13:12:05 得分 0
呵呵,方法比较笨,不过也不失为一种方法Top
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn
