Windows进程监控工具(1)--Windows下进程获取
2014-01-13 21:21
866 查看
描述
为了监控windows下进程占用资源(内存、cpu使用率)的情况,在这里使用C#自制一个小工具。比如:在Window下,做某种性能测试时,需要监控进程内存和cpu的使用情况;虽然,监控的方法很多,一般都只能看到进程占用资源的趋势,无法获取准确的数据,以便比较。比如:监控某进程时,让工具每秒记录一次进程内存和cpu的使用率,监控结束时,将这些数据输出。这里自制该工具分成三步:Windows下进程获取、CPU使用率算法 和 监控数据输出。
获取进程
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.IO; using System.Threading; namespace ProcessMonitor { public partial class Form1 : Form { /** * 初始化窗口。 */ public Form1() { InitializeComponent(); //设置listView中的三个列标题。 listView1.Columns.Add("ProcessId",80); listView1.Columns.Add("ProcessName", 100); listView1.Columns.Add("StartTime", 170); //显示矩阵的线条。 listView1.GridLines = true; //显示试图细节。 listView1.View = View.Details; //试图的行,可被选中。 listView1.FullRowSelect = true; //获取当前所有进程。 Process[] processes = Process.GetProcesses(); foreach (Process p in processes) { //获取每个进程的三个需要显示到窗口中的属性。 string processId = p.Id.ToString(); string processName = p.ProcessName; string startTime = ""; //有的进程开始时间无法获取,则设置为其异常信息。 try { startTime = getStartTime(p.StartTime); } catch (Exception ex) { startTime = ex.Message; } //将三个属性,加入显示列表中。 ListViewItem item = new ListViewItem(new string[] { processId, processName,startTime}); listView1.Items.Add(item); } } /** * 将日历型时间转化为字符串型时间,方便显示。 */ private string getStartTime(DateTime dateTime) { string startTime = null; string year = dateTime.Year.ToString(); string month = dateTime.Month.ToString(); string day = dateTime.Day.ToString(); string hour = dateTime.Hour.ToString(); string minute = dateTime.Minute.ToString(); string second = dateTime.Second.ToString(); startTime = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second; return startTime; } /** * 窗口的update按钮,刷新窗口中显示的进程。 */ private void button1_Click(object sender, EventArgs e) { //刷新前,清空所有内容。 listView1.Items.Clear(); //获取当前所有进程。 Process[] processes = Process.GetProcesses(); foreach (Process p in processes) { //获取每个进程的三个需要显示到窗口中的属性。 string processId = p.Id.ToString(); string processName = p.ProcessName; //有的进程开始时间无法获取,则设置为其异常信息。 string startTime = null; try { startTime = getStartTime(p.StartTime); } catch (Exception ex) { startTime = ex.Message; } //将三个属性,加入显示列表中。 ListViewItem item = new ListViewItem(new string[] { processId, processName, startTime }); listView1.Items.Add(item); } } } }
窗口效果
相关文章推荐
- ASP.NET 网站部署 Part.3(使用 FTP 部署)
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Cha
- 安装 openSUSE 13.1 后必须做的10件事情
- tomcat+apache负载均衡集群
- [LAMP兄弟连李明老师讲Linux].课件Shell编程
- Linux 下zip包的压缩与解压
- LeetCode - Copy List with Random Pointer
- LINUX下动态链接库dlopen dlsym dlclose函数使用说明
- 本地账户文件passwd详解【Linux基础学习笔记】
- linux远程复制SCP
- SCP命令不同的Linux之间copy文件
- Linux下clock_gettime函数详解
- Linux下简单的安全日志统计脚本
- Ubuntu下llvm之pass初探
- 动态修改网站favicon
- xampp 1.7.3 apache无法启动的问题
- 获取证书以用于 Windows Azure 网站 (WAWS)
- 获取证书以用于 Windows Azure 网站 (WAWS)
- 获取证书以用于 Windows Azure 网站 (WAWS)
- 获取证书以用于 Windows Azure 网站 (WAWS)