操作系統(tǒng)課程設計---windows系統(tǒng)資源管理器與任務管理器_第1頁
已閱讀1頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、<p>  XX大學課程設計報告</p><p>  課程設計題目: Windows系統(tǒng)資源管理器與任務管理器 </p><p>  學 院: </p><p>  專業(yè)班級:

2、 </p><p>  年 級: 2008級 </p><p>  姓 名: </p><p>  學 號: </p>&l

3、t;p>  完成時間: 2012 年 7 月 3 日</p><p>  成 績: </p><p>  指導教師: </p><p><b>  教務處</b></p><

4、;p><b>  課程設計任務書</b></p><p><b>  摘 要</b></p><p>  操作系統(tǒng)是一個介于軟件和硬件之間的特殊硬件,一方面分配硬件資源另一方面支持軟件在它上面的實現(xiàn),如何實時地監(jiān)控和掌握系統(tǒng)軟硬件工作的狀態(tài)、資源分配和使用的情況,對計算機用戶而言十分重要,于是就有了任務管理器這樣的實時監(jiān)控窗口;同理,

5、我們也需要掌握計算機硬件設備的工作狀態(tài),掌握其如何存儲文件、分配硬盤資源等,這也是我們做資源管理器的初衷。</p><p>  我們的電腦需要我們?nèi)チ私馑倪\行狀況,掌握和管理它的進程,并對其異常情況給予操作和控制,任務管理器就像是我們了解和控制自己電腦運作的一個窗口,通過這個窗口我們可以了解到電腦所有進程運行狀況,并對運行的進程加于管理和控制,正如在本實驗中,啟動進程管理器后,可以通過”獲取進程”功能來獲得本計

6、算機啟動的進程,以及與該進程相關的信息,其中包括的信息有:進程映像名稱,進程開啟的線程數(shù),進程的PID以及進程的優(yōu)先數(shù),我們可以通過這些信息來了解計算機中每個進程的使用狀況。同時我們可以在進程管理器上選中一個要終止的的進程,點擊“終止進程”功能按鈕,該進程被終止執(zhí)行并退出進程列表,其中還包括了自動刷新的功能,此按鈕實現(xiàn)的功能正如我們電腦任務管理器的“進程”功能,當電腦執(zhí)行程序不能通過關閉窗口進行正常的關閉時,可以借助此辦法來關閉進程。我

7、們還可以通過這個進程管理器來啟動新的進程,當我們要在進程管理器里啟動新的進程時,只要點擊“啟動新進程”按鍵,則會彈出“打開進程”對話框,我們可以通過對話框里的“瀏覽”窗口選擇要打開的新進程,這是任務管理器里沒有實現(xiàn)的功能,通過這個功能我們在管理計算機時變得更加靈活方便,也</p><p>  關鍵詞:任務管理器 資源管理器 操作系統(tǒng)</p><p><b>  課程設計要求<

8、;/b></p><p>  題目名稱:Windows系統(tǒng)資源管理器與任務管理器</p><p><b>  題目類型:設計型</b></p><p>  課程設計目的:熟悉操作系統(tǒng)資源管理原理,掌握編程接口,能夠使用高級語言調(diào)用編程接口,設計并實現(xiàn)Windows操作系統(tǒng)資源管理器和任務管理器的全部功能。</p><p

9、>  已知參數(shù)和設計要求:</p><p>  熟悉操作系統(tǒng)資源管理原理,掌握編程接口,能夠使用高級語言調(diào)用編程接口,設計并實現(xiàn)Windows操作系統(tǒng)資源管理器的全部功能(包括:菜單、圖標、右鍵菜單),實現(xiàn)軟件資源和數(shù)據(jù)資源的管理;</p><p>  掌握操作系統(tǒng)任務與進程概念,熟悉任務與進程管理的方法,通過高級語言編程接口設計并實現(xiàn)Windows操作系統(tǒng)任務管理器的全部功能(包括

10、:菜單、右鍵菜單、應用程序管理、進程管理、性能顯示、聯(lián)網(wǎng)狀態(tài)和用戶信息)。</p><p><b>  實驗內(nèi)容:</b></p><p>  了解Windows操作系統(tǒng)的發(fā)展歷史;</p><p>  了解Windows XP的體系結(jié)構(gòu);</p><p>  掌握Windows系統(tǒng)API的調(diào)用方法;</p>

