操作系統(tǒng)課程設(shè)計---進程的創(chuàng)建_第1頁
已閱讀1頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  計算機學(xué)院網(wǎng)絡(luò)工程專業(yè)</p><p>  《操作系統(tǒng)課程設(shè)計》報告</p><p><b>  ——進程的創(chuàng)建</b></p><p> ?。?012/2013學(xué)年 第一學(xué)期)</p><p>  2012年 12 月 30日</p><p><b>  目錄&l

2、t;/b></p><p>  第一章 課程設(shè)計概述1</p><p>  1.1 課程設(shè)計的目的與意義1</p><p>  1.1.1 目的1</p><p>  1.1.2 意義1</p><p>  1.2 實驗概述1</p><p>  1.2.1 實驗名稱1<

3、/p><p>  1.2.2 實驗?zāi)康?</p><p>  1.2.3 實驗要求1</p><p>  1.2.4 實驗內(nèi)容2</p><p>  第二章API函數(shù)簡介3</p><p>  2.1 API的定義3</p><p>  2.2 windows API3</p>

4、;<p>  2.3開放API函數(shù)3</p><p>  第三章 相關(guān)API函數(shù)5</p><p>  3.1 CreateProcess()5</p><p>  3.2 GetVersionEX()7</p><p>  3.3 ReleaseMutex()8</p><p>  3.4 E

5、xitProcess()8</p><p>  3.5 GetexitCodeProcess()8</p><p>  3.6 STARTUPINFO結(jié)構(gòu)9</p><p>  3.7 PROCESS_INFORMATION 結(jié)構(gòu)12</p><p>  3.8 GetStartupInfo12</p><p&g

6、t;  3.9 ShowWindow13</p><p>  3.10 InternetGetConnectedState13</p><p>  第四章 實驗結(jié)果與分析14</p><p>  4.1 實驗結(jié)果14</p><p>  4.2 實驗結(jié)果分析16</p><p><b>  結(jié)束語

7、18</b></p><p><b>  參考文獻19</b></p><p><b>  附錄20</b></p><p>  第一章 課程設(shè)計概述</p><p>  1.1 課程設(shè)計的目的與意義</p><p><b>  1.1.1 目的&l

8、t;/b></p><p>  本課程設(shè)計是為了配合操作系統(tǒng)課程的理論教學(xué)而設(shè)置的,目的是通過課程設(shè)計的綜合訓(xùn)練,加強學(xué)生對操作系統(tǒng)概念的實際應(yīng)用技能的訓(xùn)練,提高學(xué)生分析問題和解決問題的能力。</p><p><b>  1.1.2 意義</b></p><p>  本次操作系統(tǒng)課程設(shè)計的主要任務(wù)是進行系統(tǒng)級的程序設(shè)計。本課程設(shè)計是操作系

9、統(tǒng)原理課程的延伸。通過該課程設(shè)計,使學(xué)生更好地掌握操作系統(tǒng)各部分結(jié)構(gòu)、實現(xiàn)機理和各種典型算法,加深對操作系統(tǒng)的設(shè)計和實現(xiàn)思路的理解,培養(yǎng)學(xué)生的系統(tǒng)設(shè)計和動手能力,學(xué)會分析和編寫程序。課程設(shè)計的實施將使學(xué)生在以下幾個方面有所收獲: </p><p>  (1)加深對操作系統(tǒng)原理的理解,提高綜合運用所學(xué)知識的能力; </p><p>  培養(yǎng)學(xué)生自主查閱參考資料的習

10、慣,增強獨立思考和解決問題的能力;</p><p>  (3)通過課程設(shè)計,培養(yǎng)嚴謹?shù)目茖W(xué)態(tài)度和協(xié)作精神。</p><p><b>  1.2 實驗概述</b></p><p>  1.2.1 實驗名稱</p><p>  進程的創(chuàng)建,獲取進程的PID和操作系統(tǒng)的版本信息。</p><p>  1

