【正文】
ed respectively to display the information for task runs for the current,process and process modules,the utilization of system 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 programe,I get the information for tasks,process,thread modules and the utilization of system resource by calling the Windows API I test it on the Windows xp it achieves the basic function for managing provides a good reference for users to view the process current and the utilization of system resources. Key words: Task Manager。 國內(nèi)外研究現(xiàn)狀 從現(xiàn)狀看來 ,Windows 進(jìn)程管理工具及其理論的研究 ,無論是國外還是國內(nèi) ,技術(shù)都相當(dāng)成熟。因此 ,本次畢業(yè)設(shè) 計(jì)應(yīng)首先分析進(jìn)程管理器軟件的相關(guān)功能 。 進(jìn)程是一個(gè)動(dòng)態(tài)的執(zhí)行過程 ,它動(dòng)態(tài)地被創(chuàng)建 ,并被調(diào)度執(zhí)行后消亡。而數(shù)據(jù)結(jié)構(gòu)集是程序在執(zhí)行時(shí)必不可少的工作區(qū)和操作對象。處于等待狀態(tài)的進(jìn)程因等待的事件發(fā)生而被喚醒進(jìn)入就緒狀態(tài) ,如圖 1。這五種基本操作是 : 派生 :線程在進(jìn)程內(nèi)派生出來 ,它既可由進(jìn)程派生 ,也可由線程派生。 線程與資源分配無關(guān) ,它屬于某一個(gè)進(jìn)程 ,并與進(jìn)程內(nèi)的其它線程一起共享進(jìn)程的資源。如果計(jì)算機(jī)擁有多個(gè) CPU,那么操作系統(tǒng)就要使用復(fù)雜得多的算法來實(shí)現(xiàn) CPU 上線程負(fù)載的平衡。其調(diào)用方式為 : NTSTATUS NtQuerySystemInformationSYSTEM_INFORMATION_CLASS SystemInformationClass,PVOID SystemInformation, ULONG SystemInformationLength,PULONG ReturnLength。 主要功能及設(shè)計(jì)思路 主要功能 本設(shè)計(jì)要求實(shí)現(xiàn)的主要功能 ??進(jìn)程管理功能 ,具體包括以下內(nèi)容 : 1 任務(wù)管理 :列出所有當(dāng)前運(yùn)行的窗口程序名、運(yùn)行狀態(tài)等信息 。顯示系統(tǒng)當(dāng)前信息 ,包括系統(tǒng)名、計(jì)算機(jī)名和用戶名等。 圖 3 標(biāo)簽控件 子對話框的顯示 子對話框的顯示與切換 ,是通過標(biāo)簽控件完成的。 ,。 //任務(wù)頁面被選中 ,則顯示進(jìn)程頁面 。 在 Windows 98 實(shí)現(xiàn)“注銷 /重啟 /關(guān)機(jī)”功能將直接調(diào)用 ExitWindiwsEx函數(shù) : ExitWindowsExEWX_LOGOFF,0。tkp,0,PTOKEN_PRIVILEGESNULL,0。 最后調(diào)用 AdjustTokenPrivileges 函數(shù)給當(dāng)前進(jìn)程的訪問令牌增加權(quán)限。 //線程 ID CString strRunState。 添加任務(wù)信息到數(shù)組 : TASK_IFNO ti。inewCount。 ,2,str。碰到這種情況我們可以使用 中的幾個(gè)未公開 API 函數(shù)。 進(jìn)程列表頁面設(shè)計(jì) 該頁面主要實(shí)現(xiàn)顯示當(dāng)前系統(tǒng)正在運(yùn)行的所有進(jìn)程并對其進(jìn)程管理 ,如結(jié)束進(jìn)程 ,顯示進(jìn)程模塊信息 ,顯示進(jìn)程線程信息 ,保存進(jìn)程信息在網(wǎng)頁文件中等功能。 BOOL WINAPI Process32FirstHANDLE hSnapshot,LPPROCESSENTRY32 lppe。 Process32FirsthProcessSnap, amp。 該函數(shù)獲取指定進(jìn)程的第一個(gè)模塊信息。 Module32First hModuleSnap,amp。除了這種進(jìn)程的正常推出方式外 ,有時(shí)還需要在程序中通過代碼來強(qiáng)制結(jié)束本進(jìn)程或其他進(jìn)程的運(yùn)行。 ExitProcess()只能強(qiáng)制執(zhí)行本進(jìn)程的退出 ,如果要在一個(gè)進(jìn)程中強(qiáng)制結(jié)束其他的進(jìn)程就要用 TerminateProcess()來實(shí)現(xiàn)。 本程序中的結(jié)束進(jìn)程 ,是指強(qiáng)制結(jié)束其他應(yīng)用程序運(yùn)行的進(jìn)程 ,應(yīng)采用TerminateProcess()強(qiáng)制結(jié)束。 HANDLE h::FindFirstFilefilename,amp。為此我們必須讀取相關(guān)的注冊表鍵值。 sizeofMEMORYSTATUS。 //操作系統(tǒng)的主版本號(hào) DWORD dwMinorVersion。 VER_PLATFORM_WIN32_NT:標(biāo)識(shí)為 WindowsNT。lLength。//計(jì)算機(jī)名 測試結(jié)果 本程序在 Window XP 中進(jìn)行測試能正常運(yùn)行 ,能實(shí)現(xiàn)對任務(wù)信息的查看、結(jié)束任務(wù)和新建任務(wù)等 。 參考文獻(xiàn) [1] 湯子瀛 ,哲 風(fēng)屏 ,湯小丹 . 計(jì)算機(jī)操作系統(tǒng) [M].西安 :西安電子科大出版社 ,2020。但有些進(jìn)程管理的高級功能還未在設(shè)計(jì)之中 ,如對進(jìn)程模塊 (DLL 文件 )的卸載與加載等。 TCHAR tchBuffer2[256]。 CString UserName。 //關(guān)于操作系統(tǒng)的一些附加信息 OSVERSIONINFO。 獲取操作系統(tǒng)名需要用到微軟標(biāo)準(zhǔn)函數(shù) GetVersionEx。繪制圖形也是通過位圖繪制函數(shù)進(jìn)行繪制。//刪除文件 保存進(jìn)程信息到文件 用文件類創(chuàng)建一個(gè) 6html 文件 ,將當(dāng)前進(jìn)程列表中的各項(xiàng)信息按照網(wǎng)頁格式寫入文件中。//終止進(jìn)程 終止進(jìn)程的流程如圖 9。下面給出 TerminateProcess()的函數(shù)原型 : BOOL TerminateProcessHANDLE hProcess,UINT uExitCode。該函數(shù)具有強(qiáng)制性 ,在執(zhí)行完畢后進(jìn)程即已經(jīng)被結(jié)束 ,因此位于其后的任何代碼將不能被執(zhí)行。te32 //取得第一個(gè)線程信息 Thread32NexthThreadSnap, amp。 該函數(shù)取得與指定進(jìn)程相關(guān)的第一個(gè)線程的信息。 //進(jìn)程路徑 (NT、 2020 或 XP) 顯示模塊及線程信息 模塊及線程信息有模塊名、模塊大小、基地址、線程 ID 和線程優(yōu)先級。 進(jìn)程信息的獲取過程如圖 7。要使用該類接口函數(shù)需要包含頭文件。 HMODULE hUser32 GetModuleHandleuser32。//打開進(jìn)程 TerminateProcesshProcess,1。 ,i。 DWORDhwnd。 GetWindowTexthwnd,temp,sizeoftemp 獲取進(jìn)程及線程 ID: TIDGetWindowThreadProcessIdhwnd,amp。在這里我們將在任務(wù)列表頁面中添加一個(gè)列表控件 ,用于將任務(wù)信息顯示出來 ,如圖 4。 開機(jī)自動(dòng)運(yùn)行可在注冊表的主鍵” HKEY_LOCAL_MACHINE”下的運(yùn)行子鍵”Software\Microsoft\Windows\CurrentVersion\Run”下寫入和刪除一個(gè)鍵 值的方法實(shí)現(xiàn)。[0].Luid。 break。 void CPcsMgrDlg::OnSelchangeMaintabNMHDR* pNMHDR, LRESULT* pResult case 0:。 //任務(wù) CProcess m_Process。 系統(tǒng)性能頁面顯示物理內(nèi)存、虛擬內(nèi)存和頁文件等詳細(xì)使用情況 ,CPU、內(nèi)存的使用率 ,并繪制 CPU 使用率和內(nèi)存使用率的圖形 ,并用列表控件顯示系統(tǒng)當(dāng)前信