11、<p>  設計并實現(xiàn)Windows操作系統(tǒng)資源管理器的全部功能(包括:菜單、圖標、右鍵菜單),實現(xiàn)軟件資源和數(shù)據(jù)資源的管理;</p><p>  設計并實現(xiàn)Windows操作系統(tǒng)任務管理器的全部功能(包括:菜單、右鍵菜單、應用程序管理、進程管理、性能顯示、聯(lián)網(wǎng)狀態(tài)和用戶信息)。</p><p><b>  設計概要</b></p><

12、;p><b>  2.1功能設計</b></p><p>  本項目是為了實現(xiàn)模擬Windows系統(tǒng)任務管理器和資源管理器。項目的分析及功能設計要求如下:</p><p>  編程模擬實現(xiàn)Windows系統(tǒng)任務管理器和資源管理器兩個應用程序;</p><p>  服務器端可以對文件進行管理,包括上傳,下載,刪除文件,重命名等;</p

13、><p>  客服端可以實現(xiàn)文件的上傳、下載以及查看服務器下默認目錄的文件列表;</p><p>  在程序中應用多線程來實現(xiàn)多個客戶端同時對一個服務器端進行請求操作。</p><p>  2.2程序系統(tǒng)功能模塊</p><p>  2.2.1 Windows任務管理器功能模塊</p><p><b>  圖2.

14、1</b></p><p>  2.2.2 Windows資源管理器功能模塊</p><p><b>  圖2.2</b></p><p><b>  2.3功能分析</b></p><p>  2.3.1 Windows任務管理器功能流程圖</p><p>&l

15、t;b>  圖2.3</b></p><p>  2.3.2 Windows資源管理器功能流程圖</p><p><b>  圖2.4</b></p><p>  2.3.3 Windows任務管理器界面截圖</p><p><b>  整體界面</b></p>&l

16、t;p><b>  不同狀態(tài)顯示的截圖</b></p><p>  2.3.4 Windows資源管理器界面截圖</p><p><b>  整體界面:</b></p><p><b>  2、功能界面展示:</b></p><p><b>  “文件”功能展示

17、</b></p><p><b>  “編輯”功能展示</b></p><p><b>  “視圖”功能展示</b></p><p><b>  “幫助”功能展示</b></p><p>  2.3.5 程序主要功能說明</p><p> 

18、 一、Windows任務管理器主要功能代碼實現(xiàn):</p><p><b>  '獲得進程代碼實現(xiàn)</b></p><p>  Public Sub ListProcess()</p><p>  On Error Resume Next</p><p>  Dim i As Long, j As Long, n

19、As Long</p><p>  Dim proc As PROCESSENTRY32</p><p>  Dim snap As Long</p><p>  Dim exename As String '應用程序名</p><p>  Dim item As ListItem</p><p>  Di

20、m lngHwndProcess As Long</p><p>  Dim lngModules(1 To 200) As Long</p><p>  Dim lngCBSize2 As Long</p><p>  Dim lngReturn As Long</p><p>  Dim strModuleName As String&l

21、t;/p><p>  Dim pmc As PROCESS_MEMORY_COUNTERS</p><p>  Dim WKSize As Long</p><p>  Dim strProcessName As String</p><p>  Dim strComment As String '裝載進程注釋的字符串</p&g

22、t;<p>  Dim ProClass As String '程序的類名</p><p><b>  '開始進程循環(huán)</b></p><p>  snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0)</p><p>  proc.dwSize = Len(proc)

23、</p><p>  theloop = ProcessFirst(snap, proc)</p><p><b>  i = 0</b></p><p><b>  n = 0</b></p><p>  While theloop <> 0</p><p>&

24、lt;b>  i = i + 1</b></p><p>  '打開指定的進程序,并得到進程的句柄</p><p>  lngHwndProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, proc.th32ProcessID)</p><p>  If

25、lngHwndProcess <> 0 Then</p><p>  '枚舉系統(tǒng)中正在運行的進程模板</p><p>  lngReturn = EnumProcessModules(lngHwndProcess, lngModules(1), 200, lngCBSize2)</p><p>  If lngReturn <> 0