11、.2.2 實驗?zāi)康?lt;/p><p>  (1)通過編寫程序?qū)崿F(xiàn)進程的創(chuàng)建,使用進程和操作系統(tǒng)的版本信息,進程的終止,使學(xué)生進一步掌握進程調(diào)度的概念,加深對處理機分配的理解。</p><p>  (2)了解Windows 2000/XP中進程(線程)調(diào)度算法,掌握相應(yīng)的與調(diào)度相關(guān)的API函數(shù)。</p><p>  1.2.3 實驗要求</p><p

12、>  (1)Windows 2000 Professional,Visual C++;</p><p>  (2)了解進程的概念,并理解進程的調(diào)度與訪問;</p><p>  (3)程序界面美觀。</p><p>  1.2.4 實驗內(nèi)容</p><p>  在Windows XP,Windows 2000等操作系統(tǒng)下,語言不限,最好為

13、C或者C++,應(yīng)用API函數(shù),編寫進程的創(chuàng)建,進程使用,進程終止操作。</p><p>  第二章API函數(shù)簡介</p><p>  2.1 API的定義</p><p>  API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件的以訪問一組例程的能力,而又無需

14、訪問源碼,或理解內(nèi)部工作機制的細節(jié)。</p><p>  2.2 windows API </p><p>  Windows API是一套用來控制Windows的各個部件的外觀和行為的預(yù)先定義的Windows函數(shù)。用戶的每個動作都會引發(fā)一個或幾個函數(shù)的運行以告訴Windows發(fā)生了什么。</p><p>  這在某種程度上很像Windows的天然代碼。而其他的語言

15、只是提供一種能自動而且更容易的訪問API的方法。當你點擊窗體上的一個按鈕時,Windows會發(fā)送一個消息給窗體,VB獲取這個調(diào)用并經(jīng)過分析后生成一個特定事件。</p><p>  API函數(shù)包含在Windows系統(tǒng)目錄下的動態(tài)連接庫文件中。</p><p>  更易理解來說:Windows系統(tǒng)除了協(xié)調(diào)應(yīng)用程序的執(zhí)行、內(nèi)存的分配、系統(tǒng)資源的管理外,同時他也是一個很大的服務(wù)中心。調(diào)用這個服務(wù)中

16、心的各種服務(wù)(每一種服務(wù)就是一個函數(shù))可以幫助應(yīng)用程序達到開啟視窗、描繪圖形和使用周邊設(shè)備等目的,由于這些函數(shù)服務(wù)的對象是應(yīng)用程序,所以稱之為Application Programming Interface,簡稱API 函數(shù)。WIN32 API也就是MicrosoftWindows 32位平臺的應(yīng)用程序編程接口。 </p><p>  2.3開放API函數(shù)</p><p>  基于互聯(lián)網(wǎng)

17、的應(yīng)用正變得越來越普及,在這個過程中,有更多的站點將自身的資源開放給開發(fā)者來調(diào)用。對外提供的API 調(diào)用使得站點之間的內(nèi)容關(guān)聯(lián)性更強,同時這些開放的平臺也為用戶、開發(fā)者和中小網(wǎng)站帶來了更大的價值。  </p><p>  開放是目前的發(fā)展趨勢,越來越多的產(chǎn)品走向開放。目前的網(wǎng)站不能靠限制用戶離開來留住用戶,開放的架構(gòu)反而更增加了用戶的粘性。在Web 2.0的浪潮到來之前,開放的API 甚至源代碼主要體現(xiàn)在桌面應(yīng)用

18、上,而現(xiàn)在越來越多的Web 應(yīng)用面向開發(fā)者開放了API。   </p><p>  具備分享、標準、去中心化、開放、模塊化的Web 2.0 站點,在為使用者帶來價值的同時,更希望通過開放的API 來讓站點提供的服務(wù)擁有更大的用戶群和服務(wù)訪問數(shù)量。站點在推出基于開放API 標準的產(chǎn)品和服務(wù)后,無需花費力氣做大量的市場推廣,只要提供的服務(wù)或應(yīng)用出色易于使用,其他站點就會主動將開放API 提供的服務(wù)整合到自己的應(yīng)用之中

