Windows进程监控工具(1)--Windows下进程获取
程序员文章站
2023-02-19 22:42:19
描述
为了监控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(); } } } }