如何看每个线程的状态 在2000平台下,有什么办法可以看到一个进程所产生的每个线程的运行状态,包括占用的CPU资源,占用内存的大小,打开哪些句柄等谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 按ctrl+del+alt可以看占用的资源和内存大小,看窗口句柄用spy++。如果要编程实现的话看WINDOWS编程里面有 在msdn中有这些函数的。元旦快乐。 好像需要利用助手函数。查一下用Tool Help sysinternals,有一个工具,很好用 如果要编程实现的话可以使用tool help 族函数CreateToolhelp32Snapshot()函数创建一个快照,根据这个快照来获得进程中的各模块,各线程的信息!具体参考msdn上面的例程 用GetThreadContext()可以得到特定时刻的线程的寄存器状态。 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)); } VC如何去除CHtmlCtrl的边框 透明桌面橡皮擦问题 急问,为什么基于对话框的构架中无法“显示”其他对话框 深圳VC !低薪!求职 一个关于在不同类中访问变量的问题 《深入浅出MFC》第三章仿真6大技术中有一不明问题! 为什么会出现这种怪现象,COM高手请进~~100分 我是缴费vip用户,为何不显示下载页面 MFC Listcontrol 表头分行 小弟初来乍到,想学vc的很!高人给点建议,谢谢! 如何调试ISAPI扩展DLL?急!!! 装了rose2002后,VC6打开带VSS的工程异常
查一下用Tool Help
CreateToolhelp32Snapshot()函数创建一个快照,根据这个快照来获得进程中的各模块,各线程的信息!具体参考msdn上面的例程
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)); }