19、。同時,這種整合API 帶來的服務(wù)應(yīng)用,也會激發(fā)更多富有創(chuàng)意的應(yīng)用產(chǎn)生。   </p><p>  為了對外提供統(tǒng)一的API 接口,需要對開發(fā)者開放資源調(diào)用API 的站點提供開放統(tǒng)一的API接口環(huán)境,來幫助使用者訪問站點的功能和資源。   </p><p>  當然,開放API 的站點為第三方的開發(fā)者提供良好的社區(qū)支持也是很有意義的,這有助于吸引更多的技術(shù)人員參與到開放的開發(fā)平臺中,并開發(fā)

20、出更為有趣的第三方應(yīng)用。視頻云技術(shù)提供商CC視頻開放API接口,用戶可以在自己的網(wǎng)站后臺輕松完成視頻的上傳、視頻播放控制操作,并可批量獲取視頻及平臺信息。</p><p>  第三章 相關(guān)API函數(shù)</p><p>  這個課程設(shè)計是基于API函數(shù)的,下面介紹在這個課程設(shè)計的過程中需要了解并理解的有關(guān)函數(shù)。</p><p>  3.1 CreateProcess()

21、</p><p><b>  定義:</b></p><p>  WIN32API函數(shù)CreateProcess用來創(chuàng)建一個新的進程和它的主線程,這個新進程運行指定的可執(zhí)行文件。</p><p><b>  2)函數(shù)原型:</b></p><p>  BOOL CreateProcess   <

22、;/p><p>  (  LPCTSTRlpApplicationName,   </p><p>  LPTSTRlpCommandLine,   </p><p>  LPSECURITY_ATTRIBUTESlpProcessAttributes,   LPSECURITY_ATTRIBUTESlpThreadAttributes,   </p>

23、<p>  BOOLbInheritHandles,   </p><p>  DWORDdwCreationFlags,   </p><p>  LPVOIDlpEnvironment,   </p><p>  LPCTSTRlpCurrentDirectory,   </p><p>  LPSTARTUPINFOlpSta

24、rtupInfo,   LPPROCESS_INFORMATIONlpProcessInformation   </p><p><b> ?。?;</b></p><p><b>  3)函數(shù)參數(shù):</b></p><p> ?。?)lpApplicationName </p><p>  指向一個

25、NULL結(jié)尾的、用來指定可執(zhí)行模塊的字符串。這個字符串可以是可執(zhí)行模塊的絕對路徑,也可以是相對路徑,在后一種情況下,函數(shù)使用當前驅(qū)動器和目錄建立可執(zhí)行模塊的路徑。   </p><p>  這個參數(shù)可以被設(shè)為NULL,在這種情況下,可執(zhí)行模塊的名字必須處lpCommandLine 參數(shù)的最前面并由空格符與后面的字符分開。 </p><p>  (2)lpCommandLine  </

26、p><p>  指向一個以NULL結(jié)尾的字符串,該字符串指定要執(zhí)行的命令行。   </p><p>  這個參數(shù)可以為空,那么函數(shù)將使用lpApplicationName參數(shù)指定的字符串當做要運行的程序的命令行。如果lpApplicationName和lpCommandLine參數(shù)都不為空,那么lpApplicationName參數(shù)指定將要被運行的模塊,lpCommandLine參數(shù)指定將被運

27、行的模塊的命令行。新運行的進程可以使用GetCommandLine函數(shù)獲得整個命令行。C語言程序可以使用argc和argv參數(shù)。</p><p>  (3)lpProcessAttributes  </p><p>  指向一個SECURITY_ATTRIBUTES結(jié)構(gòu)體,這個結(jié)構(gòu)體決定是否返回的句柄可以被子進程繼承。如果lpProcessAttributes參數(shù)為空(NULL),那么句柄

28、不能被繼承。   </p><p>  在Windows NT中:SECURITY_ATTRIBUTES結(jié)構(gòu)的lpSecurityDescriptor成員指定了新進程的安全描述符,如果參數(shù)為空,新進程使用默認的安全描述符。在Windows95中:SECURITY_ATTRIBUTES結(jié)構(gòu)的lpSecurityDescriptor成員被忽略。   </p><p>  lpThreadAtt

29、ributes   </p><p>  指向一個SECURITY_ATTRIBUTES結(jié)構(gòu)體,這個結(jié)構(gòu)體決定是否返回的指向線程的句柄可以被子進程繼承。如果lpThreadAttributes參數(shù)為空(NULL),那么句柄不能被繼承。   </p><p>  在Windows NT中,SECURITY_ATTRIBUTES結(jié)構(gòu)的lpSecurityDescriptor成員指定了主線程的安

