各位大佬麻烦帮忙看一下,我想实现枚举进程的功能,一开始使用list box控件但是无法实现换行。。。所以改用edit control,运行后发现只显示最后一个进程,不能循环显示
控件代码如下:
void Cprocessor1Dlg::OnBnClickedEnumProcess()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
PROCESSENTRY32 pe;
//设置结构体pe的大小
pe.dwSize = sizeof(pe);
//获取系统内进程的快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE) {
this->MessageBox("CreateToolhelp32Snapshot error.\n");
//return -1;
}
//遍历进程快照,显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap,&pe);
while (bMore) {
UpdateData(TRUE);
str.Format("Process Name:%s\r\nPID:%u\r\nNumber of Thread:%u ",pe.szExeFile,pe.th32ProcessID,pe.cntThreads);
//str.Format("Process Name:%s\n",pe.szExeFile);
//str.Format("PID:%u\n",pe.th32ProcessID);
//str.Format("Number of Thread:%u\n",pe.cntThreads);
//str.Format("==========================\n\n");
bMore = ::Process32Next(hProcessSnap,&pe);
m_enum1.SetWindowTextA(str);
UpdateData(FALSE);
}
//释放snapshot对象
::CloseHandle(hProcessSnap);
}