在2000平台下,有什么办法可以看到一个进程所产生的每个线程的运行状态,包括占用的CPU资源,占用内存的大小,打开哪些句柄等
谢谢!

解决方案 »

  1.   

    按ctrl+del+alt可以看占用的资源和内存大小,看窗口句柄用spy++。如果要编程实现的话看WINDOWS编程里面有
      

  2.   

    在msdn中有这些函数的。元旦快乐。
      

  3.   

    好像需要利用助手函数。
    查一下用Tool Help
      

  4.   

    sysinternals,有一个工具,很好用
      

  5.   

    如果要编程实现的话可以使用tool help 族函数
    CreateToolhelp32Snapshot()函数创建一个快照,根据这个快照来获得进程中的各模块,各线程的信息!具体参考msdn上面的例程
      

  6.   

    用GetThreadContext()可以得到特定时刻的线程的寄存器状态。
      

  7.   


    CreateToolhelp32Snapshot()函数创建系统快照,根据这个快照调用函数Process32First()和Process32Next()来获得进程中的各模块,各线程的信息,示例代码如下:HANDLE         hProcessSnap = NULL; 
    PROCESSENTRY32 pe32      = {0}; 
    FILETIME CreateTime,ExitTime,KernelTime,UserTime;
    LARGE_INTEGER l_Createtime,l_Exittime,l_Usertime,l_Kerneltime;
    CString s_priority,s_processID,s_threadcounts,s_exename,s_kerneltime,s_usertime;

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    pe32.dwSize = sizeof(PROCESSENTRY32); 
    if (Process32First(hProcessSnap, &pe32)) 
    {
    do 

    HANDLE hProcess; 
    hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); 
    if(hProcess!=NULL)

      GetProcessTimes(hProcess,&CreateTime,&ExitTime,&KernelTime,&UserTime);
      memcpy(&l_Kerneltime.QuadPart,&KernelTime.dwLowDateTime,2*sizeof(DWORD));
      memcpy(&l_Usertime.QuadPart,&UserTime.dwLowDateTime,2*sizeof(DWORD));
      s_kerneltime.Format("%6d s",_int64((_int64(l_Kerneltime.QuadPart)+_int64(l_Usertime.QuadPart))/10000000));
     s_processID.Format("%d",pe32.th32ProcessID);
     s_threadcounts.Format("%d",pe32.cntThreads);
     s_exename.Format("%s",pe32.szExeFile);
    }

    while (Process32Next(hProcessSnap, &pe32)); }