26、Then</p><p>  '返回特定數(shù)目空格的</p><p>  strModuleName = Space(MAX_PATH)</p><p>  '獲取一個已裝載模板的完整路徑名稱</p><p>  lngReturn = GetModuleFileNameExA(lngHwndProcess, lngModule

27、s(1), strModuleName, 500)</p><p>  strProcessName = Left(strModuleName, lngReturn)</p><p>  strProcessName = CheckPath(Trim$(strProcessName))</p><p>  If strProcessName <> &qu

28、ot;" Then</p><p>  '判斷ITEM是否已經(jīng)存在</p><p>  j = HaveItem(proc.th32ProcessID)</p><p>  If j = 0 Then '如果沒有該進程</p><p><b>  '獲取短文件名</b></p&g

29、t;<p>  exename = Dir(strProcessName, vbNormal Or vbHidden Or vbReadOnly Or vbSystem)</p><p>  If exename = "hh.exe" Then</p><p>  'MsgBox SetProClass(proc.th32ProcessID, ID

30、LE_PRIORITY_CLASS)</p><p><b>  End If</b></p><p><b>  '添加進程item</b></p><p>  Set item = List1.ListItems.Add(, "ID:" & CStr(proc.th32Process

31、ID), exename)</p><p><b>  '進程ID</b></p><p>  item.SubItems(1) = proc.th32ProcessID</p><p><b>  '內(nèi)存使用</b></p><p>  pmc.cb = LenB(pmc)<

32、/p><p>  '獲得進程的內(nèi)存信息,在這里就是計算該進程占用內(nèi)存多少</p><p>  lret = GetProcessMemoryInfo(lngHwndProcess, pmc, pmc.cb)</p><p>  n = n + pmc.WorkingSetSize</p><p>  WKSize = pmc.Workin

33、gSetSize / 1024</p><p>  item.SubItems(3) = WKSize & " K"</p><p><b>  '進程序IP號</b></p><p>  item.SubItems(2) = GetProClass(proc.th32ProcessID)</p>

34、<p>  '進程圖標將獲取的圖標加到IMAGE控件中</p><p>  IM1.ListImages.Add , strProcessName, GetIcon(strProcessName)</p><p>  item.SmallIcon = IM1.ListImages.item(strProcessName).Key</p><p>

35、;  Else '如果已經(jīng)有該進程</p><p>  pmc.cb = LenB(pmc)</p><p>  '獲得進程的內(nèi)存信息,在這里就是計算該進程占用內(nèi)存多少</p><p>  lret = GetProcessMemoryInfo(lngHwndProcess, pmc, pmc.cb)</p><p> 

36、 n = n + pmc.WorkingSetSize</p><p>  WKSize = pmc.WorkingSetSize / 1024 '計算占用內(nèi)存</p><p>  If CLng(List1.ListItems.item(j).SubItems(3)) <> WKSize Then List1.ListItems.item(j).SubItems(3

37、) = WKSize & " K"</p><p><b>  '獲得進程的類名</b></p><p>  ProClass = GetProClass(proc.th32ProcessID)</p><p>  If ProClass <>List1.ListItems.item(j).Sub

38、Items(5) Then List1.ListItems.item(j).SubItems(5) = ProClass</p><p><b>  End If</b></p><p><b>  End If</b></p><p><b>  End If</b></p><

39、p><b>  End If</b></p><p>  theloop = ProcessNext(snap, proc)</p><p><b>  Wend</b></p><p>  CloseHandle snap</p><p>  '顯示總進程數(shù) Label3</p

40、><p>  If i <> ProCount Then</p><p>  Label3.Caption = "進程數(shù):" & i</p><p>  ProCount = i</p><p><b>  End If</b></p><p>  If n &

41、lt;> RamUse Then '這里的"130"是后來加上去的.是為了和系統(tǒng)自帶的數(shù)值一樣</p><p>  Label5.Caption = Val(FormatLng(n)) + 130 & "MB"</p><p>  RamUse = n</p><p>  For i = 950

42、To Val(FormatLng(n)) + 400 Step -90</p><p>  rampic.Line (0, i)-Step(1200, 20), &HFF00&, BF</p><p><b>  Next i</b></p><p><b>  End If</b></p>