30、全描述符,如果參數(shù)為空,主線程使用默認的安全描述符。</p><p>  在Windows95中:SECURITY_ATTRIBUTES結(jié)構(gòu)的lpSecurityDescriptor成員被忽略。 </p><p>  bInheritHandles  </p><p>  指示新進程是否從調(diào)用進程處繼承了句柄。   </p><p>  如果

31、參數(shù)的值為真,調(diào)用進程中的每一個可繼承的打開句柄都將被子進程繼承。被繼承的句柄與原進程擁有完全相同的值和訪問權(quán)限。  </p><p>  dwCreationFlags   </p><p>  指定附加的、用來控制優(yōu)先類和進程的創(chuàng)建的標志。以下的創(chuàng)建標志可以以除下面列出的方式外的任何方式組合后指定。 </p><p> ?。?)lpEnvironment  &l

32、t;/p><p>  指向一個新進程的環(huán)境塊。如果此參數(shù)為空,新進程使用調(diào)用進程的環(huán)境?!?lt;/p><p>  一個環(huán)境塊存在于一個由以NULL結(jié)尾的字符串組成的塊中,這個塊也是以NULL結(jié)尾的。每個字符串都是name=value的形式。因為相等標志被當做分隔符,所以它不能被環(huán)境變量當做變量名。</p><p>  (8)lpCurrentDirectory</p

33、><p>  指向一個以NULL結(jié)尾的字符串,這個字符串用來指定子進程的工作路徑。這個字符串必須是一個包含驅(qū)動器名的絕對路徑。如果這個參數(shù)為空,新進程將使用與調(diào)用進程相同的驅(qū)動器和目錄。這個選項是一個需要啟動應(yīng)用程序并指定它們的驅(qū)動器和工作目錄的外殼程序的主要條件。   </p><p> ?。?)lpStartupInfo</p><p>  指向一個用于決定新進程的

34、主窗體如何顯示的STARTUPINFO結(jié)構(gòu)體。  </p><p> ?。?0)lpProcessInformation</p><p>  指向一個用來接收新進程的識別信息的PROCESS_INFORMATION結(jié)構(gòu)體。</p><p>  4)返回值:如果函數(shù)執(zhí)行成功,返回非零值。如果函數(shù)執(zhí)行失敗,返回零,可以使用GetLastError函數(shù)獲得錯誤的附加信息。

35、 </p><p>  3.2 GetVersionEX()</p><p>  1)函數(shù)功能:GetVersionEx函數(shù)是獲得操作系統(tǒng)版本號信息的方法,它取代了GetVersion函數(shù)的功能。</p><p><b>  2)函數(shù)原型:</b></p><p>  BOOL GetVersionEx</p>

36、;<p> ?。?LPOSVERSIONINFO lpVersionInformation;//指向版本信息結(jié)構(gòu)體的指針);</p><p>  3)參數(shù)說明:   </p><p>  lpVersionInformation :指向一個OSVERSIONINFO數(shù)據(jù)結(jié)構(gòu)的指針,用于填充操作系統(tǒng)版本信息。在調(diào)用GetVersionEx函數(shù)之前,先將OSVERSIONINFO

37、數(shù)據(jù)結(jié)構(gòu)的dwOSVersionInfoSize成員設(shè)置為為sizeof(OSVERSIONINFO)。 </p><p><b>  4)返回值:  </b></p><p>  如果函數(shù)成功,返回值為非零。如果函數(shù)失敗,返回值為零,為了獲得更多錯誤信息,可調(diào)用GetLastError函數(shù)。如果給OSVERSIONINFO結(jié)構(gòu)體的dwOSVersionInfoSiz

38、e成員指定一個無效值,函數(shù)將失敗。 </p><p>  3.3 ReleaseMutex()</p><p>  1)定義:ReleaseMutex函數(shù)的功能是釋放互斥對象。一個線程釋放了互斥對象后,如果其他進程在等待互斥對象置位,則等待的線程可以得到該互斥對象,等待函數(shù)返回,互斥對象被新的線程所擁有。</p><p><b>  2)函數(shù)原型:<

