简述WINDOWS进程管理工具的原理和实现_第1页
简述WINDOWS进程管理工具的原理和实现_第2页
简述WINDOWS进程管理工具的原理和实现_第3页
简述WINDOWS进程管理工具的原理和实现_第4页
简述WINDOWS进程管理工具的原理和实现_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

简述WINDOWS进程管理工具的原理和实现摘要Windows自带的任务管理器存在功能上的缺陷,比如不能查看进程的模块及线程信息。课题设计就是模拟Windows任务管理器,开发一个功能更完善的Windows进程管理软件。主要设计的是一个基于对话框的VC++程序,在主对话框上面放置了一个标签控件,并创建了任务、进程和系统信息三个页面,标签控件用于选择并显示页面。三个页面分别用于显示当前运行的窗口程序、进程及进程模块、系统资源使用情况。程序还实现了结束任务、切换任务、终止进程等对进程管理的基本功能。在程序的设计过程中,通过调用WindowsAPI函数而获得任务、进程、线程模块,以及系统资源使用情况等信息。最后在WindowsXP系统上进行测试,实现了进程管理的基本功能,为用户了解当前进程及系统资源使用情况提供了很好的参考。关键词:任务管理器;线程;进程;APITheDesignandImplementationoftheProcessesManagementToolforWindowsAbstractTherearesomedefectsintheTaskManagerbuilt-inWindows.Forexample,itdoesn'tshowustheinformationofprocessmodulesandthreads.TheworkofmydesignistofollowtheWindowsTaskManageranddevelopthesoftwarewhichhasimprovedfunctionformanagingprocess.ThissoftwareisdesignedtobeaprogrambasedonadialogwriteintheVC++.Thereisalabelcontrolinthemaindialogbox,andtherearethreepagesfortask,processandsysteminformation.Thelabelcontrolisusedtoselectthepageandtoshowit.Thethreepagesareusedrespectivelytodisplaytheinformationoftaskrunsatcurrent,processandprocessmodules,theutilizationofsystemresources.Thissoftwarealsorealizedsomebasicfunctionformanagingprocess,suchasendingthetask,switchingthetask,terminatingtheprocessandsoon.Duringtheprocessofmyprogram,theinformationfortasks,process,threadmodulesandtheutilizationofsystemresourceisgotbycallingtheWindowsAPIfunctions.FinallyItestitontheWindowsXPsystem.Anditachievesthebasicfunctionformanagingprocess.Itprovidesagoodreferenceforuserstoviewtheprocessatcurrentandtheutilizationofsystemresources.Keywords:TaskManager;Threads;Process;API目录论文总页数:25页1引言11.1课题背景1桌1.2草稼国内外研究烤现状株测1慧1.3舰茅课题研究的却意义么隆1失1.4识营课题的研究杆方法纸猎1撇1.5反轰进程与线程只简介桌乌1绳浪帽进程简介性彼1拉兼忙线程简介碑缠3惨腾冲进程与线程煎的关系惊班3伴捕耕Windo坡ws拖自带的任务云管理器分析途散4挣2跳剂主要功能及讨设计思路潜岔4真2.1竟恼主要功能污关4抹2.2吹兰设计思路晴牛5淘3沫诊详细设计珍皆5御3.1尿孙主框架的实动现喊虽5谦傲桐子对话框的斜显示拥相6临喉掌实现菜单肢恼7伐技彼提升程序权至限妈纹8啄3.2佩陷任务列表页踪面设计塌轿8裂亮伪显示任务信返息腰摸8般换好结束任务霞创9搭朱筝切换任务槐脚10魔3.3饺栋进程列表页笛面设计告设10症含钓显示进程信皂息印地11笑叮团显示模块及卖线程信息雨美13开堵既结束进程萍龄15鹿含傲删除文件射致16阔小夜保存进程信奖息到文件怜换17款3.4鼓农系统性能酿页踪面设计堂宵17极3.4.勤1威洞绘制亲CPU刚使用率图滤伞17攻树缩绘制内存使男用率图羞蚁19猪戚渴其他性能显扛示村贸19狸鄙骗系统信息显骗示疫周20仰4宇效测试结果域梳21辜4.1往僚测试环境子届21泥4.2具仗测试方法轧督21草4.3妥堤测试结果册鬼21慌结竖吸论租神23地参考文献秋兄23引言课题背景潜随着计算机芳的广泛应用钩,很多的软销件被安装在帆计算机上,或使计算机运赏行的程序进训程房越来越多;斯很多的程序门在运行时常阁出现异常(括如不能正常汽结束、占用锅大量资源、缠发现异常的李进程等)。配这些现象给忙我们的计算妹机使用及管捕理带来很多馅的不便。为脱了给计算机眉上运行的程腾序进行很好膜的管理,现帅在出现了许肯多众的进程管理洞工具软件。只课题叼设计的目的肃主要是为了恶检查综合运申用以前所学隶知识(包括鼠以前所学的担一些关于计厕算机操作系渐统、进程、反计算机安全岩、编程等知馆识)的能力愤,模拟Wi浊ndows鼻任务管理器鲁,开发一个响功能更完善忧的Wind烈ows进程冰管理软件,款对溜任务、烤进程进行查局看、欠结束涛等操作货。傲劫国内外研究偶现状缓从现状看来绵,Wind俭ows进程玉管理工具及叫其理论的研敬究,无论是旋国外还是国怠内,技术都劝相当成熟。对微软纱Windo可ws煌操作系统系夹列暑(98透和雕ME叼除外谎)贺都自带有值进程管理器敞,但功能不三是很完善,讯不能查看进糖程模块及线内程信息,而粮许多其他版炎本的Win滴dows进刷程管理软件旅都具有完善域的功能。叠侍课题研究的她意义婶随着计算机侍技术的迅猛交发展,计算户机的运用给孕人们带来了浑很多便利,组无论是学习赤,办公,还钟是商务。一执款好的系统双管理软件能染大大地提高拿计算机的使鄙用和管理效谷率,进程管栗理器就能很毁好地对系统院上运行的进败程进行管理贪。很多人都暴使用过进程命管理器之类淡的软件,或爽者是Win部dows毛自带沸的辱任务管理器截,它淡们都能够对秋进复程进行管理隔。米课题定设计选择开熊发一个进程辰管理器软件氧,歌能够使自己横综合运用以台前所学知识袜(包括操作舍系统、编程岸、系统安全逆等知识)的使能力,同时混也使拨自己晋了解当今软各件编程的一秧些新技术;勉既锻炼了停自己店的实际动手椅能力,又引色导青自己进行了宜一次模拟实袜际产品的开瓦发,对于自钟己说以后工作能锦力的培养具雷有重要的意峡义翅。劫说课题的研究紧方法臭系统使用V侨C++6疯.0的开发根环境,模拟蝇Windo盟ws优的任务梅管理器进行但设计与开发委。因此,驻课题纹设计应首先柔分析进程管穿理器软件的娘相关功能;烘其次,综合盘运用以前所败学的相关知校识,广泛查减阅资料(尤崖其是进程、蠢线程及其相透关知识),善选择所熟悉猪的开发工具啦进行开发;榜同时,在开臂发设计与实低现中,要保碑存好相关的已设计文挡。轨进程与游线程昌简介进程简介椅进程通常被仍定义为一个焰正在运行的蚕程序的实例钱,它由两个瓶部分组成:辉一个是操作两系统用来管什理进程的内攻核对象。内梳核对象也是洪系统用来存直放关于进程惧的统计信息槽的地方。另戚一个是地址叙空间,它包钥含所有可执胆行模块或D村LL模块的销代码和数据需。它还包含踢动态内存分状配的空间。招如线程堆栈乡和堆分配空浑间。好进程是一个剑动态的执行脊过程,它动根态地被创建废,并被调度者执行后消亡常。进程是资就源分配的基挖本单位,也数是抢占处理具机的调度单的位,它拥有连一个完整的纳虚拟地址空尘间。精系统中需要市有描述进程识存在和能够毛反应其变化燕的物理实体骄,即进程的拍静态描述。傻进程的静态特描述由三部动份组成:进侍程控件块P的CB,有关渡程序段和该植程序段对其原进行操作的猫数据结构集炒。进程控制胸块包含了有译关进程的描违述信息、控胸制信息以及蜡资源信息,盾是进程动态幅特征的集中刚反应。系统民根据PCB谷感知进程的蜡存在和通过案PCB中所死包含的各项摔变量的变化指,掌握进程绩所处的状态怖以及达到控腾制进程活动欧的目的。由晓于进程的P现CB是系统法感知进程的球唯一实体,繁因此,在几钉乎所有的多旬道操作系统蜡中,一个进树程的PCB字结构都是全搜部或部分常想驻内存的。蚊进程的程序期部分描述进前程所要完成掌的功能。而布数据结构集乳是程序在执恐行时必不可记少的工作区窑和操作对象雹。这两部分境是进程完成联所需功能的金物质基础。葡由于进程的徐这两部分内吩容与控制进话程的执行及涌完成进程功气能直接有关宽,因而,在较大部分多道状操作系统中裕,这两部分俗内容存放在陶外存中,直醉到该进程执绘行时再调入快内存。影一个进程的奋生命周期可烦以划分为一丧组状态,这瞧些状态描述单了整个进程逃。系统根据奴PCB结构迈中的状态值啄控制进程。券在进程的整嗽个生命周期持内,一个进澡程至少具有勺三种基本状惩态,它们是水:执行状态臣、等待状态灶和就绪状态位。这三种状卫态之间可以刚相互换,处稳于就绪状态疫的进程已经催得到除CP通U之外的其扑它资源,只颠要由调度得置到处理机,置便可立即投庄入执行。处铲于执行状态装的进程因时顷间片到而放降弃处理机进扬入就绪状态迅,因等待某交个事件发生宪而放弃处理身机进入等待呼状态。处于盛等待状态的梨进程因等待杰的事件发生争而被唤醒进池入就绪状态武,如图傻1滩。狡图全1乎咐进程状态转从换线程简介拿线程是一个件进程内的基斗本调度单位目,它既可以螺由操作系统撕内核控制,逆也可由用户队程序控制。谨线程是由两缠个部分组成挑的:一个是孕线程的内核侧对象,操作劣系统用它来泽对线程实施磨管理。内核匆对象也是系堆统用来存放绝线程统计信泽息的地方。润另一个是线层程堆栈,它疼用于维护线循程在执行代鲜码时需要的北所有函数参牵数和局部变削量悔线程只由相涌关的堆栈(半系统栈或用箱户栈)丙、漫寄存器和线哲程控制表T咐CB组成。笋寄存器可被怒用来存储线铺程内的局部惠变量,但不疫能存储其它压线程的相关纷变量。益线程也有三浇个基本状态本:执行状态泳、就绪状态遇和阻塞状态皱。针对线程液的三种基本臭状态,存在蛙五种基本操任作来转换线旦程的状态。淹这五种基本赶操作是:丧1、现派生:线程利在进程内派曲生出来,它浆既可由进程睡派生,也可起由线程派生念。哑2、甲阻塞:如果慢一个线程在无执行过程中近需要等待某扬个事件发生完,则被阻塞趣。胶3、捉激活:如果窑阻塞线程的者事件发生,警则该线程被偏激活并进入怎就绪队列。艳4、冶调度:选择议一个就绪线闷程进入执行内状态。大5、器结束:如果潮一个线程执元行结束,它康的寄存器上佩下文以及堆衔栈内容等将促被释放。珍进程与线程正的关系惨进程是不活餐泼的。若要午使进程完成肯某项操作,游它必须拥有漏一个在它的税环境中运行痰的线程,该抚线程负责执北行包含在进基程的地址空妖间中的代码优。实际上,扇单个进程可排能包含若干惹个线程,所意有这些线程瞒都荡“徐同时押”枣执行进程地隙址空间中的傲代码。盘线程与资源海分配无关,耕它属于某一恒个进程,并郑与进程内的蚁其它线程一辱起共享进程愚的资源。当葡进程发生调叫度时,不同克的进程拥有末不同的虚拟仿地址空间,灭而同一进程等内的不同线悄程共享同一控地址空间。宜为此,每个丧线程都有它漠自己的一组眠CPU寄存苗器和它自己肥的堆栈。每叮个进程至少庆拥有一个线撤程,来执行驼进程的地址凝空间中的代团码。如果没群有线程来执斗行进程的地油址空间中的北代码,那么艘进程就没有为存在的理由呈了,系统就鱼将自动撤消慕该进程和它志的地址空间窜。度若要使所有疲这些线程都误能运行,操暴作系统就要周为每个线程删安排一定的共CPU时间潮。它通过以庄一种循环方么式为线程提喂供时间片(磨称为量程)驾,造成一种凑假象,仿佛苍所有线程都锁是同时运行皇的一样。图摄3显示了在侦单个CPU悬的计算机上箭是如何实现谋这种运行方绳式的。如果榆计算机拥有树多个CPU杆,那么操作膀系统就要使椒用复杂得多吧的算法来实惨现CPU上逗线程负载的做平衡。昨当创建一个张进程时,系层统会自动创透建它的第一恶个线程,称象为主线程。慎然后,该线似程可以创建哥其他的线程纵,而这些线锤程又能创建铃更多的线程康。邀Windo旋ws自带的俭任右务管理器分执析适Windo匆ws芬任务管理器丽由性能、进执程、应用程表序三大部分很组成。其实窗这三大部分涨是有机的联涨系在一起的冶,尤其是性损能和进程,换性能中除了模CPU使用淹率以外,其声余的数据都焰是由进程模驳块顺便取得轿的。孙Windo巾ws200默0/XP的意任务管理器还通过Nt齐Query壁Syste永mInfo盖rmati丙on的调吨用来获取各锯类信息,如义CPU廊使用率,内膛存赖使用率,句狭柄总数,线掠程总数,进抬程总数等等飘。在任务管邀理器中的几浙乎所有信息搂都是来自该火函数。Nt强Query虚Syste唯mInfo鬼rmati凯on函数隶隙属Ntdl寸l.dll垃,是一个未资公开的函数摘。其调用方宫式为:锯NTSTA恩TUSN珍tQuer睡ySyst感emInf怕ormat彼ion(S的YSTEM阔_INFO藏RMATI震ON_CL示ASS蛋源Syste锈mInfo迷rmati材onCla做ss,PV陡OIDS晴ystem岭Infor前matio讲n,矿蠢ULONG摘南Syste塔mInfo旧rmati横onLen厘gth,洪PULON疮G钉训Retur裹nLeng帅th);庄Syste据mInfo贫rmati倘onCla框ss退:宇在SYST旁EM_IN拼FORMA师TION_雷CLASS孩中的枚举值罚之一,有声明返回信塘息的种类;贩Syste秩mInfo鹿rmati台on姜:贱指到一个要泡求返回信息林的缓冲区,新这个系统信扬息变量的尺邻寸和结构依慈赖于Sys嫌temIn导forma血tionC服lass参品数的值淹;滥Syste展mInfo垒rmati清onLen贯gth纸:随Syste滴mInfo器rmati深on参数指桥定的缓冲区械尺寸带;巧Retur沙nLeng茎th搂:斯返回值尺寸曲。崖这个函数是舌一个正在修盼改的函数,稠在Wind泪ows20革00和Wi叙ndows躁XP中可逐用,但在W警indow辣s98和针Windo潜wsMe策中不可用。左而且该函数幼调用的入口黎参数非常之毫多,调用复活杂。烫因此,在咐此次楼进程管理器镇的开发中,帮将使用其它帽方法来获取情各类信息。蹲主要功能荣及设计思路主要功能尸设计要求实骆现酬的主要谅功能粪——军进程管理功铜能,具体包饿括以下内容兴:料(1)任务堂管理:列出混所有当前运剥行的规窗口程序叔名、运行状扎态等信息;沫对拔它们胀进行终止、售切换等操作廊。惊(2)进程膛管理:列出咳所有的Wi乔ndows洗进程,以及采进程所在的介磁盘绝对路忙径,进程消氧耗资源睡状况等;列何出所有进程磁的相关模块菌挂载名,模汁块所在磁盘当的绝对路径呈以及进程的箩线程情况,吵包括资源占鸟用情况、所态在内存空间容地址等;除殿核心进程外年,所有的其铺他进程均可躺以被终止,酿能够尽量不事丢失信息,笋在提升本管辜理进程级别松后,也能够衣对系统的核棒心进程终止坏。;舞(3)系统孔性能显示:流绘制CPU咽、内存使用盏率图,以描膜述系统性能匀;列出物理部内存、虚拟养内存和页文六件的使用情欠况;显示系鼓统当前信息浇,包括系统肆名、计算机镜名和用户名转等。设计思路武在Visu竹alC+汤+6.0者环境设计一锋个贫基于对话框蝴的应用程序捎,类似于W套indow脖s自带的任驱务管理器,闻主窗口上添究加一个标签暴控件,加入眠三个页面,晌分别是:任姓务、进程和昏系统性能信立息。细其中,任务查页藏面浊显示当前正朴在运行的任附务(可见且取有窗口标题雷),用列表仓控件进行显耽示,并能够们对任务进行论操作,如:厉添加新任务符,结束任务邮,切换任务秆等。径进程页面显钻示当前系统吴正在运行的估进程及相关素的模块,线哗程等,用列栋表控件进行芒显示,并能块够其实行终止进掀程、进程列饰表保存到文刚件败等忆操作堪。醉系统性能页俘面显示物理核内存、虚拟以内存和页文党件等详细使寸用情况,C讽PU、内存刷的使用率,障并绘制CP丰U使用率和狭内存使用率丽的图形,并抹用列表控件肤显示系统当绣前信息(系勒统名、计算卧机名和当前拌用户等)。详细设计下程序主界面禽如图返2币。再在主界面上鼓面设傍置了一个标挪签控件,并凶创建了任务葱列表初、进程论列表幅和系统信息锹三个页面,得标签控件用航于选择并显雄示页面。三广个页面分别缺用于显示当庸前运行的窗撒口程序、进秒程及进程模歌块、系统资掠源使用情况颗。抗图达2作贴主界面底主框架的实总现障所设计的停程序是基于完对话框的程碌序。首先喷创建一个基归于对话框的竖应用程序P景csMgr台.exe,千在主对话溪框类Pcs皇MgrDl侍g解中添加一个绩标签控件用大于放置任务视、拆进程和系统盈信息等三个刺页面好,附如图打3意。鄙图潜3按殊标签控件葵子孟对话框的奏显示习子对话框的宋显示与切换搁,是通品过标签控件垂完成的。当所用户孟点罚击标签控件撑上的每一项甜时,分别显述示对应诚页面的相关狂信息。霉要显示三个倍子对话框,凝需要恭添加三个对壁话框到工程甚中,并将S速tyle属痰性设为Ch钱ild,B净oard设奔为None罢,取消标题总栏。减再分别师创建三个对袖话框的类C研Task和,CPro老cess,醉CChar拢t,并定义占这三个类的先变量:崖CTask仗m_Ta使sk;胶允汤仰//任务臣CProc哀essm寄_Proc虚ess;霸用责//进程教CChar过tm_C发hart;篇打惕己//图表雄并定义一个屯图像列表变葱量用于存放钞标签图标:傍CIma四geLis哭tm_I讯mageL鹅ist;洞接下来就长创建子窗口圈:驻m_Tas房k.Cre组ate(I挽DD_TA代SK,m_率Tab.G双etAct堪iveWi竹ndow(执));怎m_Pro概cess.笋Creat歌e(IDD戚_PROC捉ESS,m绿_Tab.代GetAc瓶tiveW剖indow峰());泛m_Cha附rt.Cr判eate(裹IDD_哭CHART姥,m_Ta客b.Get柏Activ归eWind虏ow())邻;许当用户选择织标签中的一樱项是,鸽为了将罪对应的猴对话框在标闪签控件中显顺示出来,需逝要在默OnSho干wWind敞ow(BO幸OLbS添how,唇UINT勺nStat拥us)中添确加代码梯相关代码。孟这样便可将辨在个对话框拔分别显示于朴标签控件的有每个页面中俗,但要实现醒选择标签的济不同项显示迅不同页面还唤需在OnS控elcha喉ngeMa塌intab化(NMHD多R*乐pNMH睡DR,范LRESU寿LT*p盘Resul象t)和On赴Se稻lchan盾gingM的ainta谷b(NMH票DR*p恒NMHDR鄙,招LRESU职LT*p吩Resul赠t)饲两函数中添投加显示代码容。子void辩CPcsM汗grDlg吵::OnS匠elcha阴ngeMa艳intab枪(N压MHDR*叼pNMH绞DR,L旬RESUL恼T*pR刘esult钟)登{肾弃switc拥h(m_T辞ab.Ge竭tCurS比el()){共检case充0:m_T斯ask.S乎howWi患ndow(斥SW_SH它OW);辽//任务页装面被选中,填则显示任务串页面柱锹婶m_Tas笔k.Cen乒terWi足ndow(秒);碍顾骑break法;欧接case膊1:m_P疾roces愧s.Sho岂wWind翁ow(SW窜_SHOW慧);掌叫//任务页亮面被选中,周则显示进程脸页面震届省m_Pro爹cess.气Cente磨rWind草ow();博钢孔break除;山逗case衔2:m_C鸟hart.瞧ShowW浴indow四(SW_S播HOW);禽废//任务页扩面被选中,坦则显示系统歇信息页面塌沟扁m_Cha院rt.Ce辣nterW吸indow榴();纯邻竖break拢;}}实现菜单象关机、注销足、重起菜单袭命令是通过迎调用一个W眉indow腹sAPI拨函数Exi克tWind符owsEx航()完成的酿。但在Wi现ndows友98和W苦indow多s200誓0实现稍有肌不同。Ex完itWin董dowsE询x()函数撒定义格式:顶BOOL崖ExitW屯indow鱼sEx(风UINT炉uFlag茶s饿搜山闸//卸操作赚DWORD龙dwRe咬ason晶兆炒荒//筝原因);莫在Wind天ows9插8实现币“张注销/重启底/折关机拥”抓功能将直接闻调用Exi嚼tWind菜iwsEx绑函数饰:绑ExitW会indow狠sEx(E捷WX_LO潜GOFF,功0);服娇//注销得ExitW锻indow葛sEx(E滔WX_RE捡BOOT,饺0);榆夜//重启银ExitW丧indow曾sEx(E柜WX_SH拆UTDOW般N,悲0);/祸/关机塑在Wind豆ows2犬000实现饿“泻注销/重启苹/侧关机暂”业功能须取得免高级权限遗:牢Looku扁pPriv规ile撑geVal哈ue(NU痛LL,SE仿_SHUT温DOWN_屠NAME,骆&tkp.喂Privi痛leges市[0].L之uid);呆tkp.P袭rivil吓egeCo吹unt=误1娱;错tkp.P荣rivil末eges[关0].At迫tribu贯tes=泥SE_P企RIVIL旺EGE_E氏NABLE斜D;题Adjus摄tToke苏nPri狱vileg谁es(hT鬼oken,班FALSE玉,&tkp燥,0,僚(PTOK俯EN_PR墙IVILE错GES)N读ULL,0说);优ExitW棍indow袭sEx(F保Flag,浇0);膝新建菜单直旬接调用系统翼运行披对话框钥:兔RUNR悄unFil深eDlg;作RunFi俱leDlg火=(R金UN)Ge朗tProc酒Addre放ss(hS蚊hell3侦2,MA冬KEINT烛RESOU彼RCE(6亚1));汗开机自动运精行可在注册眠表的主键邻”HKEY暖_LOCA撕L_MAC跃HINE”陶下的运行子坟键饰”Soft启ware\应Micro炭soft\蜂Windo粱ws\Cu标rrent抹Versi圾on\Ru浓n”计下写入和删清除一个键值而的方法实现电。捕提升摄程序权限拳为了能够终矛止所有进程碗,需际要茫提升本进程脆的权限死:姐1、先调用矛GetCu串rrent访Proce泄ss函数取满得当前进程向的句柄;奥2、然后调血用Open信Proce声ssTok竭en打开当事前进程的访息问令牌;非3、接着调衣用Look帮upPri踢vileg膨eValu刘e函数取得违你想提升的旦权限的值;年4、最后调楼用Adju复stTok刻enPri钞vileg遥es函数给撤当前进程的曲访问令牌增宵加权限。承相关代码是厅在CPcs霞MgrAp庙p类的In边itIns愉tance绳()函数中中添加。亭任务列表页夏面设计堵该类实现当摧前系统运行垃任务(有可岛见窗口的程话序)的管理引,如惭查看当前任据务,教添加新任务崭,结束任务诸,切换任鼻务等吩。答显示任务信牵息娃任务信息包则括窗口中可志见程序的程推序名、路径眼、运行状态拌等信息,率将在任务列宅表页面中添棋加一个列表贵控件朴,用于将任历务信息显示胳出来固,旷如图作4励。耀图隶4膀酸贩任务列表巩要显示桌面童窗口中的任翅务信息,东首先要刺一个结构体商类型用于存羽放任务的相位关信息经:即typed例efst叮ruct{锦巷CStri扣ngst钩rTask黎Name;打棒彩//休窗口标题搜老DWORD异dwPr侧ocess反ID;岸趣//进程I帝D解传DWORD澡dwTh然readI旱D;备济续//线程I神D叛法CStri醉ngst烫rRunS正tate;震催六//运行状控态境皮DWORD薪dwWn短dHand线le;炉钢季//窗口句贷柄罪}TASK毅_IFNO菊,*PTA富SK_IN抹FO;遗获取窗口标滥题,使用A榜PI标准函嫌数愤GetWi抽ndowT热ext心()轻:去char喂temp[扔MAX_P缠ATH];戚GetWi登ndowT疼ext(h沿wnd,t沈emp,s药izeof膜(temp绞))师获取进程及间线程ID寇:好TID=G表etWin读dowTh境readP芒roces详sId(h脖wnd,&茂PID);桌确定运行状铅态促是利用对SendM松essag缸eTime煎out该向窗口发送旬消息而取得偷:贯if(Se搂ndMes移sageT决imeou式t(hwn方d,WM_细SYSCO区MMAND相,NULL灯,NULL泡,SMTO粘_ABOR脆TIFHU析NG,10耽00,NU起LL))页蹈strRu雄nStat贴e="司正在运行赢";else互尖strRu意nStat电e="碰没有响应原";穷然后樱添加任务信熟息到数组:充立TASK_连IFNO毕ti;蜜夕ti.st瞧rTask虚Name链=tem睁p;覆晌ti.dw吊Proce愁ssID准=PID药;万转ti.dw为Threa执dID=眼TID;祝点ti.dw瞧WndHa帮ndle氧=(DW储ORD)h么wnd;境轨ti.st占rRunS牲tate年=str返RunSt属ate;映圾pTask沃This-胸>m_Ta世skInf洗oArra且y.Add蜂(ti);咽最后把任务您信息的每一距行修在任务列表浇中显示出来嫂:沃for(i唤nti=摧0;i<n碧ewCou毒nt;i+慎+){僻雁渔m_tas贞k.Ins迁ertIt板em(i,做ti.st混rTask适Name,详i);朽//任务名允承火str.F朵ormat境("%d"得,ti.d杨wProc淘essID结);阔蜜打m_tas情k.Set库ItemT漫ext(i业,1,st劈r);津//进程I锤D齿确根str.F柏ormat棍("%d"肆,ti.d哄wThre莫adID)助;隐贴箱m_tas漂k.Set匪ItemT队ext(i猜,2,st澡r);压//线程I穷D速持锄m_tas怪k.Set巷ItemT唇ext(i浅,3,ti突.strR骨unSta摇te);役//运行状燥态}结束任务脉结束任务嘉操作将调锐用滤SendM貌essag压eTime雀out函数采向要关闭的拌窗口发送关身闭消息,如革果没有响应廉则用Ter叨minat乳eProc袄ess榜函数强行终妇止该窗口进仗程。税if(!S棋endMe币ssage眯Timeo誓ut(hw澡nd,WM杂_SYSC千OMMAN寻D,SC_挤CLOSE鲜,NULL乎,SMTO朋_BLOC绞K|SMT槽O_ABO忍RTIFH你UNG,1规000,N三ULL)){拦托HANDL锄EhPr福ocess恰=Op植enPro须cess(称PROC具ESS_A先LL_AC锯CESS,诸FALS重E,ti水.dwPr扔ocess肆ID);关//打开进饶程先秃Termi利nateP按roces伟s(hPr快ocess休,1);旺//强制终串止该窗口进植程壤幼Close简Handl限e(hPr裂ocess闹);}切换任务惠我们知道,朋Windo脱ws9x僚/2000岭中SetF咱oregr独oundW否indow朝函数当用户俯正在操作其梅他窗口时是痰不能强制某国个窗口为前柏景窗口的,测而是激活窗作口并调用F爬lashW雄indow争Ex函数来希通知用户。战但是很多实波际情况要求赛将激活窗口表的同时将创率建这个窗口李的线程置为理前景状态。汽碰到这种情税况我们可以劫使用USE吵R32.D吸LL中的几拉个未公开A剂PI函数。务void暖Switc悟hToTh莲isWin师dow(谣逃HWND割hWnd眉,赚陪箱//被激活慰的窗口句柄桃航BOOL公bRest露ore却//如果被舅极小化,则厦恢复窗口);娃typed逗efvo程id(输WINAP收I*PR欺OCSWI损TCHTO垫THISW颂INDOW茫)(HWN组D,仆BOOL)津;棵PROCS盐WITCH忧TOTHI应SWIND榴OWSw亭itchT探oThis幸Windo般w;凯HMODU秀LEhU徐ser32带=Ge精tModu皮leHan摇dle("雨user3细2");府Switc涂hToTh围isWin纪dow=吸(饥PROCS困WITCH幅TOTHI立SWIND罪OW)略GetPr奸ocAdd咸ress(孝hUser醉32,吧"Swit粗chToT为hisWi胃ndow"污);刚接下来只要执用任何现存脉窗口的句柄蚀调用这个函柴数即可,参付数缺bRest密ore门指定如果窗析口极小化,超是否恢复其由原状态。劫Switc质hToTh惕isWin骨dow(h馒Wnd,叙TRUE)赛;纸进程列表页恰面设计观该页面替主要实现显智示当前系统诵正在运行的济所有进程并中对其进程管删理,如结束吐进程,显示馅进程模块信铃息,显示进孔程线程信息牲,保存进程秋信息在雁网页堪文件中辽等序功能。同显说示任务列表承一样,我们糟将添加两个敏列表控件,任分别显示所唉有进程信息蚊和当前选择质的进程的所劲以模块信息念,酱如图般5恳。泽图底5家更进程列表页窜面挡显示进程信尘息蚂进程信息包廊括进程图标矮,进程名、箱进程ID售、奥CPU使用把率、内存使饰用率、优先脚级、线程数百、悲父进程ID尚和进程路径覆等钟,杜如图拼6脂。倡图咽6漏常进程信息拘通过调用尖ToolH驱elp迈API函数肾可枚举所有质运行的进程笋并取得进程捏路径但,进程ID乏,父进程I伐D,抵线程数和优懂先级。零要使用该类刚接口函数需琴要包含头文谎件tlhe跳lp32.蝴h。主要用割到Tool敞Help羡API中的煮以下几个函到数:郊1、骗hProc昆essSn盯ap=篇Creat往eTool暮help3店2Snap网shot(梦TH32C单S_SNA娘PPROC应ESS,0释);宴该函数用于盼创建一个系营统进程快照决,俘取得踪系统中的所坚有进程反的信息糟。毒2激、砌Proce跟ss32F摊irst(使hProc罪essSn俘ap,&p鸡e32)府;相该函数取得档快照中第一钉个进程信息酿,pe32做参数是量一个PRO帽CESSE剑NTRY3脆2结构类型化,该函数将蚂取得的进程朽信息填充到络pe32中叹。PROC叠ESSEN星TRY32游的定义如下喉:挂typed料efst划ruct糊tagPR溪OCESS态ENTRY续32{撇钳DWORD删dwSi木ze;//扣结构大小今否DWORD矿cntU测sage;爬扫DWORD耀th32绢Proce畅ssID;腹//进程I煎D倚砌ULONG嗽_PTR慈th32D宪efaul镇tHeap棍ID;悠萌DWORD莲th32射Modul车eID;疗吸DWORD请cntT恢hread脱s;//线梳程计数站乓DWORD握th32贱Paren骗tProc纲essID芳;//父进喊程ID挠阻LONG写pcPri霞Class黎Base;幸//优先级千矛DWORD熟dwFl准ags;茂戴TCHAR吴szEx油eFile涌[MAX_奖PATH]惭;//进程桌路径哑}PROC瘦ESSEN世TRY32数,防然后从该结净构中解析出戒所需的进程芹名、进程I易D、优先级拣、线程数、宫父进程ID徐和进程路径裤等信息。洞3裹、舌BOOL感WINAP扒IPro循cess3迈2Next绵(HAND放LEhS扑napsh剃ot,LP造PROCE猎SSENT电RY32员lppe)迎;该函数取奖得快照中下爪一个进程信涨息,参数同死Proce冷ss32F盖irst函趋数。煌进程隐基本哭信息的获取千过程如图7务。活图问7煎进程粗基本时信息辟的获取乖进程CPU倾使用率是使弟用Wind为owsN权T以上系统产提供的性能弄监视器取得游。Wind押ows性能去监视器所用工的编程接口灭是以性能数巴据助手库(高PDH.d毯ll)及一任系列C/就C++头文啄件(即pd税h.h、p突dhmsg烈.h和wi户nperf背.h,它们阴是操作系统惕附带的)的疤形式公开给豆用户的。部个分主要代码羡如下:耀PDH_S姓TATUS湿pdhS事tatus巾;雷PDH_F节MT_CO倡UNTER迷VALUE周fmtV辰alue;肚pdhSt禾atus紧=Pdh期Colle迟ctQue沟ryDat燥a(m_h构Query外);//郊收集数据订pdhSt幅atus翻=Pdh址GetFo边rmatt廉edCou扇nterV羊alue(保坑hCoun剥ter,P百DH_FM与T_LON持G,&dw议ctrTy询pe,&f蝇mtVal尊ue);库//得到格膨式化数据妈,样fmtVa据lue编即是我们需摘要得到的C梯PU使用率兔数据。里Windo棋ws9X玩系统上不能演通过以上方能法获得CP脾U使用率,外因此设计的炮该进程管理控软件不能获床取9X系统童上进程的C触PU使用率赤。渠要得到进程份的内存使用调率要用到P娱sapi.缩dll的函夫数纲GetPr雁ocess惨Memor泥yInfo诱,首先在暴Proce侄ss.h严中定义WI尝NAPI函根数类型:拐GETPR芽OCESS衬MEMOR骆YINFO仿GetP校roces复sMemo翻ryInf括o;绩,再取得内家存使用数:氏PROCE艘SS_ME气MORY_叛COUNT绵ERSp配mc;姐GetPr淡ocess剩Memor执yInfo刘(hPro脑cess,扶&pmc,座sizeo渣f(pmc球));督dwMem刘oryUs弓e=p旦mc.Wo精rking蒸SetSi丸ze;茅//锁内存使用大桂小心pmc肠返回进程的伴内存使用信辫息,艇它是定义的芹一个够PROCE瞎SS_ME袍MORY_纯COUNT干ERS惜结构,雁定义如下:拐typed真efst尤ruct洗_PROC姜ESS_M湾EMORY爆_COUN粮TERS{休渗DWORD问cb;堆浩DWORD柿Page址Fault只Count逮;//结构莫尺寸客择SIZE_港TPea膀kWork伸ingSe令tSize蓬;//缺页狭数惭纹SIZE_自TWor蛋kingS赢etSiz粮e;//当革前工作集尺能寸贼屋SIZE_柴TQuo霞taPea袄kPage沸dPool支Usage子;//最高挂页池使用数妙杀SIZE_超TQuo饺taPag睛edPoo撇lUsag象e;//当裤前页池使用于数在贤SIZE_糠TQuo孙taPea土kNonP打agedP高oolUs篇age;/沸/最高无页宿池使用数时驻SIZE_收TQuo瓶taNon小Paged妥PoolU翻sage;燥//当前设无页池使用承数晓赢SIZE_膜TPag涂efile冠Usage伴;//当前差分配页文件死空间惑溪SIZE_波TPea荒kPage艇fileU芝sage;端//最高分黑配页文件空皱间编}PROC久ESS_M治EMORY扬_COUN砌TERS,皱*PPRO怒CESS_址MEMOR元Y_COU横NTERS幅;塞显示模块及树线程信息灰模块信息有澡模块名、模衫块大小、基吊地址。直接芦通过Too杀lHelp舞API函枝数便可实现规。主要用到劫的函数有:划1酿、旱hModu话leSna遗p腰=真Creat犬eTool泻hel足p32Sn裤apsho投t(TH3知2CS_S真NAPMO津DULE,供dwPID诉)收该函数用于垦创建指定进畅程的模块快柴照门。锻2、古Modul受e32Fi授rst(h瓜Modul坐eSnap盼,&me3片2童)返;央该函数获取防指定进程的倚第一个模块个信息筒,将取得的御信息填充到物me32窑中。闭me32灶是一个粮MODUL敞EENTR倾Y32挨结构类型,够对它的定义划如下:盟Typed抓efst粒ruct霸tagMO转DULEE述NTRY3校2慈{盾恭DWORD燕颂dwSiz栋e;肆秧DWORD育th32财Modul畏eID;采泳DWORD闸th32织Proce夫ssID;挤妇DWORD唇Glbl洞cntUs锁age;诵迅DWORD反Proc凶cntUs睛age;乖法BYTE裙*戚modB籍aseAd碌dr;起任DWORD夸modB桌aseSi目ze;均艳HMODU抱LEhM探odule召;浊观char钟szMo养dule[脊MAX_M咏ODULE湖_NAME蚂32+碗1];桐泳char工揪szExe觉Path[沿MAX_P答ATH];虹}高MODUL牙EENTR欺Y32;高3、返Modul强e32Ne菊xt(筐hModu员leSna佛p,渡&me32谱)哈该函数获取形指定进程的贺下一个模块姨信息。段线程信息包独括码线程ID和嘉线程优先级湿,也是通过坏ToolH顽elpA大PI函数芹取得。鱼1否、伸hThre喂adSna视p=C非reate狂Toolh纷elp3诸2Snap叹shot(基TH32C浪S_SNA枪PTHRE蹈AD,0惕);百该函数然创建指定进恼程的线程快稻照唇,取得所有纷线程信息。绞2、垦Threa恐d32Fi宅rst(h味Threa猾dSnap促,&te3西2勺)炒;施//借取得指定进围程的第一个巴线程信息将毅取得的信息牢填充到t动e32嫩中。t侍e32裙也是一个数籍据结构,它窃的定义和存谨放进程信息师或存放模块懂信息的数据割结构类似。角typed只efst记ruct怪tagTH禁READE补NTRY3萍2{嫌匠DWORD冶dwSi桨ze;焦//结构体倦尺寸,必须尝在调用前指穴定动底DWORD洋cntU享sage;笔悲已DWORD就th32浮Threa打dID;/圆/线程ID附糖DWORD国th32泰Owner葱Proce哪ssID;珠//创建该着线程的进程朽ID械进LONG久tpBas逆ePri;勉//基本优诵先级提晨LONG爆tpDel搅taPri醉;违础DWORD壤dwFl脸ags;日}THR离EADEN爱TRY32踩,驾*PTHR衣EADEN浩TRY32稻;典3、粪Threa局d32Ne床xt(hT财hread窗Snap,蹈&te32举)测;//取得瞎指定进程的拢下一个模块盲信息。送获取进程模碎块的过程如它图8。宏图消8孟模块信息的宇获取结束进程厚进程只是提米供了一段地肤址空间和内脾核对象,其财运行是通过刚在其地址空墙间内的主线燃程来体现的柜。当主线程陈的进入点函大数返回时,鞭进程也就随亚之结束。这瓜种进程的终汇止方式是进杏程的正常退后出,进程中陕的所有线程看资源都能够巷得到正确的先清除。除了逼这种进程的治正常推出方伤式外,有时岗还需要在程菊序中通过代机码来强制结昨束本进程或叠其他进程的绢运行。Ex专itPro箩cess(念)函数即可耳在进程中的阁某个线程中昆使用,并将吃立即终止本压进程的运行末。Exit邮Proce圾ss()函悔数原型为:食VOI饲DExi婶tProc击ess(U差INTu稍ExitC垒ode);驾其参数uE畏xitCo符de为进程瓦设置了退出遮代码。该函省数具有强制勤性,在执行透完毕后进程变即已经被结辰束,因此位畏于其后的任道何代码将不示能被执行。粘虽然Exi计tProc证ess()昆函数可以在哑结束进程的棋同时通知与门其相关联的吸动态链接库夹,但是由于恶它的这种执挂行的强制性抵,使得Ex芬itPro期cess(始)函数在使项用上将存在衡有安全隐患泰。例如,如箩果在程序调刺用Exit偶Proce蜻ss()函饰数之前曾用蠢new操作艰符申请过一吼段内存,那慕么将会由于膛ExitP病roces弹s()函数陵的强制性而须无法通过d很elete步操作符将其皂释放,从而精造成内存泄渣漏。有鉴于族ExitP胳roces带s()函数网的强制性和亩不安全性,些在使用时一零定要引起注笨意。石ExitP尾roces滩s()只能吨强制执行本邪进程的退出夕,如果要在蝴一个进程中迁强制结束其构他的进程就殿要用Ter扬minat揉eProc曲ess()注来实现。与烛ExitP凤roces吧s()不同垦,Term滔inate毙Proce沿ss()函估数执行后,观被终止的进翅程是不会得累到任何关于它程序退出的假通知的。也忧就是说,被评终止的进程附是无法在结盐束运行前进腔行退出前的株收尾工作的坡。所以,通巷常只有在其狮他任何方法润都无法迫使问进程退出时松才会考虑使眯用Term平inate葛Proce在ss()去飘强制结束进拜程的。下面倘给出Ter白minat扑eProc充ess()么的函数原型钩:茅BOOL功Termi积nateP苹roces询s(HAN剥DLEh米Proce滨ss,UI控NTuE砖xitCo摩de);患参数hPr苹ocess划和uExi毅tCode读分别为进程爽句柄和退出智代码。充第二个参数仆uExit蒙Code唤,当它为0馒时,在调用硬Termi黑nateP蚁roces刮s()歇杀死进程后惭,滤Windo璃ws藏又将自动唤奋醒该进程;腾当它为1时做,杀死进程羊后,精Windo捕ws色不会再唤醒族该进程。挖本程序叉中的结束进浆程,是指强绕制结束其他挨应用程序运攻行的进程,肠应输采用钓Termi架nateP比roces项s即()强制结青束。肯要终止进程弄先要用Op蚂enPro惠cess函厘数将进程打伟开,然后用报Termi赖nateP件roces示s函数结束蛋进程。井HANDL篮E半岔hProc榆ess=O争penPr哄ocess巴(PROC戚ESS_T黄ERMIN隙ATE,F拒ALSE,笑俊m_dwP肆roces贤sID.G待etAt(胖m_iCu显rSel)骡);逮Termi魂nateP枣roces咸s(hPr火ocess边,1);网砖股//终吃止进程衬终止进程的此流程如图驾9收。生图搁9纯广终止进程删除文件咸当发现进程类列表中有不罩正常的程序说,如病毒或福木马程序,饶我们不仅需丸要把它们结湿束了,还需丸要将对应的与文件删除,株使其不能再浓次运行。贫删除文件同鲁样需要用O层penPr炊ocess压函数将进程略打开,把用圈FindF绳irstF府ile录找到文件,洽然后用Te斗rmina板tePro友cess函茧数结束进程色,再删除该痕进程对应的详文件。莲HANDL外EhPr场ocess典=Open检Proce垮ss(PR堤OCESS练_TERM役INATE馅,FALS妇E,族词m_dwP卸roces洪sID.G邪etAt(莫m_iCu未rSel)狸);组HANDL弯E项h=::F雨indFi假rstFi宗le(fi俊lenam豆e,&fD蜘ata);忙//查找文丝件躺Termi帖nateP亩roces嘱s(hPr糕ocess络,1);端粮浮//食终止进程宗::Del懒eteFi鄙le(fD财ata.c播FileN版ame)大;项何残//删唤除文件尘保存进程信吹息到文件秃用文件类创犯建一个ht乏ml文件,弓将当前进程维列表中的各复项信息按照言网页格式写删入文件中泊。梦系统性能页裙面设计丘该页面揉主要显示C币PU促使用率和内喇存使用率的读图形,假各种内存的饺使用情况,握如页文件,端虚拟内存,技物理内存等埋,以及系统休当前信息,飞如系统权名、计算机盗名、当前用锻户名等夏。浊绘制CPU蚕使用率图秀绘制内存使弓用率图顷取得内存使感用率可通过青一个全局内住存函数Gl孙obalM贴emory弟Statu窄s实现,该钢函数原型为狠:座MEMOR旦YSTAT嫂USMe艳mStat射;酱MemSt物at.dw责Lengt级h=s泥izeof移(MEMO束RYSTA集TUS);角Globa颠lMemo伴rySta戚tus(&敌MemSt眉at);轻m_ulN吵ewUsg治es林=Mem球Stat.纵dwMem勒oryLo亿ad;增绘制图形也饥是通过位图冬绘制函数进全行绘制,方缝法和绘制C倡PU使用率聪图一样。货内存使用率剧图如图11毫。踏图法11诞内存使用率魂其他性能填显示服其他性能主袍要包括物理急内存、虚拟筹内存和页文纺件的使用情悟况。它们都搞是通过币Globa快lMemo膏rySta厨tus陷函数得到的尼。顾MEMOR光YSTAT察USMe稍mStat托;领MemSt栏at.dw梅Lengt乱h=s中izeof仅(MEMO侵RYSTA肯TUS);表Globa顽lMemo谣rySta惧tus(&狡MemSt荒at);昌MemSt浴at.dw含Total饲Phys雷宇惰//物理内乔存总大小逼MemSt胖at.dw勾Avail恐Phys悔挺稠//物理内孔存可用数生MemSt锋at.dw肯Total贼PageF卫ile寄//贯页文件总大抄小船MemSt禾at.dw午Avail华PageF悟ile碗掀围//页文件怒可用数廊MemSt废at.dw扛Total子Virtu巩al街/雪/虚拟内存领总大小折MemSt油at.dw丝Avail致Virtu础al优/挺/虚拟内存攀可用数社系统信息袜显示铺系统信息包唯括当前操作屋系统名、用白户名、计算青机名等。得1、碑获取操作系蹦统名需要用递到微软标准言函数亚GetVe墨rsion段Ex()烧。在嫁windo敌ws.h冶中定义了O果SVERS青IONIN阴FO结构,案OSVER著SIONI些NFO结构瑞包含了操作旗系统的版本具信息,包括隔操作系统的煎主版本号、票副版本号、惑创建号、以桃及操作系统因平台ID号纽和关于操作市系统的其他车信息。匙typed夫efst殖ruct意_OSVE己RSION旨INFO躁{希宵DWORD丽dwOS纹Versi祝onInf初oSize撤;//指定等该数据结构薪的字节大小舍慈DWORD处dwMa坐jorVe竟rsion三;册工//操作系首统的主版本户号维易DWORD地dwMi匹norVe悬rsion夺;纯王//操作系尚统的副版本峰号现茅DWORD宫dwBu矿ildNu复mber;凉滤枯//操作系湾统的创建号博燥DWORD老dwPl投atfor蓬mId;君但松

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论