【正文】
頁 Windows 自帶的任 務管理器分析 Windows 任務管理器由性能、進程、應用程序三大部分組成。每個進程至少擁有一個線程,來執(zhí)行進程的地址空間中的代碼。 調(diào)度:選擇一個就緒線程進入執(zhí)行狀態(tài)。內(nèi)核對象也是系統(tǒng)用來存放線程統(tǒng)計信息的地方。 一個進程的生命周期可以劃分為一組狀態(tài),這些狀態(tài)描述 了整個進程。進程的靜態(tài)描述由三部份組成:進程控件塊 PCB,有關(guān)程序段和該程序段對其進行操作的數(shù)據(jù)結(jié)構(gòu)集。 進程與 線程 簡介 進程簡介 進程通常被定義為一個正在運行的程序的實例,它由兩個部分組成:一個是 第 3 頁 共 25 頁 操作系統(tǒng)用來管理進程的內(nèi)核對象。 國內(nèi)外研究現(xiàn)狀 從現(xiàn)狀看來 , Windows 進程管理工具及其理論的研究,無論是國外還是國內(nèi),技術(shù)都相當成熟。 關(guān)鍵詞 : 任務管理器 ; 線程 ; 進程; API 591 論文網(wǎng) The Design and Implementation of the Processes Management Tool for Windows Abstract There are some defects in the Task Manager builtin Windows. For example, it doesn39。 簡述 WINDOWS 進程管理工具的原理和實現(xiàn) 摘 要 Windows 自帶的任務管理器存在功能上的缺陷, 比 如不能查看進程的模塊及線程信息。t show us the information of process modules and threads. The work of my design is to follow the Windows Task Manager and develop the software which has improved function for managing process. This software is designed to be a program based on a dialog write in the VC++. There is a label control in the main dialog box, and there are three pages for task, process and system information. The label control is used to select the page and to show it. The three pages are used respectively to display the information of task runs at current, process and process modules, the utilization of system resources. This software also realized some basic function for managing process, such as ending the task, switching the task, terminating the process and so on. During the process of my program, the information for tasks, process, thread modules and the utilization of system resource is got by calling the Windows API functions. Finally I test it on the Windows XP system. And it achieves the basic function for managing process. It provides a good reference for users to view the process at current and the utilization of system resources. Key words: Task Manager。微軟 Windows 操作系統(tǒng)系列 (98 和 ME 除外 )都自帶有 進程管理器,但功能不是很完善,不能查看進程模塊及線程信息,而許多其他版本的Windows 進程管理軟件都具有完善的功能。內(nèi)核對象也是系統(tǒng)用來存放關(guān)于進程的統(tǒng)計信息的地方。進程控制塊包含了有關(guān)進程的描述信息、控制信息以及資源信息,是進程動態(tài)特征的集中反應。系統(tǒng)根據(jù) PCB 結(jié)構(gòu)中的狀態(tài)值控制進程。另一 個是線程堆棧,它用于維護線程在執(zhí)行代碼時需要的所有函數(shù)參數(shù)和局部變量 線程只由相關(guān)的堆棧(系統(tǒng)棧或用戶棧) 、 寄存器和線程控制表 TCB 組成。 結(jié)束:如果一個線程執(zhí)行結(jié)束,它的寄存器上下文以及堆棧內(nèi)容等將被釋放。如果沒有線程來執(zhí)行進程的地址空間中的代碼,那么進程就沒有存在的理由了,系統(tǒng)就將自動撤消該進程和它的地址空間。其實這三大部分是有機的聯(lián)系在一起的,尤其是性能和進程,性能中除了 CPU 使用率以外,其余的數(shù)據(jù)都是由進程模塊順便取得的。 因此,在 此次 進程管理器的開發(fā)中, 將使用其它方法來獲取各類信息。 3 詳細設計 程序主界面如圖 2。 再分別 創(chuàng)建三個對話框的類 CTask ,CProcess, CChart,并定義這三個類的變量: CTask m_Task。 這樣便可將在個對話框分別顯示于標簽控件的每個頁面中,但要實現(xiàn)選擇標簽的不同項顯示不同頁面還需在 OnSelchangeMaintab(NMHDR* pNMHDR,LRESULT* pResult)和 OnSelchangingMaintab(NMHDR* pNMHDR,LRESULT* pResult)兩函數(shù)中添加顯示代碼。 //任務頁面被選中,則顯示系統(tǒng)信息頁面 ()。 // 關(guān)機 在 Windows 2021 實現(xiàn)“注銷 /重啟 /關(guān)機”功能須取得高級權(quán)限 : LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,amp。 第 9 頁 共 25 頁 RunFileDlg = (RUN)GetProcAddress(hShell32, MAKEINTRESOURCE(61))。 //進程 ID DWORD dwThreadID。 else strRunState = 沒有響應 。 最后把任務信息的每一行 在任務列表 中顯示出來: for(int i=0。//運行狀態(tài) } 結(jié)束任務 結(jié)束任務 操作將調(diào) 用 SendMessageTimeout 函數(shù)向要關(guān)閉的窗口發(fā)送關(guān)閉消 第 11 頁 共 25 頁 息,如果沒有響應則用 TerminateProcess 函數(shù)強行終止該窗口進程。 typedef void (WINAPI *PROCSWITCHTOTHISWINDOW)(HWND,BOOL)。 第 12 頁 共 25 頁 圖 5 進程列表頁面 顯示進程信息 進程信息包括進程圖標,進程名、 進程 ID、 CPU 使用率、內(nèi)存使用率、優(yōu)先級、線程數(shù)、 父進程 ID 和進程路徑等 , 如圖 6。 PROCESSENTRY32 的定義如下: 第 13 頁 共 25 頁 typedef struct tagPROCESSENTRY32{ DWORD dwSize。//優(yōu)先級 DWORD dwFlags。部分主要代碼如下: PDH_STATUS pdhStatus。 要得到進程的內(nèi)存使用率要用到 GetProcessMemoryInfo,首先在 中定義 WINAPI 函數(shù)類型: GETPROCESSMEMORYINFO GetProcessMemoryInfo。//缺頁數(shù) SIZE_T WorkingSetSize。 顯示模塊及線程信息 模塊信息有模塊名、模塊大小、基地址。 DWORD th32ProcessID。 }MODULEENTRY32。//取得指定進程的第一個線程信息將取得的信息填充到 te32 中。 DWORD dwFlags。除了這種進程的正常推出方式外,有時還需要在程序中通過代碼來強制結(jié)束本進程或其他進程的運行。 ExitProcess()只能強制執(zhí)行本進程的退出,如果要在一個進程中強制結(jié)束其他的進程就要用 TerminateProcess()來實現(xiàn)。 要終止進程先要用 OpenProcess 函數(shù)將進程打開,然后用 TerminateProcess 函數(shù)結(jié)束進程。fData)。MemStat)。 GlobalMemoryStatus(amp。 //操作系統(tǒng)的副版本號 DWORD dwBuildNumber。 char Temp[20]。 DWORD cchBuff = 256。 打開 Windows 系統(tǒng)自帶的任務管理器。 第 22 頁 共 25 頁 圖 14 資源使用情況對比圖 結(jié) 論 課題研究設計的進程管理器 能夠顯示任務信息, 顯示進程、線程模塊等信息,能夠結(jié)束任務、 終止進程 ,并能以圖表的形式顯示 CPU、內(nèi)存使用率 ,操作簡單,能基本 滿足用戶對 Windows 進程管理 的需求 。 [4] (美 )Jeffrey Richter. Windows核心編程 [M].北京: 機械工業(yè) 出版社 ,2021。 [6] (美 )John . Visual C++MFC編程實例 [M].北京: 機械工業(yè) 出版社 ,2021。 通過課題的研究, 得出 一個重要結(jié)論: 在 VC++環(huán)境進行 Windows 系統(tǒng)編程,不僅需要熟悉 VC++編程環(huán)境,還需要 熟悉和利用 系統(tǒng)提供給我們的許多編程接口, 即 API 編程,這樣能大大地提高編程效率。 測試結(jié)果 程序在 Windows XP 系統(tǒng)上能正常運行。 lpszSystemInfo = tchBuffer2。 第 20 頁 共 25 頁