39、/b></p><p>  BOOL WIANPI ReleaseMutex</p><p><b>  (   </b></p><p>  HANDLE hMutex</p><p><b>  ); </b></p><p>  3)返回值:TRUE表示成功,F(xiàn)A

40、LSE表示失敗。 </p><p>  4)參數(shù)說明:hMutex:HANDLE,制定一個互斥體的句柄。</p><p>  3.4 ExitProcess()</p><p>  1)定義:終止一個進程</p><p>  2)VB聲明:Declare Sub ExitProcess Lib"kernel32" Alia

41、s "ExitProcess" (ByVal uExitCode As Long) </p><p>  3.5 GetexitCodeProcess()</p><p>  1)定義:獲取一個已中斷進程的退出代碼  </p><p><b>  2)函數(shù)原型:</b></p><p>  BOOL

42、WINAPI GetExitCodeProcess</p><p><b>  (</b></p><p>  __in HANDLE hProcess,</p><p>  __out LPDWORD lpExitCode   </p><p><b>  ); </b></p>&

43、lt;p><b>  3)VC聲明:</b></p><p>  BOOL GetExitCodeProcess</p><p><b>  (</b></p><p>  HANDLE hProcess,</p><p>  LPDWORD lpExitCode </p>&l

44、t;p><b> ?。?</b></p><p>  4)參數(shù)說明:hProcess Long,想獲取退出代碼的一個進程的句柄   lpExitCode Long,用于裝載進程退出代碼的一個長整數(shù)變量。如進程尚未中止,則設(shè)為常數(shù)STILL_ACTIVE</p><p>  5)返回值:Long,非零表示成功,零表示失敗。設(shè)置GetLastError  </

45、p><p>  3.6 STARTUPINFO結(jié)構(gòu)</p><p>  STARTUPINFO結(jié)構(gòu),用于指定新進程的主窗口特性。</p><p><b>  1)結(jié)構(gòu)的定義:</b></p><p>  typedef struct _STARTUPINFO </p><p><b>  {

46、</b></p><p><b>  DWORD cb;</b></p><p>  DWORD dwX;</p><p>  DWORD dwY;</p><p>  DWORD dwXSize;</p><p>  DWORD dwYSize; </p><p&

47、gt;  DWORD dwXCountChars;</p><p>  DWORD dwYCountChars;   </p><p>  DWORD dwFillAttribute;   </p><p>  DWORD dwFlags;   </p><p>  WORD wShowWindow;   </p><p&

48、gt;  WORD cbReserved2;   </p><p>  LPBYTE lpReserved2;   </p><p>  HANDLE hStdInput;   </p><p>  HANDLE hStdOutput;   </p><p>  HANDLE hStdError;   </p><p>

49、;  } STARTUPINFO, *LPSTARTUPINFO;</p><p><b>  2)函數(shù)參數(shù)說明:</b></p><p> ?。?)DWORD cb:包含STARTUPINFO結(jié)構(gòu)中的字節(jié)數(shù).如果Microsoft將來擴展該結(jié)構(gòu),它可用作版本控制手段。應(yīng)用程序必須將cb初始化為sizeof(STARTUPINFO)   </p><

50、;p> ?。?)PSTR lpReserved:保留,必須初始化為N U L L   </p><p> ?。?)PSTR lpDesktop:用于標識啟動應(yīng)用程序所在的桌面的名字。如果該桌面存在,新進程便與指定的桌面相關(guān)聯(lián)。如果桌面不存在,便創(chuàng)建一個帶有默認屬性的桌面,并使用為新進程指定的名字。如果lpDesktop是NULL(這是最常見的情況),那么該進程將與當前桌面相關(guān)聯(lián)。  </p>

51、<p> ?。?)PSTR lpTitle:用于設(shè)定控制臺窗口的名稱。如果l p Ti t l e 是N U L L ,則可執(zhí)行文件的名字將用作窗口名   </p><p> ?。?)DWORD dwX:用于設(shè)定應(yīng)用程序窗口在屏幕上應(yīng)該放置的位置的x 和y 坐標(以像素為單位)。   </p><p> ?。?)DWORD dwY:只有當子進程用CW_USEDEFAULT作為Cr

