




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Windows 进程管理工具设计与实现进程管理工具设计与实现 摘摘 要要 Windows 是操作系统中使用最广泛,使用人数最多的系统,它自身带有一个任务管理 器,可以对系统中的进程,任务进行管理,本课题主要模仿 Windows 的任务管理器,对系 统中的程序、进程进行控制。在程序的设计过程中,需要通过 VC+调用一些 Windows API 函数,从而获得程序、进程、线程模块,以及系统信息资源。最后在 Windows XP 系统上 进行测试,通过开发,最终程序实现了进程管理的基本功能,能够正确实现对系统当前进 程和系统资源的控制。 关键词:关键词:管理器;线程;进程;VC+ The Design and Implementation of the Processes Management Tool for Windows Abstract Windows is the most widely used in the operating system, system, by the largest number of its own with a task manager, is able to process in the system, manage tasks, this topic mainly imitate the Windows task manager, the system of procedures and process control.In the process of program design, need some Windows API function called by vc + +, thereby gaining procedure, process, thread module, and system information resources.Finally tested on Windows XP system, through the development, finally application implements the basic function of process management, correctly implement control of the system to the current process and system resources. Key words: Task Manager; Threads; Process; VC+ 目目 录录 1绪论.1 1.1研究背景.1 1.2研究意义与目的.1 1.3课题的研究方法.1 1.4相关知识介绍.2 1.4.1 进程与线程.2 1.4.2Visual C+介绍.3 2主要功能及设计思路.4 2.1软件要实现的具体功能.4 2.2软件概要设计.4 3软件详细设计.5 3.1窗体的设计与实现.5 3.2正在运行的程序功能设计.7 3.3正在运行的进程功能设计.8 3.3.1进程、模块及线程信息.9 3.3.2结束进程子模块的设计.11 3.3.3删除文件子模块的设计.11 3.4系统信息查看功能设计.11 3.4.1画刷绘制 CPU 和内存使用率.11 3.4.2其他信息显示.12 3.4.3系统信息显示.12 4软件测试.13 4.1测试环境配置.13 4.2对比测试.13 4.3结果验证.13 结 论.16 参考文献.17 致 谢.18 1 1 1绪论绪论 1.11.1 研究背景研究背景 Windows 任务管理器是用来管理 windows 系统当前正在运行程序的具体情 况的,通过该管理器,可以轻松管理系统中的运行程序。本设计的主要目的就 是为了能够很好的运行 VC+的所学知识(包括以前所学的一些关于计算机操作 系统、进程、计算机安全、编程等知识)进行实践的能力,本课题就是模拟制 作一个 Windows 任务管理器,使其能够成功的对任务、进程进行查看、结束等 操作。 1.21.2 研究意义研究意义与目的与目的 本课题主要研究如何开发一个 windows 进程管理器,系统应该具有的功能 应该满足一般进程管理的需要,最大限度的模仿 Windows 任务管理器。 本课题对进程管理进行详细的设计,分别能够实现管理正在运行的程序, 正在运行的进程和线程,还可以对系统信息进行查看。 正在运行的程序,主要包括:结束任务、新建任务、切换到新程序以及刷 新程序列表。 正在运行程序包括:进程列表查看,结束进程、删除文件、导出列表以及 刷新进程,另外还可以查看某一个进程的信息,进程包含哪些线程。 系统信息查看包括:系统信息,物理内存,虚拟内存,页文件以及 cup 和 内存的使用率表示图。 用过电脑的人大都使用过任务管理器之类的软件,它们都能够对进程进行 管理。本设计的主要目的就是为了能够很好的运行 VC+的所学知识(包括以前 所学的一些关于计算机操作系统、进程、计算机安全、编程等知识)进行实践 的能力;既能够锻炼自身的实际动手能力,还可以把课题当做项目一样进行开 发,了解一下项目的开发流程与经历,这对于以后工作能力的培养更是具有相 当重要的意义。 1.31.3 课题的研究方法课题的研究方法 研究方法上,笔者查阅了近十年来与进程管理相关的资料,并且仔细研读 了操作系统和 Visual C+ 6.0 的相关书籍,进行仔细琢磨、推敲、分析并且加 2 以总结,最终为本论文提供了科学的理论基础。接着向指导老师不断询问、沟 通和访谈,在论文构思和结构上面进行详细交流。 1.41.4 相关知识相关知识介绍介绍 1.4.1 进程进程与线程与线程 (1)进程 进程是应用程序在计算机上的一次执行活动,他是一个正在运行的程序的 实例,由操作系统用来管理进程的内核对象和地址空间组成。内核对象是系统 用来存放进程统计信息的地方。而地址空间则包含了所有的可执行模块或动态 链接库(DLL)模块的代码和数据。同时,他还可以把内存空间进行动态分配。 比如说:线程分配空间。 进程的执行过程是动态的,它对着程序的运行,动态地被创建,然后被调 度执行,最后会消亡。它是计算机中资源分配的基本单位,同时也是占用处理 器的调度单位,一个进程拥有完整的虚拟地址空间。 了解进程,不得不说的就是进程的生命周期,进程的生命周期至少包含三 种基本状态,分别是:执行、等待与就绪。其中,三种状态能够相互转换,他 的基本原理是,位于就绪状态的进程已经获得了处理器以外的其它系统资源, 所以只需要得到处理器的调度,就能马上转变为执行状态。位于执行状态的进 程由于时间片到期而放弃处理器转换到了就绪状态,因为要等待某个事件发生 而放弃处理器则转换为等待状态。位于等待状态的进程由于等待的事件发生从 而被唤醒,则转换为就绪状态,如图 1。 图 1 进程状态转换 (2)线程 3 了解完进程,就下来就了解一下线程,所谓线程就是进程中的基本调度单 位,线程不仅可以由操作系统内核控制,同时还可以由用户的应用程序进行控 制。 和进程一样,线程也具有三种基本状态:执行、就绪和阻塞。在这三种基 本状态下,有五种基本操作对线程的状态进行转换。这五种基本分别操作是: 1、派生:线程是在进程内派生出来的,它能用由进程进行派生,也可由线 程进行派生。 2、阻塞:如果线程在执行的过程中需要等待一个特定的事件发生,则他会 被阻塞。 3、激活:如果阻塞线程的事件终于发生了,则该线程就会被激活并且进入 就绪队列。 4、调度:选择一个就绪线程进入执行状态。 5、结束:一个线程执行结束,它的寄存器上下文以及堆栈内容等将会被统 统释放掉。 (3)进程与线程的关系 进程是应用程序在计算机上的一次执行活动,他是一个正在运行的程序的 实例。如果系统要让一个进程完成某项操作,那么进程就会拥有一个在其自身 环境中运行的线程,这个线程负责执行包含在进程地址空间中的代码。当操作 系统创建一个进程后,系统会自动为其创建第一个线程,这就是主线程。接着, 该线程还能够继续创建其他的线程,以此类推,就能过创建更多的线程。 所以对于操作系统的设计,能够归结为三种: (1)以多进程形式,允许多个任务同时运行; (2)以多线程形式,允许单个任务分成不同的部分运行; (3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面 允许进程之间和线程之间共享资源。 1.4.2Visual C+介绍介绍 Mircrosoft Visual C+ 6.0(通常简称 VC+ 6.0),属于微软可视化编程套 件 Visual Studio 98 中的重要组成部分。这套功能强大的 Windows 应用程序 开发系统是由 Microsoft C/C+演化而来的。从 Microsoft C/C+ 8.0 开始改 4 称为 Visual C+,以至发展到今天的 Visual C+ 6.0。 由于 VC 是微软的产品,Visual 平台是当前 Windows 应用开发系统中与 Windows 平台本身支持最彻底的开发平台。Visual C+6.0 包含了支持 Windows 95.Windows NT 4.0 以及 Windows 98 的 Win32 SDK 文档,即人们可以在 Visual C+环境下使用 Windows SDK 的 SDK 文档提供的 API 来进行 Windows 应用程序的 开发。Visual C+ 6.0 采用的是 32 位编程方式,也就是说其生成的程序是在 像 Windows 95 Windows NT4.0 和 Windows 98 等这样的 32 位操作系统下运行 的。VC+ 6.0 继承了其以前版本的最主要的技术。它提供了一系列可视化编程 的工具,如 AppWizard 和 ClassWizard 等。它们使 Windows 内在的复杂的运行 机制,通过微软基础类库 MFC,使 Windows 编程更为简单易学。 2 2主要功能及设计思路主要功能及设计思路 2.12.1软件要实现的具体功能软件要实现的具体功能 课题要求实现的主要功能包括以下三个方面的内容: (1)正在运行的程序,主要包括:结束任务、新建任务、切换到新程序以 及刷新程序列表。 (2)正在运行程序包括:进程列表查看,结束进程、删除文件、导出列表 以及刷新进程,另外还可以查看某一个进程的信息,进程包含哪些线程。 (3)系统信息查看包括:系统信息,物理内存,虚拟内存,页文件以及 cup 和内存的使用率表示图。 2.22.2软件概要设计软件概要设计 在 IDE 编辑环境中创建一个基于对话框的 MFC 应用程序,在 Task 主窗口上 添加一个标签控件,并且在上面加入三个页面,分别是:正在运行程序、正在 运行进程和系统信息查看。 正在运行程序页面显示当前正在运行的任务(可见且有窗口标题),用列表 控件进行显示,并能够对任务进行操作,如:结束任务、新建任务、切换到新 程序以及刷新程序列表。 正在运行进程页面显示当前系统正在运行的进程及相关的模块,线程等, 用列表控件进行显示,并且可以实现终止进程、进程列表保存到文件等操作。 5 系统信息查看页面显示物理内存、虚拟内存和页文件等详细使用情况, CPU、内存的使用率,并且让他们以图形的方式显示出来,并用列表控件清楚的 显示出系统当前信息。 3 3软件详细设计软件详细设计 制作完的程序如图 2。 在主界面上面设置了一个标签控件,并创建了正在运行程序、正在运行进 程和系统信息查看三个页面,标签控件用于选择并显示各自对应的页面。三个 页面分别用于显示当前运行的应用程序、正在运行的进程及进程模块、具体系 统信息情况。 图 2 程序运行主界面 3.13.1窗体的设计与实现窗体的设计与实现 所设计的程序是基于 MFC 对话框的应用程序。所以先要创建一个基于 MFC 的应用程序 PcsMgr, 并且在主对话框类 PcsMgrDlg 中添加标签控件用来放置正 6 在运行程序、正在运行进程和系统信息查看这三个页面,如图 3。 图 3 标签控件 (1 1)子对话框的显示)子对话框的显示 子对话框的显示与切换,是通过标签控件完成的。当用户点击标签控件上 的每一项时,分别显示对应页面的相关信息。 要显示三个子对话框,需要添加三个对话框到工程中,并将 Style 属性设 为 Child,Board 设为 None,取消标题栏。再分别创建三个对话框的类 CTask ,CProcess,CChart,并定义了要实现的三个变量: CTask m_Task; /任务 CProcess m_Process; /进程 CChart m_Chart; /图表 并定义一个图像列表变量用于存放标签图标:CImageList m_ImageList; 接下来就创建子窗口: m_Task.Create(IDD_TASK,m_Tab.GetActiveWindow(); m_Process.Create(IDD_PROCESS,m_Tab.GetActiveWindow(); m_Chart.Create(IDD_CHART,m_Tab.GetActiveWindow(); (2 2)把创建好的进程管理器程序的权限提升。提升后才能对各个任务进行把创建好的进程管理器程序的权限提升。提升后才能对各个任务进行 管理和控制。具体的方法如下:管理和控制。具体的方法如下: 第一步:使用 GetCurrentProcess()函数取得当前进程的句柄; 7 第二步:使用 OpenProcessToken()打开当前进程的访问令牌; 第三步:使用 LookupPrivilegeValue()函数取得想提升的权限的值; 第四步:使用 AdjustTokenPrivileges()函数给当前进程的访问令牌增 加权限。具体添加在在 CPcsMgrApp 类的 InitInstance()函数中。 到此为止,程序的权限就已经被提升了。 (3 3)实现菜单)实现菜单 关机、注销、重起这些菜单命令都是通过调用 Windows 的 API 函数 ExitWindowsEx()完成的。这里不做过多描述。 3.23.2正在运行的程序功能设计正在运行的程序功能设计 该页面实现了当前系统中所有的运行程序,并且能够对运行程序进行控制, 比如结束任务、创建新任务、切换到新程序等。 (1 1)显示任务信息)显示任务信息 正在运行程序是由列表控件进行显示的,如图 4。 图 4 正在运行程序列表 要显示任务信息,首先要定义一个结构体类型用于存放任务的相关信息: 接着要获取窗口标题,使用 API 标准函数 GetWindowText (): 8 char tempMAX_PATH; GetWindowText(hwnd,temp,sizeof(temp) 获取进程及线程 ID: TID=GetWindowThreadProcessId(hwnd, 确定运行状态是利用 SendMessageTimeout 向窗口发送消息而取得: if(SendMessageTimeout(hwnd,WM_SYSCOMMAND,NULL,NULL,SMTO_ABORTIFHU NG,1000,NULL) strRunState = 正在运行; else strRunState = 没有响应; (2 2)结束任务)结束任务 调用 SendMessageTimeout()函数向要指定关闭的窗口发送程序关闭的消 息,如果程序无响应,就需要调用 TerminateProcess()函数进行强行终止。 3.33.3正在运行的进程功能设计正在运行的进程功能设计 主要实现进程的查看和管理,如结束进程,删除文件,导出列表至网页文 件等功能。和显示正在运行程序采用同样的方法,添加两个列表控件,分别显 示当前系统中所有的进程以及每一个进程包含的模块信息,如图 5。 9 图 5 正在运行进程列表页面 3.3.13.3.1 进程、模块及线程信息进程、模块及线程信息 (1 1)进程)进程 每一个进程都包括各自的信息,这些信息有进程图标,进程名、ID、CPU 占有率、内存使用大小、优先级别、线程数、父进程 ID 和进程路径等信息,如 图 6。 10 图 6 进程信息 通过调用 ToolHelp API 函数能够枚举所有正在运行的进程同时取得进程的 路径,在这个功能中,主要用到了 ToolHelp API 中的函数,分别是: CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);用于创建系统进程快 照,通过它能够取得系统中的所有进程的信息。 Process32First(hProcessSnap,用于获取快照中第一个进程的信息。 BOOL WINAPI Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);用于取得快照中下一个进程信息。 进程 CPU 使用率是通过操作系统提供的性能监视器获得的。部分主要代码 如下: pdhStatus = PdhCollectQueryData(m_hQuery);/收集数据 pdhStatus = PdhGetFormattedCounterValue( hCounter,PDH_FMT_LONG,/得到格式化数据, fmtValue 就是需要得到的 CPU 使用率数据。 进程的内存占用率需要用到 GetProcessMemoryInfo()函数: GETPROCESSMEMORYINFO GetProcessMemoryInfo;,再取得内存使用数: dwMemoryUse = pmc.WorkingSetSize;/内存使用大小 pmc 则是返回进程的内存使用信息,它是定义的一个 PROCESS_MEMORY_COUNTERS 结构。 (2 2)模块和线程)模块和线程 模块信息还是需要通过 ToolHelp API 函数实现。用到的有: CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,dwPID )这个和显示进程 信息中作用一样。 Module32First(hModuleSnap,用于获取特定进程的第一个模块信息。 Module32Next(hModuleSnap,/用户名 GetComputerName(lpszSystemInfo,/计算机名 13 4 4软件测试软件测试 4.14.1测试环境配置测试环境配置 系统配置:Windows XP; 硬件配置:CPU:AMD Athlon(tm)xp 2500+ 1.8GHz 以上 内存:512M 以上 硬盘:SATA 80G 以上 4.24.2对比测试对比测试 将程序取得的任务、进程以及资源使用情况获取到的信息与 Windows 任务 管理器中的信息进行对比,验证程序的正确性。 4.34.3结果验证结果验证 程序能够在 Windows XP 系统上能正常运行。 正在运行的程序能够进行结束任务、新建任务、切换到新程序以及刷新程 序列表。 正在运行程序能够进行进程列表查看,结束进程、删除文件、导出列表以 及刷新进程,另外还可以查看某一个进程的信息,进程包含哪些线程。 系统信息查看能够查看系统信息,物理内存,虚拟内存,页文件以及 cup 和内存的使用率表示图。 将获取的进程信息与 Windows 任务管理器中的信息进行对比,结果一致, 如图 9,10。 14 图 9 程序获取的进程信息 15 图 10 Windows 任务管理器进程信息 系统资源使用情况与 Window 任务管理器取得的信息进行比较,如图 11, 结果一致。 16 图 11 资源使用情况 结结 论论 通过本课题的研究和制作,在 VC+的 IDE 环境中进行编程,只知道理论知 识是远远不够的,还需要对 IDE 进行不断熟悉,另外系统提供给我们接口函数, 需要通过 MSDN 帮助进行详细了解和熟悉,才能够正确的使用,通过本课题的开 发,发现软件开发并不是一件容易的事情,需要逻辑性强,思路明
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外包运输劳务合同范本
- 房产365租房合同范本
- 大件搬运维修合同范本
- 食堂档口合同范本
- 农产品溯源体系在2025年农业产业扶贫中的应用报告
- 图书漂流试题及答案
- 锅炉制造试题及答案
- 写材料短语题目及答案
- 2025年初二函数题库及答案
- 光伏组件技能考试试题及答案
- 2023年10月高等教育自学考试《13683管理学原理(中级)》试题
- 学校供菜合同协议书
- 2025届江苏省淮安市实验初级中学七下数学期末检测模拟试题含解析
- 北师大计算机试卷及答案
- 2025年新会计法培训课件
- 环保机构舆情处理机制流程
- 皮划艇旅游线路行业深度调研及发展战略咨询报告
- 品质客诉培训
- 加油站消防安全管理制度
- 2025-2030中国光保真度(Li-Fi)行业市场发展趋势与前景展望战略研究报告
- 全册知识点(素材)六年级上册科学青岛版
评论
0/150
提交评论