虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > WindowsPhone/WindowsMobile > Windows进程监控工具(1)--Windows下进程获取

Windows进程监控工具(1)--Windows下进程获取
类别:WindowsPhone/WindowsMobile   作者:码皇   来源:互联网   点击:

描述为了监控windows下进程占用资源(内存、cpu使用率)的情况,在这里使用C 自制一个小工具。比如:在Window下,做某种性能测试时,需要监控进程内存和cpu的使用情况;虽然,监控的方法很多,一般都只能看到进

描述

为了监控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;
    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();
    try {
    foreach (Process p in processes) {
    //获取每个进程的三个需要显示到窗口中的属性。 string processId = p.Id.ToString();
    string processName = p.ProcessName;
    string startTime = getStartTime(p.StartTime);
    //将三个属性,加入显示列表中。 ListViewItem item = new ListViewItem(new string[] {
    processId, processName,startTime}
    );
    listView1.Items.Add(item);
    }
    }
    catch (Exception ex) {
    ex.StackTrace.ToString();
    }
    }
    /** * 将日历型时间转化为字符串型时间,方便显示。 */ 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) {
    //获取当前所有进程。 Process[] processes = Process.GetProcesses();
    try {
    foreach (Process p in processes) {
    //获取每个进程的三个需要显示到窗口中的属性。 string processId = p.Id.ToString();
    string processName = p.ProcessName;
    string startTime = getStartTime(p.StartTime);
    //将三个属性,加入显示列表中。 ListViewItem item = new ListViewItem(new string[] {
    processId, processName, startTime }
    );
    listView1.Items.Add(item);
    }
    }
    catch (Exception ex) {
    ex.StackTrace.ToString();
    }
    }
    }
    }

窗口效果


相关热词搜索:
上一篇:Windows下VC++使用protobuf
下一篇:最后一页