请问各位大虾,如何获得一个进程下边的所有的子进程啊?进程名和id都行
解决方案 »
- xp vc2010 ATL项目【aa】 动态链接库 添加ATL简单对象【bb】 添加方法【cc】:注册表【HKEY_CLASSES_ROOT】中没有aa.bb
- 测试调BUG,恶心
- 如何从网络数据包中判断ip地址是不是一个服务器的地址?急!
- 如何在线程中实现精度为1毫秒的延时,且不占用CPU
- 一个关于文件映像的问题
- 98下保存BMP的问题,在线结贴,马上给分!
- 使用CFile.Write写文件,报错的问题
- 用InstallShield怎么加序列号?
- 有做过mschart的大虾请进,回答了我一定给分
- 请问谁知道怎样生成一个证书的密钥文件?
- 请问如何禁止访问系统中某一个文件夹.只充许特定的进程访问.
- VC编译,请路过的进来看看
#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);
}
有人跟我说没有这种从属关系,但是我用july看的,如msnmsgr.exe,他的父进程是explorer.exe
{
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);
}
}