tempad
ReadyGo!技术成就梦想 >>交换技术 >> 怎么获得一个进程下边的所有的子进程啊?

怎么获得一个进程下边的所有的子进程啊?

ReadyGo!技术成就梦想 网络搜索 efish 2008-1-20 5:02:58

怎么获得一个进程下边的所有的子进程啊?

楼主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

责任编辑: efish 参与评论 查找更多:
相关文章
如何解决搜索引擎优化,去掉?&等符号,面向搜索… 如何解决搜索引擎优化,去掉?&等符号,面向搜索引擎更友好,更多地被搜索引擎收录?
想做一个类似电影字幕的滚动字幕: 想做一个类似电影字幕的滚动字幕:
【刘公子】火凤凰,菜鸟(二),是在对不住了,兄弟… 【刘公子】火凤凰,菜鸟(二),是在对不住了,兄弟们,那事是我没办好,让你们困惑了!
如何得到DataGrid中某列的宽度[在线等] 如何得到DataGrid中某列的宽度[在线等]
突然发现自己有个概念好模糊,请教大家。就是有关sw… 突然发现自己有个概念好模糊,请教大家。就是有关switch 中,return和break
没分了。求好心人帮忙。! 没分了。求好心人帮忙。!
请大家帮帮忙,ASP实现智能搜索,有一个小问题 请大家帮帮忙,ASP实现智能搜索,有一个小问题
请教!关于DataWindow导入XML的问题? 请教!关于DataWindow导入XML的问题?
寻求批量添加的解决方案 寻求批量添加的解决方案
高手请帮忙,为什么我这样不能调用?? 高手请帮忙,为什么我这样不能调用??
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想