科技學院
課程設計(綜合實驗)報告
( 2013 -- 2014 年度第 2 學期)
名稱: windows體系程式設計
題目: 課內綜合實驗
院系: 資訊工程系
班級: 計算機11k1
學號學生姓名
指導教師: 王新穎
實驗學時: 12學時
成績日期: 2023年 6月 6日
實驗一類windows程序任務管理器實驗
一、實驗目的
理解windows程式設計環境下的程序管理機制,能建立乙個完成特定功能的程序,並能對程序進行資訊的獲取、終止和保護,實現乙個類windows的程序任務管理器。
二、實驗要求
程式可為控制台或帶介面應用程式,要求有較好的使用者體驗,完成功能:
1. 能夠完成建立程序的功能,列印輸出新建程序id。
2. 獲取當前系統程序資訊,列出可選顯示程序資訊項,根據選擇顯示輸出程序資訊。
3. 終止任意程序並獲取退出**。
4. 具體實現技術不限。
三、實驗原理
(1)程序的建立
程序的建立通過createprocess()函式來實現,createprocess()通過建立乙個新的程序及在其位址空間內執行的主線程來啟動並執行乙個新的程式。具體地,在執行createprocess()函式時,首先由作業系統負責建立乙個程序核心物件,初始化計數為1,並立即為新程序建立一塊虛擬位址空間。隨後將可執行檔案或其他任何必要的動態鏈結庫檔案的**和資料裝載到該位址空間中。
在建立主線程時,也是首先由系統負責建立乙個執行緒核心物件,並初始化為1。最後啟動主線程並執行程序的入口函式winmain(),完成對程序和執行執行緒的建立。
createprocess()函式的原型宣告如下:
bool createprocess(
lpctstr lpapplicationname可執行模組名
lptstr lp***mandline命令列字串
lpsecurity_attributes lpprocessattributes程序的安全屬性
lpsecurity_attributes lpthreadattributes執行緒的安全屬性
bool binherithandles控制代碼繼承標誌
dword dwcreationflags建立標誌
lpvoid lpenvironment指向新的環境塊的指標
lpctstr lpcurrentdirectory指向當前目錄名的指標
lpstartupinfo lpstartupinfo指向啟動資訊結構的指標
lpprocess_information lpprocessinformation // 指向程序資訊結構的指標
);(2)程序的獲取
程序的定義是為執行程式指令的執行緒而保留的一系列資源的集合。程序是乙個可執行的程式,由私有虛擬位址空間、**、資料和其他作業系統資源(如程序建立的檔案、管道、同步物件等)組成。程序是一些所有權的集合,乙個程序擁有記憶體、cpu執行時間等一系列資源,為執行緒的執行提供乙個環境,每個程序都有它自己的位址空間和動態分配的記憶體、執行緒、檔案和其他一些模組。
系統快照的獲取可以通過win32 api函式createtoolhelp32snapshot()來完成,通過該函式不僅可以獲取程序的快照,同樣可以獲取堆、模組和執行緒的系統快照。函式的宣告如下:
handle winapi createtoolhelp32snapshot(
dword dwflags指定要建立包含哪一類系統資訊的快照函式
dword th32processid指定程序的id號,當設定為0時表示指定當前程序
);一旦系統得到系統快照控制代碼,就可以對當前的標識號進行列舉,程序號通過函式process32first()和procee32next()得到,這兩個函式可以用於獲取系統快照中第乙個和下乙個系統的資訊,這兩個函式的宣告如下:
bool winapi process32first(
handle hsnapshot系統快照控制代碼
lpprocessentry32 lppe指向結構體processentry32的指標
);bool winapi process32next(
handle hsnapshot系統快照控制代碼
lpprocessentry32 lppe指向結構體processentry32的指標
);(3)程序的終止
終止程序也就是結束程序,讓程序從記憶體中解除安裝。程序的終止的原因一般有4種。
1) 主線程的入口函式返回。
2) 程序中的乙個執行緒呼叫exitprocess函式。
3) 次程序中的所有執行緒結束。
4) 其他程序中又有執行緒都結束。
要結束當前程序一般讓主線程的入口函式返回。當使用者的程式入口函式返回的時候,啟動函式會呼叫c/c++執行期退出函式exit,並將使用者的返回值傳遞給它。exti函式會銷毀所有全域性的或靜態的c++物件,然後呼叫系統函式exitprocess促使作業系統終止應用程式。
exitprocess是乙個api函式,它會結束當前應用程式的執行,並設定退出**,函式宣告如下:
void exitprocess(uint uexitcode); //引數uexitcode為此程式的退出**
四、實驗所需儀器、裝置、材料(試劑)
windows作業系統,microsoft visual c++6.0或.***環境,msdn幫助文件。
五、實驗**
#include
#include
#include // 宣告快照函式的標頭檔案
int createprocess();
process_information pi;
si.dwflags = startf_useshowwindow; // 指定wshowwindow成員有效
si.wshowwindow = true此成員設為true的話則顯示新建程序的主視窗,
為false的話則不顯示
bool bret = ::createprocess (
null不在此指定可執行檔案的檔名
sz***mandline命令列引數
null預設程序安全性
null預設執行緒安全性
false指定當前程序內的控制代碼不可以被子程序繼承
create_new_console, // 為新程序建立乙個新的控制台視窗
null使用本程序的環境變數
null使用本程序的驅動器和目錄
&si,
&pi);
if(bret)
return 0;
}int listprocess()
// 遍歷程序快照,輪流顯示每個程序的資訊
bool bmore = ::process32first(hprocesssnap, &pe32);
while(bmore)
// 不要忘記清除掉snapshot物件
::closehandle(hprocesssnap);
return 0;
}bool terminateprocessfromid(dword dwid)
closehandle(hprocess);
return bret;
華北電力大學科技學院數值計算方法上機報告
華北電力大學科技學院 數值計算方法上機報告 姓名 g p 班級 農電12k1 學號 2014年11月28日 實驗程式為 實驗一 include stdio.h include math.h define n 30 void main 實驗二 include stdio.h include math....
華北電力大學專案介紹
一 專案名稱 火電廠廠級執行效能 診斷及優化控制系統 二 專案簡介 火電廠廠級執行效能 診斷及優化控制系統 從火電廠全廠整體綜合優化執行的角度出發,通過對其所屬多台機組的執行狀態進行連續監視 經濟分析 診斷以及優化控制,達到穩定 節能的目的。本專案由西安熱工研究院和華北電力大學共同協作完成並獲200...
matlab總結華北電力大學
gui 圖形使用者介面是指有各種圖形物件,如由選單欄 控制項等組成的使用者介面。通過 選擇 各種影象物件來實現對程式功能的控制。matlab的gui的基本圖形物件包括控制物件和選單物件。再設計使用者介面時,應選擇恰當的圖形物件,並將它們有邏輯地組織起來,使得介面容易操作和使用。guide控制板,屬性...