获取windows进程信息及CListCtrl控件(List Control)练习
环境:VS2010/MFC/对话框
效果图:

目录:
1. 关于windows进程信息获取
2. CListCtrl的使用
---------------------------------------------------------
1. windows进程信息获取
需要包含头文件
#include <psapi.h>
#include <TlHelp32.h>
#pragma comment(lib,"Psapi.lib")
主要函数使用
CreateToolhelp32Snapshot, Process32First,OpenProcess, GetProcessMemoryInfo,Process32Next。
PROCESSENTRY32结构中保存进程信息,
szExeFile--进程名称
th32ProcessId--进程Id
cntThreads--进程包含线程数
th32ParentProcessId--父进程ID
pcPriClassBase--线程基础优先级
内存信息保存在PROCESSMEMORYCOUNTERS中,windows内存项分很多种,下图是从win7任务管理器的查看--选择列中所截的图,

其中,任务管理器上默认显示的是专用工作集内存,指得是该程序独有的,不和其他程序共享的。
这一项不知道怎么获取,PROCESSMEMORYCOUNTERS中没有。程序中暂时用的workingsetsize,包含了可能被其他程序共享的内存。
按钮响应代码:
void CSystemProcessDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
m_listctrl.DeleteAllItems();
HANDLE hSnapshot;
//创建进程信息快照
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
//进程信息结构体
PROCESSENTRY32 pe;
//取得第一个
Process32First(hSnapshot, &pe);
CString str;
int i = ;
do
{
m_listctrl.InsertItem(i, pe.szExeFile);
str.Format("%d", pe.th32ProcessID);
m_listctrl.SetItemText(i,,str); str.Format("%d", pe.cntThreads);
m_listctrl.SetItemText(i,,str); str.Format("%d", pe.th32ParentProcessID);
m_listctrl.SetItemText(i,,str); str.Format("%d", pe.pcPriClassBase);
m_listctrl.SetItemText(i,,str); //根据进程ID获取内存使用信息
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,pe.th32ProcessID);
if(hProcess)
{
//内存信息结构
PROCESS_MEMORY_COUNTERS pmc;
if (GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)))
{
str.Format("%dK", pmc.WorkingSetSize/);
m_listctrl.SetItemText(i,,str);
}
}
i++;
}
while(Process32Next(hSnapshot, &pe));
CloseHandle(hSnapshot);
}
2. CListCtrl控件
控件用法参考:http://www.cnblogs.com/lidabo/archive/2012/08/23/2652786.html
直接拖一个List control到界面, 然后需要在属性中设置:
View选项为Report模式。
添加一个控件变量CListCtrl m_listctrl;
初始化时在OnInitDialog()中添加:
char *tab[] = {"进程名称", "PID", "线程数", "父进程ID", "线程优先级", "内存使用"};
for (int i = ; i < ; i++)
{
//LVCFMT_RIGHT表示文字右对齐,60为列宽
m_listctrl.InsertColumn(i, tab[i], LVCFMT_RIGHT, );
}
//设置 进程名称 列宽
m_listctrl.SetColumnWidth(, );
m_listctrl.SetColumnWidth(, );
m_listctrl.SetColumnWidth(, );
m_listctrl.SetColumnWidth(, );
//设置扩展样式为全行选取,网格,复选框
m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);
默认是单列选取,而且除了第一列可以选,其他都不可以选, 默认没有网格,没有复选框,通过设置扩展样式修改。
获取windows进程信息及CListCtrl控件(List Control)练习的更多相关文章
- 【VS开发】CListCtrl控件使用
为何调用了CListCtrl的InsertColumn却什么效果都没有?这个问题以前发现过,今天才清楚,那就是要把它的Style指定为LVS_REPORT. 具体做法如下: 假 ...
- CListCtrl控件使用方法总结
今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下: 以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtr ...
- VC的CListCtrl控件
1. CListCtrl 样式及设置 2. 扩展样式设置 3. 数据插入 4. 一直选中Item 5. 选中和取消选中Item 6. 得到CListCtrl中所有行的checkbox的状态 7. 得到 ...
- 【VS开发】CListCtrl控件使用方法总结
CListCtrl控件使用方法总结 今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下: 以下未经说明,listctrl默认view 风格为report 相关类 ...
- MFC实现 自适应操作系统的CListCtrl控件
新建对话框应用程序,删除自动生成的控件后,拖拽一个CListCtrl控件,绑定变量名为:m_listctrl.在对话框初始化成员函数OnInitDialog()中键入以下代码即可实现自适应系统的CLi ...
- 重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree
原文:重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree [源码下载] 重新想象 ...
- 重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState, VisualStateManager
原文:重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState ...
- 【VS开发】关于在CFormView中实现CListCtrl控件的注意事项
[VS开发]关于在CFormView中实现CListCtrl控件的注意事项 标签(空格分隔): [VS开发] 今天调试中发现了一项非常令人恼怒的事情,本来早都知道在CFormView中没有了像在对话框 ...
- [转载]CTreeCtrl 和 CListCtrl 控件(VC_MFC)
来源:http://www.cnblogs.com/kzloser/archive/2012/11/23/2783305.html Tree Control 控件(MSDN 链接) 说明: 树形控件是 ...
随机推荐
- PHP之Memcache和Memcached
本篇文章向大家介绍的是PHP中的Memcache和Memcached ,有兴趣的朋友可以看一下 **Memcache介绍:**Memcache是一套分布式缓存系统,分布式就是说可以在多台服务器上同时安 ...
- nginx - nginx下配置thinkphp5
首先tp5的访问目录指向到webroot/public文件夹中.thinkphp的url访问:http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数 ...
- 检测系统中进程占满单个cpu的情况
#!/bin/bash function thread_used_cpu(){ # $1 为单个cpu负载的百分比 if [[ $1 == "" ]];then full_load ...
- kotlin中集合
fun main(arg: Array<String>) { //可读写的集合创建 val mutableListOf1 = mutableListOf<Int>(1, 2, ...
- [maven][转]pom配置之:snapshot快照库和release发布库
在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...
- Qt编写数据可视化大屏界面电子看板5-恢复布局
一.前言 恢复布局这个功能在整个数据可视化大屏界面电子看板系统中非常有用,很多时候不小心把现有布局拖动乱了,(当然如果不想布局被拖动改动,可以修改配置文件中的MoveEnable参数来控制,默认为真表 ...
- 苹果系统安装虚拟机 Mac如何安装虚拟机教程 (含系统镜像的下载地址)
镜像下载地址 http://www.itellyou.cn 1.前言 大家在用 Mac 系统的时候,可能有时难免还是要用到 Windows 系统.在 Mac 上使用 Windows 系统有二种方 ...
- windows进入指定目录
1.进入cmd 2.输入盘符比如:E: 3.切换目录 cd E:\progect\Firstdjango 实例:
- Salt之CentOS7.5使用RPM包安装MySQL5.7.22
手动安装参考CentOS7.5使用RPM包安装MySQL5.7.22 目录结构为 install.sls文件 #按顺序分别安装commin libs client server #避免冲突安装comm ...
- swift 第九课 用tableview 做一个下拉菜单Menu
写到这里的时候,自己这个项目已经完成了一半左右,项目进度自己还是挺满意.今天又有一个新的布局,要实现个下拉菜单,刚开始写的时候,觉得会很容易,后来发现也是小错不断, 我想自己限制的自己属于写博客的初期 ...