52、eateWindow的x參數(shù)來創(chuàng)建它的第一個重疊窗口時,才使用這兩個坐標。若是創(chuàng)建控制臺窗口的應(yīng)用程序,這些成員用于指明控制臺窗口的左上角   </p><p>  (7)WORD dwXSize和DWORD dwYSize:用于設(shè)定應(yīng)用程序窗口的寬度和長度(以像素為位)</p><p> ?。?)DWORD dwXCountChars:用于設(shè)定子應(yīng)用程序的控制臺窗口的寬度和高度(以字符為

53、單位)   </p><p>  (9)DWORD dwYCountChars和DWORD dwFillAttribute://用于設(shè)定子應(yīng)用程序的控制臺窗口使用的文本和背景顏色   </p><p> ?。?0)WORD wShowWindow:用于設(shè)定子應(yīng)用程序初次調(diào)用的S h o w Wi n do w 將S W _ S H O W D E FA U LT 作為n C m d S h

54、 o w 參數(shù)傳遞時,該應(yīng)用程序的第一個重疊窗口應(yīng)該如何出現(xiàn)。  </p><p> ?。?1)WORD cbReserved2:保留。必須被初始化為0   </p><p> ?。?2)PBYTE lpReserved2:保留。必須被初始化為N U L L </p><p>  3.7 PROCESS_INFORMATION 結(jié)構(gòu)</p><p

55、>  在創(chuàng)建進程時相關(guān)的數(shù)據(jù)結(jié)構(gòu)之一,該結(jié)構(gòu)返回有關(guān)新進程及其主線程的信息。</p><p>  1)結(jié)構(gòu)定義如下:   </p><p>  typedef struct_PROCESS_INFORMATION</p><p><b>  {</b></p><p>  HANDLE hProcess;   &l

56、t;/p><p>  HANDLE hThread;</p><p>  DWORD dwProcessId;</p><p>  DWORD dwThreadId;</p><p>  }PROCESS_INFORMATION; </p><p><b>  2)成員函數(shù)說明:</b></p&

57、gt;<p>  (1)hProcess:返回新進程的句柄。   </p><p> ?。?)hThread:返回主線程的句柄。   </p><p> ?。?)dwProcessId:返回一個全局進程標識符。該標識符用于標識一個進程。從進程被創(chuàng)建到終止,該值始終有效。   </p><p> ?。?)dwThreadId:返回一個全局線程標識符。該標

58、識符用于標識一個線程。從線程被創(chuàng)   建到終止,該值始終有效。</p><p>  3.8 GetStartupInfo</p><p><b>  函數(shù)功能:</b></p><p>  該函數(shù)返回進程在啟動時被指定的 STARTUPINFO 結(jié)構(gòu)。</p><p><b>  2)函數(shù)原型</b>

59、;</p><p>  VOID GetStartupInfo( LPSTARTUPINFO lpStartupInfo); </p><p><b>  3)參數(shù)說明:</b></p><p>  lpStartupInfo :用來存放要獲取的 STARTUPINFO 結(jié)構(gòu)   </p><p>  4)返回值 :該函

60、數(shù)沒有返回值 </p><p>  3.9 ShowWindow</p><p>  1)函數(shù)功能:該函數(shù)設(shè)置指定窗口的顯示狀態(tài)。 </p><p>  2)函數(shù)原型:BOOL ShowWindow(HWND hWnd, int nCmdShow);</p><p>  3)返回值:如果窗口當前可見,則返回值為非零。如果窗口當前被隱藏,則返回

61、值為零。</p><p>  3.10 InternetGetConnectedState</p><p>  1)函數(shù)功能:用以返回本地系統(tǒng)的網(wǎng)絡(luò)連接狀態(tài)。</p><p><b>  2)函數(shù)原型:</b></p><p>  BOOL InternetGetConnectedState</p><

62、;p>  ( __out LPDWORD lpdwFlags, </p><p>  __in DWORD dwReserved,);</p><p><b>  函數(shù)參數(shù)說明:</b></p><p>  lpdwFlags:指向一個變量,該變量接收連接描述內(nèi)容。該參數(shù)在函數(shù)返回FLASE時仍可以返回一個有效的標記。</p>

