XX 大学计算机学院操作系统课程设计报告
理工大学课程设计报告
课程设计题目: Windows 任务管理器
学
院: 信息工程学院
专业班级: 计算机
年
姓
学
级:
级
名:
号:
完成时间: 2017 年
1
月 5 日
成
绩:
指导教师:
XX 大学计算机学院操作系统课程设计报告
摘
要
操作系统是一个介于软件和硬件之间的特殊硬件,一方面分配硬件资源另一方面支持软
件在它上面的实现,如何实时地监控和掌握系统软硬件工作的状态、资源分配和使用的情况,
对计算机用户而言十分重要,于是就有了任务管理器这样的实时监控窗口;同理,我们也需
要掌握计算机硬件设备的工作状态,掌握其如何存储文件、分配硬盘资源等,这也是我们做
资源管理器的初衷。
我们的电脑需要我们去了解它的运行状况,掌握和管理它的进程,并对其异常情况给予
操作和控制,任务管理器就像是我们了解和控制自己电脑运作的一个窗口,通过这个窗口我
们可以了解到电脑所有进程运行状况,并对运行的进程加于管理和控制,正如在本实验中,
启动进程管理器后,可以通过”获取进程”功能来获得本计算机启动的进程,以及与该进程
相关的信息,其中包括的信息有:进程映像名称,进程开启的线程数,进程的 PID 以及进程
的优先数,我们可以通过这些信息来了解计算机中每个进程的使用状况。同时我们可以在进
程管理器上选中一个要终止的的进程,点击“终止进程”功能按钮,该进程被终止执行并退
出进程列表,其中还包括了自动刷新的功能,此按钮实现的功能正如我们电脑任务管理器的
“进程”功能,当电脑执行程序不能通过关闭窗口进行正常的关闭时,可以借助此办法来关
闭进程。我们还可以通过这个进程管理器来启动新的进程,当我们要在进程管理器里启动新
的进程时,只要点击“启动新进程”按键,则会弹出“打开进程”对话框,我们可以通过对
话框里的“浏览”窗口选择要打开的新进程,这是任务管理器里没有实现的功能,通过这个
功能我们在管理计算机时变得更加灵活方便,也使进程管理的功能更加完善。在退出此进程
管理器时候,只要选择“退出”功能按钮则可关闭进程管理器,快速退出管理器的界面。本
管理器设计比较简洁,操作灵活,使用简单,可以为我们管理和控制计算机的进程提供了一
个简便的方法,是我们控制本计算机进程和了解计算机进程情况的良好助手。
1
关键词:任务管理器 操作系统
XX 大学计算机学院操作系统课程设计报告
第一章 课程设计要求
题目名称:Windows 系统任务管理器
题目类型:设计型
课程设计目的:熟悉操作系统资源管理原理,掌握编程接口,能够使用高级语言调用编程
接口,设计并实现 Windows 操作系统资源管理器和任务管理器的全部功能。
已知参数和设计要求:
(1) 掌握操作系统任务与进程概念,熟悉任务与进程管理的方法,通过高级语言编程接口
设计并实现 Windows 操作系统任务管理器的全部功能(包括:菜单、右键菜单、应用程
序管理、进程管理、性能显示、联网状态和用户信息)。
实验内容:
(1) 了解 Windows 操作系统的发展历史;
(2) 了解 Windows XP 的体系结构;
(3) 掌握 Windows 系统 API 的调用方法;
(4) 设计并实现 Windows 操作系统任务管理器的全部功能(包括:菜单、右键菜单、应用程
序管理、进程管理、性能显示、联网状态和用户信息)。
第二章 设计概要
2.1 功能设计
本项目是为了实现模拟 Windows 系统任务管理器和。项目的分析及功能设计要求如下:
2
(1) 编程模拟实现 Windows 系统任务管理器应用程序;
XX 大学计算机学院操作系统课程设计报告
(2) 在程序中应用多线程来实现多个客户端同时对一个服务器端进行请求操作。
2.2 程序系统功能模块
2.2.1 Windows 任务管理器功能模块
实时状态监控
Windows 任务管理器
进程数
进程、应用程序状态
CPU 状态
内存使用状态
当前用户状态
文件
选项
新建任务、退出管理器
总在最前
功能设计
查看
立即刷新、小图标、详细列
关机
帮助
关机、注销
关于
图 2.1
进程
新建、切换进程、关闭进程
3
XX 大学计算机学院操作系统课程设计报告
2.3 功能分析
2.3.1 Windows 任务管理器功能流程图
2.3.3 Windows 任务管理器界面截图
2.3.5 程序主要功能说明
一、Windows 任务管理器主要功能代码实现:
#include "stdafx.h"
#include
#include
#include "resource.h"
#include "MainDlg.h"
#include
#include
#include "RiskDlg.h"
#include "MemoryDlg.h"
#include "WindowsDlg.h"
#include "ListNode.h"
4
XX 大学计算机学院操作系统课程设计报告
#include "ModuleDlg.h"
#include
#include
#include "OpenDlg.h"
#include "SkinH.h"
#pragma comment(lib,"SkinH.lib")
HWND hPage[4];
BOOL IsHide = FALSE;
BOOL IsTopShow = TRUE;
extern HWND hwndWindow;
extern TCHAR szItem[20];
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
int
RECT
i;
rc ;
WCHAR
TabLabel[3][5]={L"Tab1",L"Tab2",L"Tab3"};
GetClientRect(GetDlgItem(hWnd,IDC_TAB1), &rc); //获取 TabControl 控件的坐标信息
rc.top+=25;
rc.left+=4;
rc.right-=1;
rc.bottom-=2;
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
case WM_NOTIFY:
//Tab Control 触发消息类型为 WM_NOTIFY
if (((LPNMHDR)lParam)->code== TCN_SELCHANGE )//Tab Control 触发的消息具体
类型为 TCN_SELCHANGE /TCN_SELCHANGING
{
i=SendDlgItemMessage(hWnd,IDC_TAB1,TCM_GETCURSEL,0,0);
// 通 过
TCM_GETCURSEL 消息获取当前被选的 Tab 页
MoveWindow(hPage[i],rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top,TRUE);//将 Pagei
页加载到目标位置
switch (i)
{
case 0://Tab1
{
ShowWindow(hPage[0],TRUE); //显示 Page1 页
ShowWindow(hPage[1],FALSE);//隐藏 Page2 页
5
}
break;
case 1://Tab2
}
break;
case 2://Tab3
{
{
}
break;
case 3:
{
ShowWindow(hPage[0],FALSE);
ShowWindow(hPage[1],TRUE);
ShowWindow(hPage[2],FALSE);
ShowWindow(hPage[3],FALSE);
SetMenuStatusNoNoActive(hWnd);
ShowWindow(hPage[0],FALSE);
ShowWindow(hPage[1],FALSE);
ShowWindow(hPage[2],TRUE);
ShowWindow(hPage[3],FALSE);
SetMenuStatusNoNoActive(hWnd);
ShowWindow(hPage[0],FALSE);
ShowWindow(hPage[1],FALSE);
ShowWindow(hPage[2],FALSE);
ShowWindow(hPage[3],TRUE);
SetMenuStatusNoNoActive(hWnd);
XX 大学计算机学院操作系统课程设计报告
ShowWindow(hPage[2],FALSE);//隐藏 Page3 页
ShowWindow(hPage[3],FALSE);//隐藏 Page4 页
SetMenuStatusActive(hWnd);
}
break;
break;
default:
}
}
break;
{
case WM_SIZE:
if (SIZE_MINIMIZED == wParam)
{
6
}
else
{
}
}
}
break;
default:
break;
}
return FALSE;
}
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
InitDlg(hwnd);
InitTitle(hwnd);
SetTimer(hwnd,1,1000,TimerProcTime);
return TRUE;
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case ID_MENUTASKMGRSUBJECT:
{
//任务管理器帮助主题
if (0 != (access("C:\\WINDOWS\\Help\\taskmgr.chm",0)))
{
MessageBox(hwnd,TEXT("微软的任务管理器帮助主题文件不存在"),TEXT("
提示"),MB_OK|MB_ICONERROR);
XX 大学计算机学院操作系统课程设计报告
if (TRUE == IsHide)
{
ShowWindow(hWnd,SW_HIDE);//隐藏窗口
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
ShellExecute(hwnd,
"OPEN",
"C:\\WINDOWS\\Help\\taskmgr.chm",
"",
"",
return;
}
else
{
SW_SHOW);
}
}
break;
case ID_MENUCREATENEW:
//创建新任务
7