43、<p><b>  End Sub</b></p><p>  '調(diào)用系統(tǒng)的"關于"窗</p><p>  Private Sub about_Click()</p><p>  On Error Resume Next</p><p>  ShellAbout Me.hwnd, A

44、pp.Title, "譚建&文程&張源", ByVal 0&</p><p><b>  End Sub</b></p><p><b>  '退出本程序員</b></p><p>  Private Sub close_Click()</p><p&

45、gt;  tmrRefresh.Enabled = False</p><p><b>  Unload Me</b></p><p><b>  End Sub</b></p><p>  Private Sub CloseSystem_Click()</p><p>  tmrRefresh.E

46、nabled = False</p><p><b>  Unload Me</b></p><p><b>  End Sub</b></p><p><b>  '應用程序切換程序</b></p><p>  Private Sub cmdSwitch_Click(

47、)</p><p>  Dim hwnd As Long</p><p>  Dim X As Long</p><p>  Dim lngWW As Long</p><p>  If LstApp.ListIndex < 0 Then Beep: Exit Sub</p><p>  hwnd = LstAp

48、p.ItemData(LstApp.ListIndex)</p><p>  '取得窗口的結(jié)構(gòu)信息</p><p>  lngWW = GetWindowLong(hwnd, GWL_STYLE)</p><p>  If lngWW And WS_MINIMIZE Then</p><p><b>  '控制窗口的

49、可見性</b></p><p>  X = ShowWindow(hwnd, SW_RESTORE)</p><p><b>  End If</b></p><p>  '指定一個窗口新的位置 '第2個參數(shù):將窗口置于Z序列的頂部.</p><p>  X = SetWindowPos(hw

50、nd, HWND_TOP, 0, 0, 0, 0, _</p><p>  SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW)</p><p>  End Sub '保持當前位置或保持當前大小或顯示窗口</p><p>  '彈出"新建任務"窗</p><p>  Pr

51、ivate Sub Command1_Click()</p><p>  frmnew.Show vbModal</p><p><b>  End Sub</b></p><p><b>  '結(jié)束應用程序</b></p><p>  '還有就是在如果列表中沒有活動程序,點擊&qu

52、ot;結(jié)束程序"會退出本身</p><p>  Private Sub Command3_Click()</p><p>  On Error Resume Next</p><p>  'If LstApp.ListCount = 0 Then</p><p>  '應用程序的類名,和程序的標題</p>

53、<p>  Dim lpclassname As String, lpcaption As String</p><p><b>  '程序的句柄號</b></p><p>  Dim Handle As Long</p><p>  Dim Retval As Long</p><p>  

54、9;先是打開要關閉的程序,其它就是將該程序顯示成當前程序</p><p>  Shell LstApp.Text, 1</p><p>  lpclassname = LstApp.Text</p><p>  lpcaption = LstApp.Text</p><p><b>  '獲得程序的句柄號</b>

55、</p><p>  Handle = FindWindow(vbNullString, lpcaption)</p><p>  '用函數(shù)關閉應用程序</p><p>  PostMessage Handle, WM_Close, 0&, 0&</p><p>  '所了和列表控件一至,在這里刪除列表中的該進

56、程名</p><p>  LstApp.RemoveItem LstApp.ListIndex</p><p>  LstApp.refresh</p><p><b>  '刷新</b></p><p>  FindAllApps</p><p><b>  End Sub&l

57、t;/b></p><p>  '結(jié)束指定進程功能代碼實現(xiàn)</p><p>  Private Sub Command4_Click()</p><p>  On Error Resume Next</p><p>  Dim i As Long, hand As Long, id As Long</p><

58、p>  If MsgBox("確定要結(jié)束進程 " & List1.SelectedItem.Text & " 嗎?", vbExclamation + vbOKCancel) = vbCancel Then Exit Sub</p><p>  id = CLng(List1.SelectedItem.SubItems(1))</p>&

59、lt;p>  If id <> 0 Then</p><p><b>  EndPro id</b></p><p><b>  End If</b></p><p>  ListProcess</p><p><b>  End Sub</b></p&

60、gt;<p>  Private Sub Command5_Click()</p><p>  Dim AboutRet As Long</p><p>  AboutRet = ExitWindowsEx(EWX_LOGOFF, 0)</p><p><b>  End Sub</b></p><p>&

