第2章Windows任务管理器据国外研究公司统计,在2008年全球个人计算机用户已经超过10亿,并预测在2010年全球个人计算机用户数量将超过13亿。随着个人计算机走进千家万户,计算机操作系统中的任务管理器也被越来越多的用户所熟悉和使用。任务管理器是在Windows系统中管理应用程序和进程的工具,通常由Windows操作系统自带,也有提供增强功能的第三方软件。通过任务管理器用户可以方便的查看当前运行的程序、进程、用户、网络连接以及系统对内存和CPU的资源占用,并可以强制结束某些程序和进程,此外还可以监控系统资源的使用状况。Windows任务管理器首次出现是在1998年美国微软公司发行的Windows98操作系统中,此后微软的各个版本的Windows操作系统都集成了任务管理器。任务管理器并不是Windows系统的专利,它广泛运用于各种操作系统中,在苹果公司的MacOS操作系统中有类似的活动监视器(ActivityMonitor),在基于Linux的ubuntu操作系统有相类似功能的系统监视器。研究任务管理器的功能并熟练的使用任务管理器可以方便的处理计算机日常使用中所遇到一些问题,对于更好的使用计算机操作系统从事办公、学习和娱乐也有现实的意义。本章将根据对WindowsXP系统集成的任务管理器的研究来使用C#.Net设计和实现一个具有相似功能的任务管理器软件。2.1系统需求分析根据Windows系统任务管理的要求,要求系统具有以下功能:新建并运行可执行程序。对计算机进行注销、休眠、关闭和重启。查询计算机系统运行的应用程序功能。查询计算机系统运行的进程功能。查询系统运行的CPU使用率功能。查询系统运行的内存使用率功能。查询使用计算机系统运行的用户功能。查询系统网络连接性能。查看计算机系统版本。2.2概要设计2.2.1项目规划Windows任务管理器是由主窗体模块、应用程序模块、进程管理模块、性能查询模块、网络连接信息查询模块、用户管理模块、新建任务模块和查看版本信息模块等几个功能模块组成,规划系统功能模块如下:主窗体模块主窗体模块主要包括文件、选项、关机、帮助等4部分,其中文件部分包括新建任务和退出系统功能,选项部分包括最小化时隐藏功能,关机部分包括注销计算机、关闭计算机、重启计算机和休眠计算机等4种功能,帮助部分包括查看系统版本信息功能。应用程序模块应用程序模块主要包括获取计算机系统正在运行的应用程序列表的功能。进程管理模块进程管理模块主要包括获取当前正在运行的进程列表功能。性能查询模块性能查询模块主要包括实时获取计算机系统的CPU使用率信息以及内存使用情况信息功能。网络连接信息查询模块网络连接信息查询模块主要包括实时获取计算机系统网络端口连接状况的信息。用户管理模块用户管理模块主要包括获取什么用户当前正在使用计算机系统。新建任务模块新建任务模块主要包括浏览计算机系统中的可执行程序、执行系统中的可执行程序以及取消执行系统的可执行程序等功能。查看系统版本信息模块查看系统版本信息模块主要是实现查看计算机系统的版本信息功能。2.2.2系统功能结构系统的功能结构如图2.1所示。Windows任务管理器主窗口设计应用程序模块设计文件性能模块设计进程模块设计联网模块设计用户模块设计新建任务帮助关机选项退出任务管理器最小化时隐藏关闭计算机注销计算机重启计算机休眠计算机查看系统版本创建新任务模块设计查看版本模块设计获取应用程序列表获取进程列表获取CPU使用率获取联网信息列表获取内存使用状况获取用户信息列表执行系统中的可执行程序查看系统版本浏览系统中的可执行程序取消系统中的可执行程序图2.1系统功能图2.2.3设计目标本系统是根据计算机用户使用系统时的实际需求而开发的,完全能够实现用户对计算机系统的监控和查询,通过本系统可以达到以下目标:系统运行稳定,安全可靠。界面设计美观,人机交互界面友好。信息查询灵活、方便、快捷、准确。采用多种方式查询计算机系统相关信息。2.4主要功能模块设计2.4.1建立工程框架在VisualC#中建立Windows任务管理器的基本框架,步骤如下:(1)单击菜单“文件--新建--项目”命令,打开“新建项目”对话框,单击左边的“VisualC#--Windows”项目类型,选择右边的“Windows窗体应用程序”模板,输入工程名“Windows任务管理器”,并设置路径,如图2.2所示。图2.2“新建项目”对话框(2)设置好的属性如图2.2所示,单击“确定”按钮后,就完成了新建工程。(3)将Form1重命名为“frmMain”,并对所有引用的项目中执行重命名,如图2.3所示。并将frmMain的Text属性设置为“Windows任务管理器”。图2.3“重命名”对话框2.4.2主窗口设计1.主菜单设计主窗口菜单设置的主要步骤如下:(1)单击集成编辑器左边的“工具箱”选项卡,选中“MenuStrip”选项,拖动该工具项到右边的frmMain窗体中,如图2.4所示。图2.4“MenuStrip”窗口(2)设计主菜单的各个子项目内容如表2.1所示。表2.1设计菜单表文件选项关机帮助新建任务(运行…)最小化时隐藏注销计算机查看系统版本退出任务管理器关闭计算机重启计算机休眠计算机(3)选择“menuStrip1”控件,单击“ToolMenuStripItem”栏,对此菜单项的属性进行设计。如表2.2所示。表2.2菜单项属性设计控件名称属性类型属性值事件类型事件名文件ToolStripMenuItemName文件ToolStripMenuItem无无Text文件新建任务运行ToolStripMenuItemName新建任务运行ToolStripMenuItem新建任务运行ToolStripMenuItem新建任务运行ToolStripMenuItem_ClickText新建任务(运行...)退出任务管理器ToolStripMenuItemName退出任务管理器ToolStripMenuItem退出任务管理器ToolStripMenuItem退出任务管理器ToolStripMenuItem_ClickText退出任务管理器选项ToolStripMenuItemName选项ToolStripMenuItem无无Text选项最小化时隐藏ToolStripMenuItemName最小化时隐藏ToolStripMenuItem最小化时隐藏ToolStripMenuItem最小化时隐藏ToolStripMenuItem_ClickText最小化时隐藏关机ToolStripMenuItemName关机ToolStripMenuItem无无Text关机注销计算机ToolStripMenuItemName注销计算机ToolStripMenuItem注销计算机ToolStripMenuItem注销计算机ToolStripMenuItem_ClickText注销计算机关闭计算机ToolStripMenuItemName关闭计算机ToolStripMenuItem关闭计算机ToolStripMenuItem关闭计算机ToolStripMenuItem_ClickText关闭计算机重启计算机ToolStripMenuItemName重启计算机ToolStripMenuItem重启计算机ToolStripMenuItem重启计算机ToolStripMenuItem_ClickText重启计算机休眠计算机ToolStripMenuItemName休眠计算机ToolStripMenuItem休眠计算机ToolStripMenuItem休眠计算机ToolStripMenuItem_ClickText休眠计算机帮助ToolStripMenuItemName帮助ToolStripMenuItem无无Text帮助查看系统版本ToolStripMenuItemName查看系统版本ToolStripMenuItem查看系统版本ToolStripMenuItem查看系统版本ToolStripMenuItem_ClickText查看系统版本(4)完成“新建任务运行ToolStripMenuItem_Click”事件。privatevoid新建任务运行ToolStripMenuItem_Click(objectsender,EventArgse){frmCreateExefce=newfrmCreateExe();fce.ShowDialog();}(5)完成“退出任务管理器ToolStripMenuItem_Click”事件。privatevoid退出任务管理器ToolStripMenuItem_Click(objectsender,EventArgse){notifyIcon1.Dispose();Application.Exit();}(6)完成“最小化时隐藏ToolStripMenuItem_Click”事件。privatevoid最小化时隐藏ToolStripMenuItem_Click(objectsender,EventArgse){if(ShowInTaskbar==false){this.最小化时隐藏ToolStripMenuItem.CheckState=CheckState.Unchecked;ShowInTaskbar=true;return;}if(ShowInTaskbar==true){this.最小化时隐藏ToolStripMenuItem.CheckState=CheckState.Checked;ShowInTaskbar=false;return;}}(7)完成“注销计算机ToolStripMenuItem_Click”事件。privatevoid注销计算机ToolStripMenuItem_Click(objectsender,EventArgse){if(DialogResult.Yes==MessageBox.Show(是否要注销计算机,提示,MessageBoxButtons.YesNo)){ExitWindowsEx(0,0);}}(8)完成“关闭计算机ToolStripMenuItem_Click”事件。privatevoid关闭计算机ToolStripMenuItem_Click(objectsender,EventArgse){if(DialogResult.Yes==MessageBox.Show(是否要关闭计算机,提示,MessageBoxButtons.YesNo)){System.Diagnostics.ProcessmyProcess=newSystem.Diagnostics.Process();myProcess.StartInfo.FileName=cmd.exe;myProcess.StartInfo.UseShellExecute=false;myProcess.StartInfo.RedirectStandardInput=true;myProcess.StartInfo.RedirectStandardOutput=true;myProcess.StartInfo.RedirectStandardError=true;myProcess.StartInfo.CreateNoWindow=true;myProcess.Start();myProcess.StandardInput.WriteLine(shutdown-s-t0);}}(9)完成“重启计算机ToolStripMenuItem_Click”事件。privatevoid重启计算机ToolStripMenuItem_Click(objectsender,EventArgse){if(DialogResult.Yes==MessageBox.Show(是否要重启计算机,提示,MessageBoxButtons.YesNo)){System.Diagnostics.ProcessmyProcess