为什么相同进程ID却不相同???
功能:
实现一定时关闭进程的工具,先由用户从进程列表中选择要结束的进程,然后得到进程ID,并在相应时间内结束此进程。
问题:
将程序运行两次,惊奇的发现列表中本属同一进程的ID在两次运行中竟然不同,请问这是为什么?应如何处理?
代码:
1. 得到进程列表的代码:
m_lcTHDLists.DeleteAllItems();
PROCESSENTRY32 pe;
pe.dwSize=sizeof(PROCESSENTRY32);
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
Process32First(hSnapshot, &pe);
int i=0;
CString szProcID;
CStringArray ProcLists, PriLists;
PriLists.SetSize(0,1);
ProcLists.SetSize(0,1);
do {
//TRACE("0x%x, %s", pe.th32ProcessID, pe.szExeFile);
szProcID.Format("0x%x", pe.th32ProcessID);
m_lcTHDLists.InsertItem(i,szProcID);
ProcLists.Add(pe.szExeFile);
szProcID.Format("%d",pe.pcPriClassBase);
PriLists.Add(szProcID);
i++;
} while(Process32Next(hSnapshot, &pe));
CloseHandle(hSnapshot);
for(i=0; i<ProcLists.GetSize(); i++) {
m_lcTHDLists.SetItemText(i, 1, ProcLists[i]);
m_lcTHDLists.SetItemText(i, 2, PriLists[i]);
}
2. 对进程列表控件的初始化:
m_lcTHDLists.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_lcTHDLists.InsertColumn(0, "进程ID", LVCFMT_LEFT, 70);
m_lcTHDLists.InsertColumn(1, "进程名", LVCFMT_LEFT, 150);
m_lcTHDLists.InsertColumn(2, "优先级", LVCFMT_LEFT, 60);
请大家指点一下,,这是为什么??应该如何解决??