61、lt;b>  '注銷用戶功能實現(xiàn)</b></p><p>  Private Sub Command6_Click()</p><p>  Dim AboutRet As Long</p><p>  AboutRet = ExitWindowsEx(EWX_LOGOFF, 0)</p><p><b> 

62、 End Sub</b></p><p><b>  '切換至功能實現(xiàn)</b></p><p>  Private Sub cutoverto_Click()</p><p>  cmdSwitch_Click</p><p>  Me.WindowState = 1</p><p

63、><b>  End Sub</b></p><p><b>  '改變進程顯示方式</b></p><p>  Private Sub Detailed_Click()</p><p>  List1.View = lvwReport</p><p><b>  End S

64、ub</b></p><p>  '結(jié)束應用程序功能實現(xiàn)</p><p>  Private Sub endprograme_Click()</p><p>  Command3_Click</p><p><b>  End Sub</b></p><p><b>

65、  '關機功能實現(xiàn)</b></p><p>  Private Sub Exit_Click()</p><p>  frmclose.Show vbModal</p><p><b>  End Sub</b></p><p><b>  'CPU效率監(jiān)視</b><

66、;/p><p>  CpuPicture(0).ScaleMode = vbPixels</p><p>  CpuPicture(1).ScaleMode = vbPixels</p><p>  Set QueryObject = New CCpuwatch</p><p><b>  '對象初始化</b><

67、;/p><p>  QueryObject.Initialize</p><p><b>  '打開時間控件</b></p><p>  tmrRefresh.Enabled = True</p><p><b>  '調(diào)用刷新過程</b></p><p>  t

68、mrRefresh_Timer</p><p>  '*****************************************</p><p><b>  '獲得所有系統(tǒng)進程</b></p><p>  ListProcess</p><p><b>  '窗體總在前</

69、b></p><p>  SetTop Me, front.Checked</p><p>  '***************************************************</p><p>  '獲得系統(tǒng)的當前用戶</p><p>  cnt& = 199</p><

70、;p>  s$ = String$(200, 0)</p><p>  dl& = GetUserName(s$, cnt)</p><p>  Set item = ListView3.ListItems.Add(, , s$, , 2)</p><p>  item.SubItems(2) = "正在運行..."</p&g

71、t;<p>  item.SubItems(1) = WorkstationID</p><p><b>  '設置系統(tǒng)托盤</b></p><p>  If WindowState = vbMinimized Then</p><p>  LastState = vbNormal</p><p>

72、<b>  Else</b></p><p>  LastState = WindowState</p><p><b>  End If</b></p><p>  AddToTray Me, Tray</p><p><b>  End Sub</b></p>

73、<p>  Private Sub Form_Resize()</p><p>  Select Case WindowState</p><p>  Case vbMinimized</p><p>  Me.Visible = False</p><p>  Case vbMaximized</p><p&

74、gt;  Me.Visible = True</p><p>  End Select</p><p>  If WindowState <> vbMinimized Then</p><p>  LastState = WindowState</p><p>  Me.Visible = True</p><

75、p><b>  End If</b></p><p><b>  End Sub</b></p><p>  Private Sub Form_Unload(Cancel As Integer)</p><p>  RemoveFromTray '關閉托盤</p><p>  tm

76、rRefresh.Enabled = False</p><p><b>  Unload Me</b></p><p><b>  End Sub</b></p><p>  Private Sub front_Click()</p><p>  front.Checked = Not front

77、.Checked</p><p>  SetTop Me, front.Checked</p><p><b>  End Sub</b></p><p>  Private Sub jsjc_Click()</p><p>  Command4_Click</p><p><b>  

78、End Sub</b></p><p>  Private Sub List1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)</p><p>  On Error Resume Next</p><p>  With List1</p><p>  '

79、;設置 Sorted 為 True 以將列表排序。</p><p>  If (ColumnHeader.Index - 1) = .SortKey Then</p><p>  .SortOrder = (.SortOrder + 1) Mod 2</p><p>  .Sorted = True</p><p><b>  El

80、se</b></p><p>  .Sorted = False</p><p>  .SortOrder = 0</p><p>  .SortKey = ColumnHeader.Index - 1</p><p>  .Sorted = True</p><p><b>  End If&l

