|
本帖最后由 wl1383838438 于 2020-1-8 15:40 编辑
VC++基础班第27课,照着老师的步骤做了,结果出来是这样的:
我的部分代码如下
- // TODO: 在此添加额外的初始化代码
- //ListCtrl初始化代码
- m_ListCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
- m_ListCtrl.InsertColumn(0, _T("进程"), LVCFMT_LEFT, 180);
- m_ListCtrl.InsertColumn(1, _T("Pid"), LVCFMT_LEFT, 60);
- m_ListCtrl.InsertColumn(2, _T("完整路径"), LVCFMT_LEFT, 500);
- //提升权限
- BOOL isOk = AdjustPrivileges();
- //列出进程
- ListProcess();
- #include <TlHelp32.h>
- #include <Psapi.h>
- #pragma comment(lib,"Psapi.lib")
- BOOL C简单任务管理器Dlg::ListProcess(){
-
- HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
- if (hSnapShot == INVALID_HANDLE_VALUE)
- {
- return FALSE;
- }
- PROCESSENTRY32 pInfo = { 0 };
- pInfo.dwSize = sizeof(PROCESSENTRY32);
- //开始遍历进程
- int idx = 0;
- if (Process32First(hSnapShot, &pInfo)){
- do
- {
- idx = m_ListCtrl.InsertItem(m_ListCtrl.GetItemCount(), _T(""));
- m_ListCtrl.SetItemText(idx, 0, pInfo.szExeFile);
- HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pInfo.th32ProcessID);
- if (hProcess)
- {
- CString strPID;
- strPID.Format(_T("%d"), pInfo.th32ProcessID);
- m_ListCtrl.SetItemText(idx, 1, strPID);
- TCHAR szPath[MAX_PATH] = { 0 };
- GetModuleFileNameEx(hProcess, NULL, szPath, MAX_PATH);
- m_ListCtrl.SetItemText(idx, 2, szPath);
- CloseHandle(hProcess);
- }
- } while (Process32Next(hSnapShot, &pInfo));
- }
- CloseHandle(hSnapShot);
- return TRUE;
- }
复制代码
请问是什么原因?
本帖最后由 wl1383838438 于 2020-1-8 16:37 编辑
不要找了是系统平台的问题 改图是xp环境测试下的问题,(syc的代码没有任何问题,问题出现在 测试环境 教材是xp环境,你我的环境不一样,编译器可能也不一样,我后面测试的为xp以及vs2010 可以获取所有的服务进程)
在xp环境下我搭配的vs2010 是没有任何问题的。 尽量和老师的代码同步(编译器和环境)
|
评分
-
查看全部评分
上一篇: 无法查找或打开 PDB 文件下一篇: 求教SYC大大,换肤第二课,关于动态换肤的疑问
|