网站导航网学 原创论文 网站设计 最新系统 最新研究 原创论文 获取论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计下载 > 其他类别 > 正文

Windows进程管理器的设计

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/05/06

网学网其他类别编辑为广大网友搜集整理了:Windows进程管理器的设计绩等信息,祝愿广大网友取得需要的信息,参考学习。

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

 

3.1    进程列表页面设计
该页面主要实现显示当前系统正在运行的所有进程并对其进程管理,如结束进程,显示进程模块信息,显示进程线程信息,保存进程信息在网页文件中等功能。同显示任务列表一样,我们将添加两个列表控件,分别显示所有进程信息和当前选择的进程的所以模块信息,如图5。


 

 
 
 
 
 
 
 
 
 
 
 
 
 
 


 

5 进程列表页面
3.3.1    显示进程信息
进程信息包括进程图标,进程名、进程ID、CPU使用率、内存使用率、优先级、线程数、父进程ID和进程路径等,如图6。
 
 
 
 
 
 
 


 

6 进程信息
通过调用ToolHelp API函数可枚举所有运行的进程并取得进程路径,进程ID,父进程ID,线程数和优先级。要使用该类接口函数需要包含头文件tlhelp32.h。主要用到ToolHelp API中的以下几个函数:
1、hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);该函数用于创建一个系统进程快照,取得系统中的所有进程的信息。
2、Process32First(hProcessSnap,&pe32);该函数取得快照中第一个进程信息,pe32参数是一个PROCESSENTRY32结构类型,该函数将取得的进程信息填充到pe32中。PROCESSENTRY32的定义如下:
typedef struct tagPROCESSENTRY32{
   DWORD dwSize;//结构大小
   DWORD cntUsage;
   DWORD th32ProcessID;//进程ID
   ULONG_PTR th32DefaultHeapID;
   DWORD th32ModuleID;
   DWORD cntThreads;//线程计数
   DWORD th32ParentProcessID;//父进程ID
   LONG pcPriClassBase;//优先级
   DWORD dwFlags;
   TCHAR szExeFile[MAX_PATH];//进程路径
}PROCESSENTRY32,然后从该结构中解析出所需的进程名、进程ID、优先级、线程数、父进程ID和进程路径等信息。
3、BOOL WINAPI Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);该函数取得快照中下一个进程信息,参数同Process32First函数。
进程基本信息的获取过程如图7。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


 

7 进程基本信息的获取
进程CPU使用率是使用Windows NT以上系统提供的性能监视器取得。Windows性能监视器所用的编程接口是以性能数据助手库(PDH.dll)及一系列 C/C++头文件(即pdh.h、pdhmsg.h和winperf.h,它们是操作系统附带的)的形式公开给用户的。部分主要代码如下:
PDH_STATUS pdhStatus;
PDH_FMT_COUNTERVALUE fmtValue;
pdhStatus = PdhCollectQueryData(m_hQuery);//收集数据
pdhStatus = PdhGetFormattedCounterValue(
   hCounter,PDH_FMT_LONG,&dwctrType,&fmtValue);//得到格式化数据,fmtValue即是我们需要得到的CPU使用率数据。
Windows 9X系统上不能通过以上方法获得CPU使用率,因此设计的该进程管理软件不能获取9X系统上进程的CPU使用率。
要得到进程的内存使用率要用到Psapi.dll的函数GetProcessMemoryInfo,首先在Process.h 中定义WINAPI函数类型:
GETPROCESSMEMORYINFO GetProcessMemoryInfo;,再取得内存使用数:
PROCESS_MEMORY_COUNTERS pmc;
GetProcessMemoryInfo(hProcess,&pmc,sizeof(pmc));
dwMemoryUse = pmc.WorkingSetSize;//内存使用大小
pmc返回进程的内存使用信息,它是定义的一个PROCESS_MEMORY_COUNTERS结构,定义如下:
typedef struct _PROCESS_MEMORY_COUNTERS{
   DWORD cb;
   DWORD PageFaultCount;//结构尺寸
   SIZE_T PeakWorkingSetSize;//缺页数
   SIZE_T WorkingSetSize;//当前工作集尺寸
   SIZE_T QuotaPeakPagedPoolUsage;//最高页池使用数
   SIZE_T QuotaPagedPoolUsage;//当前页池使用数
   SIZE_T QuotaPeakNonPagedPoolUsage;//最高无页池使用数
   SIZE_T QuotaNonPagedPoolUsage; //当前无页池使用数
   SIZE_T PagefileUsage;//当前分配页文件空间
   SIZE_T PeakPagefileUsage;//最高分配页文件空间
}PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS;
3.3.2    显示模块及线程信息
模块信息有模块名、模块大小、基地址。直接通过ToolHelp API函数便可实现。主要用到的函数有:
1、hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,dwPID )该函数用于创建指定进程的模块快照。
2、Module32First(hModuleSnap,&me32);该函数获取指定进程的第一个模块信息,将取得的信息填充到me32中。me32是一个MODULEENTRY32结构类型,对它的定义如下:
Typedef struct tagMODULEENTRY32{
   DWORD dwSize;
   DWORD th32ModuleID;
   DWORD th32ProcessID;
   DWORD GlblcntUsage;
   DWORD ProccntUsage;
   BYTE * modBaseAddr;
   DWORD modBaseSize;
   HMODULE hModule;
   char szModule[MAX_MODULE_NAME32 + 1];
   char szExePath[MAX_PATH];
}MODULEENTRY32;
3、Module32Next(hModuleSnap,&me32)该函数获取指定进程的下一个模块信息。
线程信息包括线程ID和线程优先级,也是通过ToolHelp API函数取得。
1、hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);该函数创建指定进程的线程快照,取得所有线程信息。
2、Thread32First(hThreadSnap,&te32);//取得指定进程的第一个线程信息将取得的信息填充到te32中。te32也是一个数据结构,它的定义和存放进程信息或存放模块信息的数据结构类似。
typedef struct tagTHREADENTRY32{
   DWORD dwSize;//结构体尺寸,必须在调用前指定
   DWORD cntUsage;
   DWORD th32ThreadID;//线程ID
   DWORD th32OwnerProcessID;//创建该线程的进程ID
   LONG tpBasePri;//基本优先级
   LONG tpDeltaPri;
   DWORD dwFlags;
} THREADENTRY32,*PTHREADENTRY32;
3、Thread32Next(hThreadSnap,&te32);//取得指定进程的下一个模块信息。

 

 

本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

原创论文

设为首页 | 加入收藏 | 论文首页 |原创论文 |
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师