Windows進程監控工具(1)--Windows下進程擷取

來源:互聯網
上載者:User
描述 為了監控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);            }        }    }}
 
視窗效果 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.