资源描述
XX大学课程设计汇报
课程设计题目: Windows系统资源管理器和任务管理器
学 院:
专业班级:
年 级: 级
姓 名:
学 号:
完成时间: 年 7 月 3 日
成 绩:
指导老师:
教务处
课程设计指导老师评定成绩表
项目
分值
优异
(100>x≥90)
良好
(90>x≥80)
中等
(80>x≥70)
及格
(70>x≥60)
不及格(x<60)
评分
参考标准
参考标准
参考标准
参考标准
参考标准
学习态度
15
学习态度认真,科学作风严谨,严格确保设计时间并按任务书中要求进度开展各项工作
学习态度比较认真,科学作风良好,能按期圆满完成任务书要求任务
学习态度尚好,遵守组织纪律,基础确保设计时间,按期完成各项工作
学习态度尚可,能遵守组织纪律,能按期完成任务
学习马虎,纪律涣散,工作作风不严谨,不能确保设计时间和进度
技术水平和实际能力
25
设计合理、理论分析和计算正确,试验数据正确,有很强实际动手能力、经济分析能力和计算机应用能力,文件查阅能力强、引用合理、调查调研很合理、可信
设计合理、理论分析和计算正确,试验数据比较正确,有较强实际动手能力、经济分析能力和计算机应用能力,文件引用、调查调研比较合理、可信
设计合理,理论分析和计算基础正确,试验数据比较正确,有一定实际动手能力,关键文件引用、调查调研比较可信
设计基础合理,理论分析和计算无大错,试验数据无大错
设计不合理,理论分析和计算有标准错误,试验数据不可靠,实际动手能力差,文件引用、调查调研有较大问题
创新
10
有重大改善或独特见解,有一定实用价值
有较大改善或新奇见解,实用性尚可
有一定改善或新见解
有一定见解
观念陈旧
论文(计算书、图纸)撰写质量
50
结构严谨,逻辑性强,层次清楚,语言正确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸很工整、清楚
结构合理,符合逻辑,文章层次分明,语言正确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清楚
结构合理,层次较为分明,文理通顺,基础达成规范化要求,书写比较工整;图纸比较工整、清楚
结构基础合理,逻辑基础清楚,文字尚通顺,勉强达成规范化要求;图纸比较工整
内容空泛,结构混乱,文字表示不清,错别字较多,达不到规范化要求;图纸不工整或不清楚
指导老师评定成绩:
指导老师署名: 年 月 日
重庆大学本科学生课程设计任务书
课程设计题目
Windows系统资源管理器和任务管理器
学院
计算机
专业
网络工程
年级
09
已知参数和设计要求:
(1) 熟悉操作系统资源管理原理,掌握编程接口,能够使用高级语言调用编程接口,设计并实现Windows操作系统资源管理器全部功效(包含:菜单、图标、右键菜单),实现软件资源和数据资源管理。
(2) 掌握操作系统任务和进程概念,熟悉任务和进程管理方法,经过高级语言编程接口设计并实现Windows操作系统任务管理器全部功效(包含:菜单、右键菜单、应用程序管理、进程管理、性能显示、联网状态和用户信息)。
学生应完成工作:
(1) 了解Windows操作系统发展历史
(2) 了解Windows XP体系结构
(3) 掌握Windows系统API调用方法
(4) 设计并实现Windows操作系统资源管理器全部功效(包含:菜单、图标、右键菜单),实现软件资源和数据资源管理。
(5) 设计并实现Windows操作系统任务管理器全部功效(包含:菜单、右键菜单、应用程序管理、进程管理、性能显示、联网状态和用户信息)。
现在资料搜集情况(含指定参考资料):
(1) 在互联网上搜集相关资料
(2) William Stallings,Operating Systems Internals and Design Principles,6th Edition,电子工业出版社,
课程设计工作计划:
(1) 第1—第3天:查询、搜集资料,学习相关知识;
(2) 第4天:熟悉掌握API函数使用;
(3) 第5—第9天:设计、实现程序;
(4) 第10天:编写课程设计汇报;
(5) 第11天:检验程序;
(6) 第12天:修改完善程序和课程设计汇报。
任务下达日期6月18日
完成日期7月7日
目录
摘要 1
第一章 课程设计要求 2
第二章 设计概要 3
2.1功效设计 3
2.2程序系统功效模块 3
2.2.1 Windows任务管理器功效模块 3
2.2.2 Windows资源管理器功效模块 4
2.3功效分析 4
2.3.1 Windows任务管理器功效步骤图 4
2.3.2 Windows资源管理器功效步骤图 5
2.3.3 Windows任务管理器界面截图 6
2.3.4 Windows资源管理器界面截图 8
2.3.5 程序关键功效说明 11
第三章调试分析和测试结果 34
3.1 Windows任务管理器 34
3.1.1基础界面 34
3.1.2 进程状态查看 35
3.1.3 CPU状态查看 36
3.1.4 进程管理功效 36
3.2 Windows资源管理器 39
3.2.1 基础界面 39
3.2.2 剪切功效实现 41
3.2.3 复制功效实现 42
3.2.4 删除功效实现 43
第四章 设计总结 44
第五章 参考文件 45
摘 要
操作系统是一个介于软件和硬件之间特殊硬件,首先分配硬件资源其次支持软件在它上面实现,怎样实时地监控和掌握系统软硬件工作状态、资源分配和使用情况,对计算机用户而言十分关键,于是就有了任务管理器这么实时监控窗口;同理,我们也需要掌握计算机硬件设备工作状态,掌握其怎样存放文件、分配硬盘资源等,这也是我们做资源管理器初衷。
我们电脑需要我们去了解它运行情况,掌握和管理它进程,并对其异常情况给操作和控制,任务管理器就像是我们了解和控制自己电脑运作一个窗口,经过这个窗口我们能够了解到电脑全部进程运行情况,并对运行进程加于管理和控制,正如在本试验中,开启进程管理器后,能够经过”获取进程”功效来取得本计算机开启进程,和和该进程相关信息,其中包含信息有:进程映像名称,进程开启线程数,进程PID和进程优先数,我们能够经过这些信息来了解计算机中每个进程使用情况。同时我们能够在进程管理器上选中一个要终止进程,点击“终止进程”功效按钮,该进程被终止实施并退出进程列表,其中还包含了自动刷新功效,此按钮实现功效正如我们电脑任务管理器“进程”功效,当电脑实施程序不能经过关闭窗口进行正常关闭时,能够借助此措施来关闭进程。我们还能够经过这个进程管理器来开启新进程,当我们要在进程管理器里开启新进程时,只关键点击“开启新进程”按键,则会弹出“打开进程”对话框,我们能够经过对话框里“浏览”窗口选择要打开新进程,这是任务管理器里没有实现功效,经过这个功效我们在管理计算机时变得愈加灵活方便,也使进程管理功效愈加完善。在退出此进程管理器时候,只要选择“退出”功效按钮则可关闭进程管理器,快速退出管理器界面。本管理器设计比较简练,操作灵活,使用简单,能够为我们管理和控制计算机进程提供了一个简便方法,是我们控制本计算机进程和了解计算机进程情况良好助手。
关键词:任务管理器 资源管理器 操作系统
第一章 课程设计要求
题目名称:Windows系统资源管理器和任务管理器
题目类型:设计型
课程设计目标:熟悉操作系统资源管理原理,掌握编程接口,能够使用高级语言调用编程接口,设计并实现Windows操作系统资源管理器和任务管理器全部功效。
已知参数和设计要求:
(3) 熟悉操作系统资源管理原理,掌握编程接口,能够使用高级语言调用编程接口,设计并实现Windows操作系统资源管理器全部功效(包含:菜单、图标、右键菜单),实现软件资源和数据资源管理;
(4) 掌握操作系统任务和进程概念,熟悉任务和进程管理方法,经过高级语言编程接口设计并实现Windows操作系统任务管理器全部功效(包含:菜单、右键菜单、应用程序管理、进程管理、性能显示、联网状态和用户信息)。
试验内容:
(6) 了解Windows操作系统发展历史;
(7) 了解Windows XP体系结构;
(8) 掌握Windows系统API调用方法;
(9) 设计并实现Windows操作系统资源管理器全部功效(包含:菜单、图标、右键菜单),实现软件资源和数据资源管理;
(10) 设计并实现Windows操作系统任务管理器全部功效(包含:菜单、右键菜单、应用程序管理、进程管理、性能显示、联网状态和用户信息)。
第二章 设计概要
2.1功效设计
本项目是为了实现模拟Windows系统任务管理器和资源管理器。项目标分析及功效设计要求以下:
(1) 编程模拟实现Windows系统任务管理器和资源管理器两个应用程序;
(2) 服务器端能够对文件进行管理,包含上传,下载,删除文件,重命名等;
(3) 客服端能够实现文件上传、下载和查看服务器下默认目录文件列表;
(4) 在程序中应用多线程来实现多个用户端同时对一个服务器端进行请求操作。
2.2程序系统功效模块
关机
查看
选项
文件
功效设计
目前用户状态
内存使用状态
CPU状态
进程、应用程序状态
进程数
实时状态监控
Windows任务管理器
新建、切换进程、关闭进程
相关
关机、注销
立即刷新、小图标、具体列表
总在最前
新建任务、退出管理器
进程
帮助
2.2.1 Windows任务管理器功效模块
图2.1
文件
功效设计
文件类型
文件大小
目录树
资源状态显示
Windows资源管理器
2.2.2 Windows资源管理器功效模块
文件名
修改时间
新建、打开、保留、另存为、最近文件、退出
相关
帮助
视图
撤销、剪切、粘贴、复制
编辑
工具栏和停靠窗口
应用程序外观
状态栏
图2.2
2.3功效分析
2.3.1 Windows任务管理器功效步骤图
图2.3
2.3.2 Windows资源管理器功效步骤图
显示数据
控件消息
鼠标事件
消息
资源数据
资源文件
用户操作鼠标
显示操作效果
资源管理器控制系统
鼠标事件处理
图2.4
2.3.3 Windows任务管理器界面截图
整体界面
不一样状态显示截图
2.3.4 Windows资源管理器界面截图
1、 整体界面:
2、功效界面展示:
“文件”功效展示
“编辑”功效展示
“视图”功效展示
“帮助”功效展示
2.3.5 程序关键功效说明
一、Windows任务管理器关键功效代码实现:
'取得进程代码实现
Public Sub ListProcess()
On Error Resume Next
Dim i As Long, j As Long, n As Long
Dim proc As PROCESSENTRY32
Dim snap As Long
Dim exename As String '应用程序名
Dim item As ListItem
Dim lngHwndProcess As Long
Dim lngModules(1 To 200) As Long
Dim lngCBSize2 As Long
Dim lngReturn As Long
Dim strModuleName As String
Dim pmc As PROCESS_MEMORY_COUNTERS
Dim WKSize As Long
Dim strProcessName As String
Dim strComment As String '装载进程注释字符串
Dim ProClass As String '程序类名
'开始进程循环
snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0)
proc.dwSize = Len(proc)
theloop = ProcessFirst(snap, proc)
i = 0
n = 0
While theloop <> 0
i = i + 1
'打开指定进程序,并得到进程句柄
lngHwndProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, proc.th32ProcessID)
If lngHwndProcess <> 0 Then
'枚举系统中正在运行进程模板
lngReturn = EnumProcessModules(lngHwndProcess, lngModules(1), 200, lngCBSize2)
If lngReturn <> 0 Then
'返回特定数目空格
strModuleName = Space(MAX_PATH)
'获取一个已装载模板完整路径名称
lngReturn = GetModuleFileNameExA(lngHwndProcess, lngModules(1), strModuleName, 500)
strProcessName = Left(strModuleName, lngReturn)
strProcessName = CheckPath(Trim$(strProcessName))
If strProcessName <> "" Then
'判定ITEM是否已经存在
j = HaveItem(proc.th32ProcessID)
If j = 0 Then '假如没有该进程
'获取短文件名
exename = Dir(strProcessName, vbNormal Or vbHidden Or vbReadOnly Or vbSystem)
If exename = "hh.exe" Then
'MsgBox SetProClass(proc.th32ProcessID, IDLE_PRIORITY_CLASS)
End If
'添加进程item
Set item = List1.ListItems.Add(, "ID:" & CStr(proc.th32ProcessID), exename)
'进程ID
item.SubItems(1) = proc.th32ProcessID
'内存使用
pmc.cb = LenB(pmc)
'取得进程内存信息,在这里就是计算该进程占用内存多少
lret = GetProcessMemoryInfo(lngHwndProcess, pmc, pmc.cb)
n = n + pmc.WorkingSetSize
WKSize = pmc.WorkingSetSize / 1024
item.SubItems(3) = WKSize & " K"
'进程序IP号
item.SubItems(2) = GetProClass(proc.th32ProcessID)
'进程图标将获取图标加到IMAGE控件中
IM1.ListImages.Add , strProcessName, GetIcon(strProcessName)
item.SmallIcon = IM1.ListImages.item(strProcessName).Key
Else '假如已经有该进程
pmc.cb = LenB(pmc)
'取得进程内存信息,在这里就是计算该进程占用内存多少
lret = GetProcessMemoryInfo(lngHwndProcess, pmc, pmc.cb)
n = n + pmc.WorkingSetSize
WKSize = pmc.WorkingSetSize / 1024 '计算占用内存
If CLng(List1.ListItems.item(j).SubItems(3)) <> WKSize Then List1.ListItems.item(j).SubItems(3) = WKSize & " K"
'取得进程类名
ProClass = GetProClass(proc.th32ProcessID)
If ProClass <>List1.ListItems.item(j).SubItems(5) Then List1.ListItems.item(j).SubItems(5) = ProClass
End If
End If
End If
End If
theloop = ProcessNext(snap, proc)
Wend
CloseHandle snap
'显示总进程数 Label3
If i <> ProCount Then
Label3.Caption = "进程数:" & i
ProCount = i
End If
If n <> RamUse Then '这里"130"是以后加上去.是为了和系统自带数值一样
Label5.Caption = Val(FormatLng(n)) + 130 & "MB"
RamUse = n
For i = 950 To Val(FormatLng(n)) + 400 Step -90
rampic.Line (0, i)-Step(1200, 20), &HFF00&, BF
Next i
End If
End Sub
'调用系统"相关"窗
Private Sub about_Click()
On Error Resume Next
ShellAbout Me.hwnd, App.Title, "谭建&文程&张源", ByVal 0&
End Sub
'退出本程序员
Private Sub close_Click()
tmrRefresh.Enabled = False
Unload Me
End Sub
Private Sub CloseSystem_Click()
tmrRefresh.Enabled = False
Unload Me
End Sub
'应用程序切换程序
Private Sub cmdSwitch_Click()
Dim hwnd As Long
Dim X As Long
Dim lngWW As Long
If LstApp.ListIndex < 0 Then Beep: Exit Sub
hwnd = LstApp.ItemData(LstApp.ListIndex)
'取得窗口结构信息
lngWW = GetWindowLong(hwnd, GWL_STYLE)
If lngWW And WS_MINIMIZE Then
'控制窗口可见性
X = ShowWindow(hwnd, SW_RESTORE)
End If
'指定一个窗口新位置 '第2个参数:将窗口置于Z序列顶部.
X = SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, _
SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW)
End Sub '保持目前位置或保持目前大小或显示窗口
'弹出"新建任务"窗
Private Sub Command1_Click()
frmnew.Show vbModal
End Sub
'结束应用程序
'还有就是在假如列表中没有活动程序,点击"结束程序"会退出本身
Private Sub Command3_Click()
On Error Resume Next
'If LstApp.ListCount = 0 Then
'应用程序类名,和程序标题
Dim lpclassname As String, lpcaption As String
'程序句柄号
Dim Handle As Long
Dim Retval As Long
'先是打开要关闭程序,其它就是将该程序显示成目前途序
Shell LstApp.Text, 1
lpclassname = LstApp.Text
lpcaption = LstApp.Text
'取得程序句柄号
Handle = FindWindow(vbNullString, lpcaption)
'用函数关闭应用程序
PostMessage Handle, WM_Close, 0&, 0&
'所了和列表控件一至,在这里删除列表中该进程名
LstApp.RemoveItem LstApp.ListIndex
LstApp.refresh
'刷新
FindAllApps
End Sub
'结束指定进程功效代码实现
Private Sub Command4_Click()
On Error Resume Next
Dim i As Long, hand As Long, id As Long
If MsgBox("确定要结束进程 " & List1.SelectedItem.Text & " 吗?", vbExclamation + vbOKCancel) = vbCancel Then Exit Sub
id = CLng(List1.SelectedItem.SubItems(1))
If id <> 0 Then
EndPro id
End If
ListProcess
End Sub
Private Sub Command5_Click()
Dim AboutRet As Long
AboutRet = ExitWindowsEx(EWX_LOGOFF, 0)
End Sub
'注销用户功效实现
Private Sub Command6_Click()
Dim AboutRet As Long
AboutRet = ExitWindowsEx(EWX_LOGOFF, 0)
End Sub
'切换至功效实现
Private Sub cutoverto_Click()
cmdSwitch_Click
Me.WindowState = 1
End Sub
'改变进程显示方法
Private Sub Detailed_Click()
List1.View = lvwReport
End Sub
'结束应用程序功效实现
Private Sub endprograme_Click()
Command3_Click
End Sub
'关机功效实现
Private Sub Exit_Click()
frmclose.Show vbModal
End Sub
'CPU效率监视
CpuPicture(0).ScaleMode = vbPixels
CpuPicture(1).ScaleMode = vbPixels
Set QueryObject = New CCpuwatch
'对象初始化
QueryObject.Initialize
'打开时间控件
tmrRefresh.Enabled = True
'调用刷新过程
tmrRefresh_Timer
'*****************************************
'取得全部系统进程
ListProcess
'窗体总在前
SetTop Me, front.Checked
'***************************************************
'取得系统目前用户
cnt& = 199
s$ = String$(200, 0)
dl& = GetUserName(s$, cnt)
Set item = ListView3.ListItems.Add(, , s$, , 2)
item.SubItems(2) = "正在运行..."
item.SubItems(1) = WorkstationID
'设置系统托盘
If WindowState = vbMinimized Then
LastState = vbNormal
Else
LastState = WindowState
End If
AddToTray Me, Tray
End Sub
Private Sub Form_Resize()
Select Case WindowState
Case vbMinimized
Me.Visible = False
Case vbMaximized
Me.Visible = True
End Select
If WindowState <> vbMinimized Then
LastState = WindowState
Me.Visible = True
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
RemoveFromTray '关闭托盘
tmrRefresh.Enabled = False
Unload Me
End Sub
Private Sub front_Click()
front.Checked = Not front.Checked
SetTop Me, front.Checked
End Sub
Private Sub jsjc_Click()
Command4_Click
End Sub
Private Sub List1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
On Error Resume Next
With List1
'设置 Sorted 为 True 以将列表排序。
If (ColumnHeader.Index - 1) = .SortKey Then
.SortOrder = (.SortOrder + 1) Mod 2
.Sorted = True
Else
.Sorted = False
.SortOrder = 0
.SortKey = ColumnHeader.Index - 1
.Sorted = True
End If
End With
End Sub
'右击菜单;,,并初使化进程优先等级
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, y As Single)
On Error Resume Next
Dim j As Long, i As Long
If Button = 2 Then
If List1.HitTest(X, y) Is Nothing Then Exit Sub
j = List1.HitTest(X, y).Index
List1.ListItems(j).Selected = True
For i = 0 To 5
mnuSetProClassSub(i).Checked = False
Next
Select Case List1.SelectedItem.SubItems(2)
Case "实时": mnuSetProClassSub(0).Checked = True
Case "高": mnuSetProClassSub(1).Checked = True
Case "较高": mnuSetProClassSub(2).Checked = True
Case "标准": mnuSetProClassSub(3).Checked = True
Case "较低": mnuSetProClassSub(4).Checked = True
Case "低": mnuSetProClassSub(5).Checked = True
End Select
PopupMenu you
End If
End Sub
Private Sub log_Click()
frmclose.Show vbModal
End Sub
'双击切换到另一个程序
Sub lstApp_DblClick()
cmdSwitch.Value = True
End Sub
'任务窗
Function TaskWindow(hwCurr As Long) As Long
Dim lngStyle As Long
'调用函数得到指定窗口信息'第一个参数是指定窗口句柄,第二个是窗口样式
lngStyle = GetWindowLong(hwCurr, GWL_STYLE)
If (lngStyle And IsTask) = IsTask Then TaskWindow = True
End Function
'设置进程优先级
Public Function SetProClass(ByVal PID As Long, ByVal ClassID As Long)
On Error Resume Next
Dim hwd As Long
'在这里得到一个句柄
hwd = OpenProcess(PROCESS_SET_INFORMATION, 0, PID)
'调用这个函数设置进程优先级
SetProClass = SetPriorityClass(hwd, ClassID)
End Function
'右键菜单
Private Sub LstApp_MouseDown(Button As Integer, Shift As Integer, X As Single, y As Single)
If Button = 2 Then
PopupMenu Application
End If
End Sub
'在这里设置进程优先级
Private Sub mnuSetProClassSub_Click(Index As Integer)
On Error Resume Next
Dim PID As Long, rtn As Long
展开阅读全文