63、<p><b>  返回值</b></p><p>  當存在一個modem或一個LAN連接時,返回TRUE,當不存在internet連接或所有的連接當前未被激活時,返回false。</p><p><b>  實驗結(jié)果與分析</b></p><p><b>  4.1 實驗結(jié)果</b>

64、</p><p>  進程的創(chuàng)建,創(chuàng)建的是在聯(lián)網(wǎng)和未聯(lián)網(wǎng)的狀態(tài)下分別調(diào)用IE瀏覽器的進程。如下圖4.1和4.2所示,是在聯(lián)網(wǎng)情況下的運行結(jié)果。</p><p>  調(diào)用InternetGetConnectedState()函數(shù),檢測到網(wǎng)絡(luò)已經(jīng)連接,輸出結(jié)果如下圖4.1所示:</p><p><b>  圖4.1 運行結(jié)果</b></p&g

65、t;<p>  在聯(lián)網(wǎng)情況下,成功調(diào)用IE瀏覽器進程,輸出結(jié)果如下圖4.2所示:</p><p><b>  圖4.2 運行結(jié)果</b></p><p>  調(diào)用InternetGetConnectedState()函數(shù),檢測到網(wǎng)絡(luò)沒有連接,輸出結(jié)果如下圖4.2所示: </p><p><b>  圖4.3 運行結(jié)果&

66、lt;/b></p><p>  在未聯(lián)網(wǎng)狀態(tài)下,網(wǎng)頁打不開,輸出結(jié)果如下圖4.2所示:</p><p><b>  圖4.4 運行結(jié)果</b></p><p>  4.2 實驗結(jié)果分析</p><p>  這次的課程設(shè)計做的是簡單的“進程的創(chuàng)建”,雖然簡單,不如其他同學(xué)的難,但是在這期間也遇見了一些問題。首先就是

67、老師為了讓我們多了解一些知識,要求運用API函數(shù),所以,在理解復(fù)雜的API函數(shù)過程中就出現(xiàn)了不能理解、不會自由靈活運用的情況,在用API函數(shù)編程的過程中,由于對API知識的不熟悉,期間出了許多錯誤,下面是在程序基本完成的時候出的錯誤。</p><p>  在編譯的時候沒有出錯(如圖5.1所示):</p><p>  圖5.1 編譯時的輸出</p><p>  但是在

68、組建的時候就會顯示如下信息(如圖5.2和5.3所示):</p><p>  圖5.2 組建時的輸出</p><p><b>  圖5.3 錯誤顯示</b></p><p>  經(jīng)過請教其他同學(xué),在“工程 選項”中添加“wininet.lib”之后,就可以執(zhí)行了。這個問題,我在網(wǎng)上查了,并沒有得到明確的說法,所以,現(xiàn)在,我的理解就是,在連接過程中

69、出了一些問題,加上的“wininet.lib”就相當于頭文件之類的。</p><p>  圖5.4 進行的修改</p><p>  這次課程設(shè)計讓我對編程有了另外的一些看法。我的動手能力不強,沒有自己編過什么程序,主要還是因為感覺上太難了,不敢動手做,而現(xiàn)在,我覺得,只要自己動手做了,慢慢的也就會了。</p><p><b>  結(jié)束語</b>

70、</p><p>  這次的課程設(shè)計,在趙靜老師的指導(dǎo)與幫助下,通過查找資料,在實踐中對各種概念和基本知識有了進一步的認識與掌握。我做的課題是“進程的創(chuàng)建”,主要用到了API函數(shù)和VC語言。這次課程設(shè)計不僅幫我重新溫習了VC,還讓我對API函數(shù)有了一些認識和一定程度的理解。</p><p>  “千里之行,始于足下”,通過這次課程設(shè)計,我對這句話的含義又有了更深一層的理解。我做的是一個再簡