81、t;/b></p><p><b>  End With</b></p><p><b>  End Sub</b></p><p>  '右擊菜單;,,并初使化進程的優(yōu)先級別</p><p>  Private Sub List1_MouseDown(Button As Intege

82、r, Shift As Integer, X As Single, y As Single)</p><p>  On Error Resume Next</p><p>  Dim j As Long, i As Long</p><p>  If Button = 2 Then</p><p>  If List1.HitTest(X,

83、y) Is Nothing Then Exit Sub</p><p>  j = List1.HitTest(X, y).Index</p><p>  List1.ListItems(j).Selected = True</p><p>  For i = 0 To 5</p><p>  mnuSetProClassSub(i).Che

84、cked = False</p><p><b>  Next</b></p><p>  Select Case List1.SelectedItem.SubItems(2)</p><p>  Case "實時": mnuSetProClassSub(0).Checked = True</p><p&

85、gt;  Case "高": mnuSetProClassSub(1).Checked = True</p><p>  Case "較高": mnuSetProClassSub(2).Checked = True</p><p>  Case "標準": mnuSetProClassSub(3).Checked = True&l

86、t;/p><p>  Case "較低": mnuSetProClassSub(4).Checked = True</p><p>  Case "低": mnuSetProClassSub(5).Checked = True</p><p>  End Select</p><p>  PopupMenu

87、 you</p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  Private Sub log_Click()</p><p>  frmclose.Show vbModal</p><p><b>

88、;  End Sub</b></p><p>  '雙擊切換到另一個程序</p><p>  Sub lstApp_DblClick()</p><p>  cmdSwitch.Value = True</p><p><b>  End Sub</b></p><p><

89、;b>  '任務窗</b></p><p>  Function TaskWindow(hwCurr As Long) As Long</p><p>  Dim lngStyle As Long</p><p>  '調(diào)用函數(shù)得到指定窗口的信息'第一個參數(shù)是指定窗口的句柄,第二個是窗口的樣式</p><

90、p>  lngStyle = GetWindowLong(hwCurr, GWL_STYLE)</p><p>  If (lngStyle And IsTask) = IsTask Then TaskWindow = True</p><p>  End Function</p><p><b>  '設置進程優(yōu)先級</b>&l

91、t;/p><p>  Public Function SetProClass(ByVal PID As Long, ByVal ClassID As Long)</p><p>  On Error Resume Next</p><p>  Dim hwd As Long</p><p>  '在這里得到一個句柄</p>

92、<p>  hwd = OpenProcess(PROCESS_SET_INFORMATION, 0, PID)</p><p>  '調(diào)用這個函數(shù)設置進程的優(yōu)先級</p><p>  SetProClass = SetPriorityClass(hwd, ClassID)</p><p>  End Function</p><

93、;p><b>  '右鍵菜單</b></p><p>  Private Sub LstApp_MouseDown(Button As Integer, Shift As Integer, X As Single, y As Single)</p><p>  If Button = 2 Then</p><p>  PopupM

94、enu Application</p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  '在這里設置進程優(yōu)先級</p><p>  Private Sub mnuSetProClassSub_Click(Index As In

95、teger)</p><p>  On Error Resume Next</p><p>  Dim PID As Long, rtn As Long</p><p>  PID = CLng(List1.SelectedItem.SubItems(1)) '得到進程PID</p><p>  If mnuSetProClassS

96、ub(Index).Checked = True Then Exit Sub</p><p>  Select Case Index</p><p>  Case 1: rtn = SetProClass(PID, HIGH_PRIORITY_CLASS) '高</p><p>  Case 2: rtn = SetProClass(PID, 32

97、768) '較高</p><p>  Case 3: rtn = SetProClass(PID, NORMAL_PRIORITY_CLASS) '標準</p><p>  Case 4: rtn = SetProClass(PID, 16384) '較低</p><

98、;p>  Case 5: rtn = SetProClass(PID, IDLE_PRIORITY_CLASS) '低</p><p>  End Select</p><p>  If rtn = 0 Then MsgBox "無法為進程 " & List1.SelectedItem.Text & " 設置優(yōu)先級。&q

99、uot;, vbCritical</p><p><b>  End Sub</b></p><p>  '彈出"新建任務"窗</p><p>  Private Sub newfile_Click()</p><p>  frmnew.Show vbModal</p><

