




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
(企業(yè)管理工具)簡(jiǎn)述WINDOWS進(jìn)程管理工具的原理和實(shí)現(xiàn)591論文網(wǎng)www.591LW.com簡(jiǎn)述WINDOWS進(jìn)程管理工具的原理和實(shí)現(xiàn)摘要Windows自帶的任務(wù)管理器存在功能上的缺陷,比如不能查看進(jìn)程的模塊及線程信息。課題設(shè)計(jì)就是模擬Windows任務(wù)管理器,開發(fā)一個(gè)功能更完善的WindowsVC++程管理的基本功能。在程序的設(shè)計(jì)過(guò)程中,通過(guò)調(diào)用WindowsAPI函數(shù)而獲得任WindowsXP系統(tǒng)上況提供了很好的參考。關(guān)鍵詞:任務(wù)管理器;線程;進(jìn)程;API591論文網(wǎng)www.591LW.comTheDesignandImplementationoftheProcessesManagementToolforWindowsAbstractTherearesomedefectsintheTaskManagerbuilt-inWindows.Forexample,itdoesn'tshowustheinformationofprocessmodulesandthreads.TheworkofmydesignistofollowtheWindowsTaskManageranddevelopthesoftwarewhichhasimprovedfunctionformanagingprocess.ThissoftwareisdesignedtobeaprogrambasedonadialogwriteintheVC++.Thereisalabelcontrolinthemaindialogbox,andtherearethreepagesfortask,processandsysteminformation.Thelabelcontrolisusedtoselectthepageandtoshowit.Thethreepagesareusedrespectivelytodisplaytheinformationoftaskrunsatcurrent,processandprocessmodules,theutilizationofsystemresources.Thissoftwarealsorealizedsomebasicfunctionformanagingprocess,suchasendingthetask,switchingthetask,terminatingtheprocessandsoon.Duringtheprocessofmyprogram,theinformationfortasks,process,threadmodulesandtheutilizationofsystemresourceisgotbycallingtheWindowsAPIfunctions.FinallyItestitontheWindowsXPsystem.Anditachievesthebasicfunctionformanagingprocess.Itprovidesagoodreferenceforuserstoviewtheprocessatcurrentandtheutilizationofsystemresources.Keywords:TaskManager;Threads;Process;API591論文網(wǎng)www.591LW.com目錄論文總頁(yè)數(shù):25頁(yè)1引言11.1課題背景11.2國(guó)內(nèi)外研究現(xiàn)狀11.3課題研究的意義11.4課題的研究方法11.5進(jìn)程與線程簡(jiǎn)介11.5.1進(jìn)程簡(jiǎn)介11.5.2線程簡(jiǎn)介31.5.3進(jìn)程與線程的關(guān)系31.5.4Windows自帶的任務(wù)管理器分析42主要功能及設(shè)計(jì)思路42.1主要功能42.2設(shè)計(jì)思路53詳細(xì)設(shè)計(jì)53.1主框架的實(shí)現(xiàn)53.1.1子對(duì)話框的顯示63.1.2實(shí)現(xiàn)菜單73.1.3提升程序權(quán)限83.2任務(wù)列表頁(yè)面設(shè)計(jì)83.2.1顯示任務(wù)信息83.2.2結(jié)束任務(wù)93.2.3切換任務(wù)103.3進(jìn)程列表頁(yè)面設(shè)計(jì)103.3.1顯示進(jìn)程信息113.3.2顯示模塊及線程信息133.3.3結(jié)束進(jìn)程153.3.4刪除文件163.3.5保存進(jìn)程信息到文件173.4系統(tǒng)性能頁(yè)面設(shè)計(jì)173.4.1繪制CPU使用率圖173.4.2繪制內(nèi)存使用率圖193.4.3其他性能顯示193.4.4系統(tǒng)信息顯示204測(cè)試結(jié)果214.1測(cè)試環(huán)境214.2測(cè)試方法214.3測(cè)試結(jié)果21結(jié)論23參考文獻(xiàn)23591論文網(wǎng)www.591LW.com1引言1.1課題背景的一些關(guān)于計(jì)算機(jī)操作系統(tǒng)、進(jìn)程、計(jì)算機(jī)安全、編程等知識(shí))的能力,模擬Windows任務(wù)管理器,開發(fā)一個(gè)功能更完善的Windows進(jìn)程管理軟件,對(duì)任務(wù)、進(jìn)程進(jìn)行查看、結(jié)束等操作。1.2國(guó)內(nèi)外研究現(xiàn)狀從現(xiàn)狀看來(lái),Windows技術(shù)都相當(dāng)成熟。微軟Windows操作系統(tǒng)系列(98和ME除外)都自帶有進(jìn)程管理器,但功能不是很完善,不能查看進(jìn)程模塊及線程信息,而許多其他版本的Windows進(jìn)程管理軟件都具有完善的功能。1.3課題研究的意義Windows第1頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com次模擬實(shí)際產(chǎn)品的開發(fā),對(duì)于自己以后工作能力的培養(yǎng)具有重要的意義。1.4課題的研究方法系統(tǒng)使用VC++6.0Windows的任務(wù)管理器進(jìn)行設(shè)計(jì)與開發(fā)。的開發(fā)工具進(jìn)行開發(fā);同時(shí),在開發(fā)設(shè)計(jì)與實(shí)現(xiàn)中,要保存好相關(guān)的設(shè)計(jì)文擋。1.5進(jìn)程與線程簡(jiǎn)介1.5.1進(jìn)程簡(jiǎn)介DLL模塊的代碼和數(shù)據(jù)。它還包含動(dòng)態(tài)內(nèi)存分配的空間。如線程堆棧和堆分配空間。址空間。述。進(jìn)程的靜態(tài)描述由三部份組成:進(jìn)程控件塊PCB,有關(guān)程序段和該程序段對(duì)PCB感知進(jìn)程的存在和通過(guò)PCB中所包含的各項(xiàng)變量的變化,掌握進(jìn)程所處的狀態(tài)以及達(dá)到控制進(jìn)程活動(dòng)的PCB第2頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com作系統(tǒng)中,一個(gè)進(jìn)程的PCB結(jié)構(gòu)都是全部或部分常駐內(nèi)存的。多道操作系統(tǒng)中,這兩部分內(nèi)容存放在外存中,直到該進(jìn)程執(zhí)行時(shí)再調(diào)入內(nèi)存。根據(jù)PCB結(jié)構(gòu)中的狀態(tài)值控制進(jìn)程。已經(jīng)得到除CPU之外的其它資源,只要由調(diào)度得到處理機(jī),便可立即投入執(zhí)行。進(jìn)入就緒狀態(tài),如圖1。圖1進(jìn)程狀態(tài)轉(zhuǎn)換1.5.2線程簡(jiǎn)介用戶程序控制。它用于維護(hù)線程在執(zhí)行代碼時(shí)需要的所有函數(shù)參數(shù)和局部變量TCB組成。寄存器可被用來(lái)存儲(chǔ)線程內(nèi)的局部變量,但不能存儲(chǔ)其它線程的相關(guān)變量。第3頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com基本狀態(tài),存在五種基本操作來(lái)轉(zhuǎn)換線程的狀態(tài)。這五種基本操作是:1、派生:線程在進(jìn)程內(nèi)派生出來(lái),它既可由進(jìn)程派生,也可由線程派生。2、阻塞:如果一個(gè)線程在執(zhí)行過(guò)程中需要等待某個(gè)事件發(fā)生,則被阻塞。3、激活:如果阻塞線程的事件發(fā)生,則該線程被激活并進(jìn)入就緒隊(duì)列。4、調(diào)度:選擇一個(gè)就緒線程進(jìn)入執(zhí)行狀態(tài)。5、結(jié)束:如果一個(gè)線程執(zhí)行結(jié)束,它的寄存器上下文以及堆棧內(nèi)容等將被釋放。1.5.3進(jìn)程與線程的關(guān)系程可能包含若干個(gè)線程,所有這些線程都“同時(shí)”執(zhí)行進(jìn)程地址空間中的代碼。CPU寄由了,系統(tǒng)就將自動(dòng)撤消該進(jìn)程和它的地址空間。CPU時(shí)3顯示了在單個(gè)CPU的計(jì)算機(jī)上是如何實(shí)現(xiàn)這種運(yùn)行方式的。如果計(jì)算機(jī)擁有多個(gè)CPU,那么操作系統(tǒng)就要使用復(fù)雜得多的第4頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com算法來(lái)實(shí)現(xiàn)CPU上線程負(fù)載的平衡。當(dāng)創(chuàng)建一個(gè)進(jìn)程時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建它的第一個(gè)線程,稱為主線程。然后,該線程可以創(chuàng)建其他的線程,而這些線程又能創(chuàng)建更多的線程。1.5.4Windows自帶的任務(wù)管理器分析Windows任務(wù)管理器由性能、進(jìn)程、應(yīng)用程序三大部分組成。其實(shí)這三大部CPU余的數(shù)據(jù)都是由進(jìn)程模塊順便取得的。Windows2000/XP的任務(wù)管理器通過(guò)NtQuerySystemInformation的調(diào)用來(lái)獲CPU在任務(wù)管理器中的幾乎所有信息都是來(lái)自該函數(shù)。NtQuerySystemInformation函數(shù)隸屬,是一個(gè)未公開的函數(shù)。其調(diào)用方式為:NTSTATUSNtQuerySystemInformation(SYSTEM_INFORMATION_CLASSSystemInformationClass,PVOIDSystemInformation,ULONGSystemInformationLength,PULONGReturnLength);SystemInformationClass:在SYSTEM_INFORMATION_CLASS中的枚舉值之一,聲明返回信息的種類;SystemInformation:指到一個(gè)要求返回信息的緩沖區(qū),這個(gè)系統(tǒng)信息變量的尺寸和結(jié)構(gòu)依賴于SystemInformationClass參數(shù)的值;SystemInformationLength:SystemInformation參數(shù)指定的緩沖區(qū)尺寸;ReturnLength:返回值尺寸。Windows2000和WindowsXP在Windows98和WindowsMe第5頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com用復(fù)雜。因此,在此次進(jìn)程管理器的開發(fā)中,將使用其它方法來(lái)獲取各類信息。2主要功能及設(shè)計(jì)思路2.1主要功能設(shè)計(jì)要求實(shí)現(xiàn)的主要功能——進(jìn)程管理功能,具體包括以下內(nèi)容:(1)任務(wù)管理:列出所有當(dāng)前運(yùn)行的窗口程序名、運(yùn)行狀態(tài)等信息;對(duì)它們進(jìn)行終止、切換等操作。(2)進(jìn)程管理:列出所有的Windows進(jìn)程,以及進(jìn)程所在的磁盤絕對(duì)路徑,(3)CPU和用戶名等。2.2設(shè)計(jì)思路在VisualC++6.0環(huán)境設(shè)計(jì)一個(gè)基于對(duì)話框的應(yīng)用程序,類似于Windows自帶的任務(wù)管理器,主窗口上添加一個(gè)標(biāo)簽控件,加入三個(gè)頁(yè)面,分別是:任務(wù)、進(jìn)程和系統(tǒng)性能信息。(可見(jiàn)且有窗口標(biāo)題)進(jìn)行顯示,并能夠?qū)θ蝿?wù)進(jìn)行操作,如:添加新任務(wù),結(jié)束任務(wù),切換任務(wù)等。進(jìn)行顯示,并能夠?qū)嵭薪K止進(jìn)程、進(jìn)程列表保存到文件等操作。第6頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com系統(tǒng)性能頁(yè)面顯示物理內(nèi)存、虛擬內(nèi)存和頁(yè)文件等詳細(xì)使用情況,CPU、內(nèi)CPU使用率和內(nèi)存使用率的圖形,并用列表控件顯示系統(tǒng)當(dāng)前信息(系統(tǒng)名、計(jì)算機(jī)名和當(dāng)前用戶等)。3詳細(xì)設(shè)計(jì)程序主界面如圖2。窗口程序、進(jìn)程及進(jìn)程模塊、系統(tǒng)資源使用情況。圖2主界面3.1主框架的實(shí)現(xiàn)所設(shè)計(jì)的程序是基于對(duì)話框的程序。首先創(chuàng)建一個(gè)基于對(duì)話框的應(yīng)用程序,在主對(duì)話框類PcsMgrDlg三個(gè)頁(yè)面,如圖3。3.每一項(xiàng)時(shí),分別顯示對(duì)應(yīng)頁(yè)面的相關(guān)信息。Style屬性設(shè)為ChildBoard設(shè)為NoneCTaskCProcess,CChart,并定義這三個(gè)類的變量:CTaskm_Task;//任務(wù)第7頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.comCProcessm_Process;//進(jìn)程CChartm_Chart;//圖表并定義一個(gè)圖像列表變量用于存放標(biāo)簽圖標(biāo):CImageListm_ImageList;接下來(lái)就創(chuàng)建子窗口:m_(IDD_TASK,m_());m_(IDD_PROCESS,m_());m_(IDD_CHART,m_());當(dāng)用戶選擇標(biāo)簽中的一項(xiàng)是,為了將對(duì)應(yīng)的對(duì)話框在標(biāo)簽控件中顯示出來(lái),需要在OnShowWindow(BOOLbShow,UINTnStatus)中添加代碼相關(guān)代碼。這樣便可示不同頁(yè)面還需在OnSelchangeMaintab(NMHDR*pNMHDR,LRESULT*pResult)和OnSelchangingMaintab(NMHDR*pNMHDR,LRESULT*pResult)兩函數(shù)中添加顯示代碼。voidCPcsMgrDlg::OnSelchangeMaintab(NMHDR*pNMHDR,LRESULT*pResult){switch(m_()){case0:m_(SW_SHOW);//任務(wù)頁(yè)面被選中,則顯示任務(wù)頁(yè)面m_();break;case1:m_(SW_SHOW);//任務(wù)頁(yè)面被選中,則顯示進(jìn)程頁(yè)面m_();break;第8頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.comcase2:m_(SW_SHOW);//任務(wù)頁(yè)面被選中,則顯示系統(tǒng)信息頁(yè)面m_();break;}}3.1.2實(shí)現(xiàn)菜單WindowsAPI函數(shù)ExitWindowsEx()完成的。但在Windows98和Windows2000實(shí)現(xiàn)稍有不同。ExitWindowsEx()函數(shù)定義格式:BOOLExitWindowsEx(UINTuFlags//操作DWORDdwReason//原因);在Windows98/重啟/關(guān)機(jī)功能將直接調(diào)用ExitWindiwsExExitWindowsEx(EWX_LOGOFF,0);//注銷ExitWindowsEx(EWX_REBOOT,0);//重啟ExitWindowsEx(EWX_SHUTDOWN,0);//關(guān)機(jī)在Windows2000實(shí)現(xiàn)“注銷/重啟/關(guān)機(jī)”功能須取得高級(jí)權(quán)限:LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&[0].Luid);=1;[0].Attributes=SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0第9頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com);ExitWindowsEx(FFlag,0);新建菜單直接調(diào)用系統(tǒng)運(yùn)行對(duì)話框:RUNRunFileDlg;RunFileDlg=(RUN)GetProcAddress(hShell32,MAKEINTRESOURCE(61));開機(jī)自動(dòng)運(yùn)行可在注冊(cè)表的主鍵”HKEY_LOCAL_MACHINE”下的運(yùn)行子鍵”Software\Microsoft\Windows\CurrentVersion\Run”下寫入和刪除一個(gè)鍵值的方法實(shí)現(xiàn)。3.1.3提升程序權(quán)限為了能夠終止所有進(jìn)程,需要提升本進(jìn)程的權(quán)限:1、先調(diào)用GetCurrentProcess函數(shù)取得當(dāng)前進(jìn)程的句柄;2、然后調(diào)用OpenProcessToken打開當(dāng)前進(jìn)程的訪問(wèn)令牌;3、接著調(diào)用LookupPrivilegeValue函數(shù)取得你想提升的權(quán)限的值;4AdjustTokenPrivileges函數(shù)給當(dāng)前進(jìn)程的訪問(wèn)令牌增加權(quán)限。相關(guān)代碼是在CPcsMgrApp類的InitInstance()函數(shù)中添加。3.2任務(wù)列表頁(yè)面設(shè)計(jì)添加新任務(wù),結(jié)束任務(wù),切換任務(wù)等。3.2.1顯示任務(wù)信息列表頁(yè)面中添加一個(gè)列表控件,用于將任務(wù)信息顯示出來(lái),如圖4。第10頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com要的相關(guān)信息:t{CStringstrTaskName;//窗口標(biāo)題DWORDdwProcessID;//進(jìn)程IDDWORDdwThreadID;//線程IDCStringstrRunState;//運(yùn)行狀態(tài)DWORDdwWndHandle;//窗口句柄}TASK_IFNO,*PTASK_INFO;獲取窗口標(biāo)題,使用API標(biāo)準(zhǔn)函數(shù)GetWindowText():chartemp[MAX_PATH];GetWindowText(hwnd,temp,sizeof(temp))獲取進(jìn)程及線程ID:TID=GetWindowThreadProcessId(hwnd,&PID);確定運(yùn)行狀態(tài)是利用SendMessageTimeout向窗口發(fā)送消息而取得:if(SendMessageTimeout(hwnd,WM_SYSCOMMAND,NULL,NULL,SMTO_ABORTIFHUNG,1000,NULL))strRunState="正在運(yùn)行";elsestrRunState="沒(méi)有響應(yīng)";第11頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com然后添加任務(wù)信息到數(shù)組:TASK_IFNOti;=temp;=PID;=TID;=(DWORD)hwnd;=strRunState;pTaskThis->m_(ti);最后把任務(wù)信息的每一行在任務(wù)列表中顯示出來(lái):for(inti=0;i<newCount;i++){m_(i,,i);//任務(wù)名("%d",);m_(i,1,str);//進(jìn)程ID("%d",);m_(i,2,str);//線程IDm_(i,3,);//運(yùn)行狀態(tài)}3.2.2結(jié)束任務(wù)結(jié)束任務(wù)操作將調(diào)用SendMessageTimeout函數(shù)向要關(guān)閉的窗口發(fā)送關(guān)閉消息,如果沒(méi)有響應(yīng)則用TerminateProcess函數(shù)強(qiáng)行終止該窗口進(jìn)程。if(!SendMessageTimeout(hwnd,WM_SYSCOMMAND,SC_CLOSE,NULL,SMTO_BLOC第12頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.comK|SMTO_ABORTIFHUNG,1000,NULL)){HANDLEhProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,);//打開進(jìn)程TerminateProcess(hProcess,1);//強(qiáng)制終止該窗口進(jìn)程CloseHandle(hProcess);}3.2.3切換任務(wù)我們知道,Windows9x/2000中SetForegroundWindow函數(shù)當(dāng)用戶正在操作其他窗口時(shí)是不能強(qiáng)制某個(gè)窗口為前景窗口的,而是激活窗口并調(diào)用FlashWindowEx函數(shù)來(lái)通知用戶。但是很多實(shí)際情況要求將激活窗口的同時(shí)將創(chuàng)建這個(gè)窗口的線程置為前景狀態(tài)。碰到這種情況我們可以使用USER32.DLL中的幾個(gè)未公開API函數(shù)。voidSwitchToThisWindow(HWNDhWnd,//被激活的窗口句柄BOOLbRestore//如果被極小化,則恢復(fù)窗口);typedefvoid(WINAPI*PROCSWITCHTOTHISWINDOW)(HWND,BOOL);PROCSWITCHTOTHISWINDOWSwitchToThisWindow;HMODULEhUser32=GetModuleHandle("user32");SwitchToThisWindow=(PROCSWITCHTOTHISWINDOW)GetProcAddress(hUser32,"SwitchToThisWindow");接下來(lái)只要用任何現(xiàn)存窗口的句柄調(diào)用這個(gè)函數(shù)即可,參數(shù)bRestore指定第13頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com如果窗口極小化,是否恢復(fù)其原狀態(tài)。SwitchToThisWindow(hWnd,TRUE);3.3進(jìn)程列表頁(yè)面設(shè)計(jì)當(dāng)前選擇的進(jìn)程的所以模塊信息,如圖5。第14頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com圖5進(jìn)程列表頁(yè)面3.3.1顯示進(jìn)程信息IDCPU級(jí)、線程數(shù)、父進(jìn)程ID和進(jìn)程路徑等,如圖6。It1、hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);該函數(shù)用于創(chuàng)建一個(gè)系統(tǒng)進(jìn)程快照,取得系統(tǒng)中的所有進(jìn)程的信息。2Process32First(hProcessSnap,&pe32);該函數(shù)取得快照中第一個(gè)進(jìn)程信息,pe32參數(shù)是一個(gè)PROCESSENTRY32結(jié)構(gòu)類型,該函數(shù)將取得的進(jìn)程信息填充到pe32中。PROCESSENTRY32的定義如下:typedefstructtagPROCESSENTRY32{DWORDdwSize;//結(jié)構(gòu)大小DWORDcntUsage;DWORDth32ProcessID;//進(jìn)程IDULONG_PTRth32DefaultHeapID;DWORDth32ModuleID;DWORDcntThreads;//線程計(jì)數(shù)DWORDth32ParentProcessID;//父進(jìn)程ID第15頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.comLONGpcPriClassBase;//優(yōu)先級(jí)DWORDdwFlags;TCHARszExeFile[MAX_PATH];//進(jìn)程路徑}PROCESSENTRY32ID線程數(shù)、父進(jìn)程ID和進(jìn)程路徑等信息。3、BOOLWINAPIProcess32Next(HANDLEhSnapshot,LPPROCESSENTRY32lppe);該函數(shù)取得快照中下一個(gè)進(jìn)程信息,參數(shù)同Process32First函數(shù)。進(jìn)程基本信息的獲取過(guò)程如圖7。取得。Windows性能頭文件(即pdh開給用戶的。部分hCounter,PDH_FMT_LONG,&dwctrType,&fmtValue);//得到格式化數(shù)據(jù),fmtValue即是我們需要得到的CPU使用率數(shù)據(jù)。Windows9X系統(tǒng)上不能通過(guò)以上方法獲得CPU使用率,因此設(shè)計(jì)的該進(jìn)程管理軟件不能獲取9X系統(tǒng)上進(jìn)程的CPU使用率。要得到進(jìn)程的內(nèi)存使用率要用到的函數(shù)GetProcessMemoryInfo,首先在第16頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.comProcess.h中定義WINAPI函數(shù)類型:GETPROCESSMEMORYINFOGetProcessMemoryInfo;,再取得內(nèi)存使用數(shù):PROCESS_MEMORY_COUNTERSpmc;GetProcessMemoryInfo(hProcess,&pmc,sizeof(pmc));dwMemoryUse=;//內(nèi)存使用大小pmc返回進(jìn)程的內(nèi)存使用信息,它是定義的一個(gè)PROCESS_MEMORY_COUNTERS結(jié)構(gòu),定義如下:typedefstruct_PROCESS_MEMORY_COUNTERS{DWORDcb;DWORDPageFaultCount;//結(jié)構(gòu)尺寸SIZE_TPeakWorkingSetSize;//缺頁(yè)數(shù)SIZE_TWorkingSetSize;//當(dāng)前工作集尺寸SIZE_TQuotaPeakPagedPoolUsage;//最高頁(yè)池使用數(shù)SIZE_TQuotaPagedPoolUsage;//當(dāng)前頁(yè)池使用數(shù)SIZE_TQuotaPeakNonPagedPoolUsage;//最高無(wú)頁(yè)池使用數(shù)SIZE_TQuotaNonPagedPoolUsage;//當(dāng)前無(wú)頁(yè)池使用數(shù)SIZE_TPagefileUsage;//當(dāng)前分配頁(yè)文件空間SIZE_TPeakPagefileUsage;//最高分配頁(yè)文件空間}PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS;3.3.2顯示模塊及線程信息ToolHelpAPI函數(shù)便可實(shí)現(xiàn)。主要用到的函數(shù)有:第17頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com1hModuleSnap=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,dwPID)該函數(shù)用于創(chuàng)建指定進(jìn)程的模塊快照。2Module32First(hModuleSnap,&me32);該函數(shù)獲取指定進(jìn)程的第一個(gè)模塊信息,將取得的信息填充到me32中。me32是一個(gè)MODULEENTRY32結(jié)構(gòu)類型,對(duì)它的定義如下:TypedefstructtagMODULEENTRY32{DWORDdwSize;DWORDth32ModuleID;DWORDth32ProcessID;DWORDGlblcntUsage;DWORDProccntUsage;BYTE*modBaseAddr;DWORDmodBaseSize;HMODULEhModule;charszModule[MAX_MODULE_NAME32+1];charszExePath[MAX_PATH];}MODULEENTRY32;3Module32Next(hModuleSnap,&me32)該函數(shù)獲取指定進(jìn)程的下一個(gè)模塊信息。線程信息包括線程ID和線程優(yōu)先級(jí),也是通過(guò)ToolHelpAPI函數(shù)取得。1、hThreadSnap=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);該函數(shù)創(chuàng)建指定進(jìn)程的線程快照,取得所有線程信息。第18頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com2Thread32First(hThreadSnap,&te32);//取得指定進(jìn)程的第一個(gè)線程信息將取得的信息填充到te32中。te32也是一個(gè)數(shù)據(jù)結(jié)構(gòu),它的定義和存放進(jìn)程信息或存放模塊信息的數(shù)據(jù)結(jié)構(gòu)類似。typedefstructtagTHREADENTRY32{DWORDdwSize;//結(jié)構(gòu)體尺寸,必須在調(diào)用前指定DWORDcntUsage;DWORDth32ThreadID;//線程IDDWORDth32OwnerProcessID;//創(chuàng)建該線程的進(jìn)程IDLONGtpBasePri;//基本優(yōu)先級(jí)LONGtpDeltaPri;DWORDdwFlags;}THREADENTRY32,*PTHREADENTRY32;3Thread32Next(hThreadSnap,&te32)//取得指定進(jìn)程的下一個(gè)模塊信息。獲取進(jìn)程模塊的過(guò)程如圖8。圖8模塊信息的獲取3.3.3結(jié)束進(jìn)程的終止方式是進(jìn)程的正常退出,進(jìn)程中的所有線程資源都能夠得到正確的清除。第19頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com程或其他進(jìn)程的運(yùn)行。ExitProcess()函數(shù)即可在進(jìn)程中的某個(gè)線程中使用,并將立即終止本進(jìn)程的運(yùn)行。ExitProcess()函數(shù)原型為:VOIDExitProcess(UINTuExitCode);其參數(shù)uExitCode為進(jìn)程設(shè)置了退出代代碼將不能被執(zhí)行。雖然ExitProcess()函數(shù)可以在結(jié)束進(jìn)程的同時(shí)通知與其相關(guān)聯(lián)的動(dòng)態(tài)鏈接庫(kù),但是由于它的這種執(zhí)行的強(qiáng)制性,使得ExitProcess()函數(shù)在使用上將存在有安全隱患。例如,如果在程序調(diào)用ExitProcess()函數(shù)之前曾用new操作符申請(qǐng)過(guò)一段內(nèi)存,那么將會(huì)由于ExitProcess()函數(shù)的強(qiáng)制性而無(wú)法通過(guò)deleteExitProcess()函數(shù)的強(qiáng)制性和不安全性,在使用時(shí)一定要引起注意。ExitProcess()只能強(qiáng)制執(zhí)行本進(jìn)程的退出,如果要在一個(gè)進(jìn)程中強(qiáng)制結(jié)束其他的進(jìn)程就要用TerminateProcess()來(lái)實(shí)現(xiàn)。與ExitProcess()不同,TerminateProcess的。所以,通常只有在其他任何方法都無(wú)法迫使進(jìn)程退出時(shí)才會(huì)考慮使用TerminateProcessTerminateProcess數(shù)原型:BOOLTerminateProcess(HANDLEhProcess,UINTuExitCode);參數(shù)hProcess和uExitCodeuExitCode0時(shí),在調(diào)用TerminateProcess()殺死進(jìn)程后,Windows1時(shí),殺死進(jìn)程后,Windows不會(huì)再喚醒該進(jìn)程。本程序中的結(jié)束進(jìn)程,是指強(qiáng)制結(jié)束其他應(yīng)用程序運(yùn)行的進(jìn)程,應(yīng)采用第20頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.comTerminateProcessOpenProcess函數(shù)將進(jìn)程打開,然后用TerminateProcess函數(shù)結(jié)束進(jìn)程。HANDLEhProcess=OpenProcess(PROCESS_TERMINATE,FALSE,m_(m_iCurSel));TerminateProcess(hProcess,1);//終止進(jìn)程終止進(jìn)程的流程如圖9。圖9終止進(jìn)程3.3.4刪除文件OpenProcess函數(shù)將進(jìn)程打開,用FindFirstFile找到文件,然后用TerminateProcess函數(shù)結(jié)束進(jìn)程,再刪除該進(jìn)程對(duì)應(yīng)的文件。HANDLEhProcess=OpenProcess(PROCESS_TERMINATE,FALSE,m_(m_iCurSel));HANDLEh=::FindFirstFile(filename,&fData);//查找文件TerminateProcess(hProcess,1);//終止進(jìn)程::DeleteFile();//刪除文件3.3.5保存進(jìn)程信息到文件件中。第21頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com3.4系統(tǒng)性能頁(yè)面設(shè)計(jì)該頁(yè)面主要顯示CPU前用戶名等。3.4.1繪制CPU使用率圖3.4.2繪制內(nèi)存使用率圖取得內(nèi)存使用率可通過(guò)一個(gè)全局內(nèi)存函數(shù)GlobalMemoryStatus實(shí)現(xiàn),該函數(shù)原型為:MEMORYSTATUSMemStat;=sizeof(MEMORYSTATUS);GlobalMemoryStatus(&MemStat);m_ulNewUsges=;繪制圖形也是通過(guò)位圖繪制函數(shù)進(jìn)行繪制,方法和繪制CPU使用率圖一樣。內(nèi)存使用率圖如圖11。圖11內(nèi)存使用率3.4.3其他性能顯示GlobalMemoryStatus函數(shù)得到的。MEMORYSTATUSMemStat;=sizeof(MEMORYSTATUS);GlobalMemoryStatus(&MemStat);//物理內(nèi)存總大小第22頁(yè)共25頁(yè)591論文網(wǎng)www.591LW.com//物理內(nèi)存可用數(shù)//頁(yè)文件總大小//頁(yè)文件可用數(shù)//虛擬內(nèi)存總大小//虛擬內(nèi)存可用數(shù)3.4.4系統(tǒng)信息顯示系統(tǒng)信息包括當(dāng)前操作系統(tǒng)名、用戶名、計(jì)算機(jī)名等。1、獲取操作系統(tǒng)名需要用到微軟標(biāo)準(zhǔn)函數(shù)GetVersionEx()。在windows.h中定義了OSVERSIONINFO結(jié)構(gòu),OSVERSIONINFO結(jié)構(gòu)包含了操作系統(tǒng)的版本信息,包括操作系統(tǒng)的主版本號(hào)、副版本號(hào)、創(chuàng)建號(hào)、以及操作系統(tǒng)平臺(tái)ID號(hào)和關(guān)于操作系統(tǒng)的其他信息。typedefstruct_OSVERSIONINFO{DWORDdwOSVersionInfoSize;//指定該數(shù)據(jù)結(jié)構(gòu)的字節(jié)大小DWORDdwMajorVersion;//操作系統(tǒng)的主版本號(hào)DWORDdwMinorVersion;//操作系統(tǒng)的副版本號(hào)DWORDdwBuildNumber;//操作系統(tǒng)的創(chuàng)建號(hào)DWORDdwPlatformId;//操作系統(tǒng)ID號(hào)TCHARszCSDVersion[128];//關(guān)于操作系統(tǒng)的一些附加信息}OSVERSIONINFO;其中dwPlatformId可為以下值:VER_PLATFORM_WIN32s:標(biāo)識(shí)為Windows3.1;VER_PLATFORM_W
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新疆農(nóng)業(yè)大學(xué)科學(xué)技術(shù)學(xué)院《金屬材料及熱加工技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東圣翰財(cái)貿(mào)職業(yè)學(xué)院《典籍翻譯》2023-2024學(xué)年第二學(xué)期期末試卷
- 炎黃職業(yè)技術(shù)學(xué)院《海洋化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津科技大學(xué)《文化創(chuàng)意產(chǎn)品設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 內(nèi)蒙古呼和浩特市賽罕區(qū)市級(jí)名校2025年初三第四次調(diào)研診斷考試數(shù)學(xué)試題理試題含解析
- 吉林職業(yè)技術(shù)學(xué)院《土壤科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢工商學(xué)院《舞蹈與形體》2023-2024學(xué)年第二學(xué)期期末試卷
- 攀枝花學(xué)院《高速鐵路概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 宜春幼兒師范高等??茖W(xué)?!吨参锉=∨c和諧植保》2023-2024學(xué)年第二學(xué)期期末試卷
- 二零二五版外籍工作人員聘用合同范例
- 2022年四川省阿壩州中考數(shù)學(xué)試卷
- 【年產(chǎn)20萬(wàn)噸丙烯酸工藝設(shè)計(jì)13000字(論文)】
- 分布式光伏經(jīng)濟(jì)評(píng)價(jià)規(guī)范
- 軌道交通噪聲與振動(dòng)控制技術(shù)研究
- 乾坤未定吾皆黑馬+高考沖刺百日誓師主題班會(huì)
- 安徽省合肥市2024屆高三第一次教學(xué)質(zhì)量檢查數(shù)學(xué)試卷及答案
- 2024年四川成都地鐵運(yùn)營(yíng)有限公司招聘筆試參考題庫(kù)含答案解析
- 廣東省地質(zhì)災(zāi)害危險(xiǎn)性評(píng)估實(shí)施細(xì)則(2023年修訂版)
- 《非稅收入征收管理》課件
- 與小三分手的協(xié)議書
- 羊水過(guò)少護(hù)理查房
評(píng)論
0/150
提交評(píng)論