71、單不過的進程的創(chuàng)建,可是,其中的每一個函數(shù)模塊,每一個函數(shù),甚至每一個函數(shù)變量,都需要仔細、認真的考慮,只有把這些小事情都做好了,才能夠把整個程序?qū)懗鰜怼?lt;/p><p>  還有一點就是,我也著實認識到,將來走上社會,動手能力很關(guān)鍵。通過這次實踐訓(xùn)練,提高了我綜合運用知識的能力和水平。</p><p>  在此特別感謝趙靜老師的指導(dǎo)與幫助。趙老師嚴謹細致、一絲不茍的工作作風值得我在將來的

72、學(xué)習與工作中學(xué)習。</p><p><b>  參考文獻</b></p><p>  【1】范文慶、周彬彬、安靖等,Windows API-函數(shù)、借口、編程實例,人民郵電出版社,2009年</p><p>  【2】譚浩強,C++程序設(shè)計,清華大學(xué)出版社,2004年</p><p>  【3】郁紅英、李春強,計算機操作系

73、統(tǒng)實驗指導(dǎo),清華大學(xué)出版社,2008年</p><p><b>  附錄</b></p><p><b>  程序源代碼如下:</b></p><p>  #include<windows.h>//頭文件</p><p>  #include<Wininet.h></p

74、><p>  #include<iostream></p><p>  using namespace std;</p><p>  int main()</p><p><b>  {</b></p><p><b>  int i;</b></p>

75、<p>  STARTUPINFO si; //進程啟動時需要初始化的結(jié)構(gòu)</p><p>  PROCESS_INFORMATION pi; //進程啟動后的有關(guān)信息</p><p>  si.cb = sizeof(si);//設(shè)置結(jié)構(gòu)的大小,cb屬性應(yīng)為結(jié)構(gòu)的大小</p><p>  GetStartupInfo(&si); //檢查啟動信息

76、</p><p>  si.wShowWindow = SW_SHOW;//這里設(shè)置窗口為顯示,SW_HIDE為隱藏窗口</p><p>  si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;</p><p>  i=CreateProcess(NULL,//lpApplicationName輸入?yún)?shù),

77、指向啟動進程的exe文件</p><p>  "C://Program Files//Internet Explorer//IEXPLORE.EXE",//lpCommandLine輸入?yún)?shù)啟</p><p><b>  動進程的命令行</b></p><p>  NULL,//指向SECURITY_ATTRIBUTES結(jié)構(gòu)

78、變量,為進程的安全屬性,設(shè)置為NULL</p><p><b>  則表示默認安全屬性</b></p><p>  NULL,//輸入?yún)?shù),進程句柄是否可被子進程繼承,設(shè)置為NULL,則不會繼承</p><p>  FALSE,//不繼承句柄</p><p>  NULL,//輸入?yún)?shù),指向心進程的環(huán)境變量塊,設(shè)置為NU

79、LL,則使用父進程的環(huán)境變</p><p><b>  量</b></p><p>  NULL,//輸入?yún)?shù),指向創(chuàng)建后心進程的當前目錄,設(shè)置為NULL,則為父進程的</p><p><b>  當前目錄</b></p><p>  NULL,//輸入?yún)?shù),進程的創(chuàng)建標志和優(yōu)先級控制</p&

80、gt;<p>  &si,//輸入?yún)?shù),指向STARTUPINFO數(shù)據(jù)結(jié)構(gòu)變量,設(shè)定啟動信息</p><p>  &pi);//輸出參數(shù),指向PROCESS_INFORMATION 的結(jié)構(gòu)變量,返回被創(chuàng)建的進程</p><p>  信息DWORD dwFlags=0;//判斷當前網(wǎng)絡(luò)的連接狀態(tài)</p><p>  if(Internet

81、GetConnectedState(&dwFlags,0)&&i!=0)</p><p><b>  {</b></p><p>  cout<<"*******************************"<<endl;</p><p>  cout<<&qu

82、ot;當前網(wǎng)絡(luò)已連接,請放心使用!"<<endl;</p><p>  cout<<"*******************************"<<endl;</p><p><b>  }</b></p><p><b>  else</b><

83、/p><p><b>  {</b></p><p>  cout<<"************************************"<<endl;</p><p>  cout<<"當前網(wǎng)絡(luò)未連接,請檢查網(wǎng)絡(luò)連接情況!"<<endl;</p&

84、gt;<p>  cout<<"************************************"<<endl;</p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論