100、p><b>  End Sub</b></p><p>  Private Sub plaseago_Click()</p><p>  cmdSwitch_Click</p><p><b>  End Sub</b></p><p>  Private Sub refresh_Click(

101、)</p><p>  frmclose.Show vbModal</p><p><b>  End Sub</b></p><p><b>  '刷新</b></p><p>  Private Sub refresh1_Click()</p><p>  Fin

102、dAllApps</p><p><b>  End Sub</b></p><p>  Private Sub showago_Click()</p><p>  showago.Checked = Not showago.Checked</p><p>  SetTop Me, showago.Checked<

103、/p><p><b>  End Sub</b></p><p>  Private Sub small_Click()</p><p>  List1.View = Index + 2</p><p>  List1.Sorted = True</p><p><b>  End Sub&

104、lt;/b></p><p>  Private Sub SSTab1_DblClick()</p><p><b>  End Sub</b></p><p>  Private Sub Timer3_Timer()</p><p>  Dim X As Long</p><p>  Ca

105、ll GlobalMemoryStatus(minfo)</p><p><b>  '總的內(nèi)存量</b></p><p>  X = -minfo.dwTotalPhys / 1024</p><p>  Label2(0).Caption = Str$(Int(X))</p><p><b>  &

106、#39;可用的內(nèi)存量</b></p><p>  X = minfo.dwAvailPhys / 1024</p><p>  Label2(1).Caption = Str$(Int(X))</p><p><b>  '系統(tǒng)緩存</b></p><p>  Label2(2).Caption =

107、-(Val(Label2(0)) - Val(Label2(1)) - 500)</p><p><b>  '虛擬內(nèi)存總數(shù)</b></p><p>  X = minfo.dwTotalVirtual / 1024</p><p>  Label7(0).Caption = Str$(Int(X / 1024)) & &quo

108、t; M"</p><p><b>  '可用虛擬內(nèi)存</b></p><p>  X = minfo.dwAvailVirtual / 1024</p><p>  Label7(1).Caption = Str$(Int(X / 1024)) & " M"</p><p>

109、;<b>  End Sub</b></p><p>  Private Sub Timer4_Timer()</p><p>  Line14.X2 = Line14.X2 - 20</p><p>  Line14.X1 = Line14.X1 - 20</p><p>  If Line14.X1 = 0 Then

110、</p><p>  Timer4.Enabled = False</p><p><b>  Else</b></p><p>  Timer4.Enabled = True</p><p><b>  End If</b></p><p><b>  End S

111、ub</b></p><p>  Private Sub Timer6_Timer()</p><p>  FindAllApps</p><p><b>  End Sub</b></p><p><b>  'CPU效率監(jiān)視</b></p><p> 

112、 Private Sub tmrRefresh_Timer()</p><p>  Dim Ret As Integer</p><p>  Dim cnt As Integer</p><p>  Dim i As Integer</p><p><b>  '返回CPU狀態(tài)</b></p>&l

113、t;p>  Ret = QueryObject.Query</p><p>  cnt = Int(Ret / 10 + 1)</p><p>  CpuPicture(0).Cls '清除窗口中的內(nèi)容</p><p>  If Ret <> -1 Then</p><p>  For i = 0 To cnt

114、- 1</p><p>  '用PIC控件的LINE方法在PIC上畫圖,用以顯示CPU的占用率</p><p>  CpuPicture(0).Line (2, 70 - (5 + i * 6))-(79, 70 - (5 + i * 6 + 2)), &HFF00&, BF</p><p><b>  Next i</b&g

115、t;</p><p>  ShiftPoints</p><p>  GraphPoints(UBound(GraphPoints)) = Ret</p><p>  CpuPicture(1).Cls</p><p>  For cnt = LBound(GraphPoints) To UBound(GraphPoints) - 1<

116、/p><p>  CpuPicture(1).Line (cnt, 80 - GraphPoints(cnt))-(cnt + 1, 80 - GraphPoints(cnt + 1)), &HFF00&</p><p><b>  Next cnt</b></p><p>  CpuLabel.Caption = CStr(Ret

117、) + "%"</p><p>  Label4.Caption = "CPU 使用:" &CStr(Ret) + "%"</p><p>  '托盤顯示CPU使用率</p><p>  SetTrayTip "CPU 使用:" &CStr(Ret) + &quo

118、t; %"</p><p><b>  End If</b></p><p><b>  End Sub</b></p><p><b>  'CPU效率監(jiān)視</b></p><p>  Sub ShiftPoints()</p><p&g

119、t;  Dim cnt As Integer</p><p>  For cnt = LBound(GraphPoints) To UBound(GraphPoints) - 1</p><p>  GraphPoints(cnt) = GraphPoints(cnt + 1)</p><p><b>  Next cnt</b></p&

120、gt;<p><b>  End Sub</b></p><p>  '判斷item是否存在</p><p>  Public Function HaveItem(ByVal itemID As Long) As Long</p><p>  On Error GoTo zbb</p><p>  

121、HaveItem = List1.ListItems("ID:" & CStr(itemID)).Index</p><p>  Exit Function</p><p><b>  zbb:</b></p><p>  HaveItem = 0</p><p>  End Function

122、</p><p><b>  '結(jié)束一個進程</b></p><p>  Public Sub EndPro(ByVal PID As Long)</p><p>  On Error Resume Next</p><p>  Dim lngHwndProcess As Long</p><

123、p>  Dim hand As Long</p><p>  Dim exitCode As Long</p><p>  '打開要結(jié)束的進程,把該進程的句柄賦給變量</p><p>  hand = OpenProcess(PROCESS_TERMINATE, True, PID)</p><p><b>  

124、9;結(jié)束進程</b></p><p>  TerminateProcess hand, exitCode</p><p>  '關閉進程的內(nèi)核對象......(除非對內(nèi)核對象的所有引用都已關閉,否則該對象不會實際刪除)</p><p>  CloseHandle hand</p><p><b>  End Su

125、b</b></p><p>  Private Sub Timer2_Timer()</p><p>  CheckProcess</p><p><b>  End Sub</b></p><p>  Private Sub Timer1_Timer()</p><p>  List

126、Process</p><p><b>  End Sub</b></p><p>  '將正在運行的應用程序加到列表控件中</p><p>  Sub FindAllApps()</p><p>  Dim hwCurr As Long</p><p>  Dim intLen As L

127、ong</p><p>  Dim strTitle As String</p><p>  Dim item As ListItem</p><p><b>  '先清空</b></p><p>  LstApp.Clear</p><p>  '獲取一個窗口的句柄

128、'為一個源子窗口尋找第一個兄弟(同級)窗口,或?qū)ふ业谝粋€頂級窗口</p><p>  hwCurr = GetWindow(Me.hwnd, GW_HWNDFIRST)</p><p>  Do While hwCurr</p><p>  If hwCurr <> Me.hwnd And TaskWindow(hwCurr) Then</

129、p><p>  '調(diào)查窗口標題文字或控件內(nèi)容的長短</p><p>  intLen = GetWindowTextLength(hwCurr) + 1</p><p>  strTitle = Space$(intLen)</p><p>  '取得窗體的標題(caption)文字</p><p>  i

130、ntLen = GetWindowText(hwCurr, strTitle, intLen)</p><p>  If intLen > 0 Then</p><p>  LstApp.AddItem strTitle</p><p>  'Set item = LstApp.ListItems.Add(, , strTitle, 3)</p&

131、gt;<p>  LstApp.ItemData(LstApp.NewIndex) = hwCurr</p><p><b>  End If</b></p><p><b>  End If</b></p><p>  '獲取下一個窗口的句柄</p><p>  hwCurr

132、 = GetWindow(hwCurr, GW_HWNDNEXT)</p><p><b>  Loop</b></p><p><b>  End Sub</b></p><p>  Public Function CheckPath(ByVal PathStr As String) As String</p>

133、;<p>  On Error Resume Next</p><p>  '返回一個字符串,該字符串中指定的子字符串已被替換成另一子字符串,并且替換發(fā)生的次數(shù)也是指定的。</p><p>  PathStr = Replace(PathStr, "\??\", "")</p><p>  If UCas

134、e(Left$(PathStr, 12)) = "\SYSTEMROOT\" Then PathStr = GetWinDir & Mid$(PathStr, 12)</p><p>  CheckPath = PathStr</p><p>  End Function</p><p><b>  新建一個進程的命令</

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論