日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STARTUPINFO结构

發(fā)布時(shí)間:2023/12/1 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STARTUPINFO结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.結(jié)構(gòu)原型

typedef struct _STARTUPINFO {

  DWORD cb;

  LPTSTR lpReserved;

  LPTSTR lpDesktop;

  LPTSTR lpTitle;

  DWORD dwX;

  DWORD dwY;

  DWORD dwXSize;

  DWORD dwYSize;

  DWORD dwXCountChars;

  DWORD dwYCountChars;

  DWORD dwFillAttribute;

  DWORD dwFlags;

  WORD wShowWindow;

  WORD cbReserved2;

  LPBYTE lpReserved2;

  HANDLE hStdInput;

  HANDLE hStdOutput;

  HANDLE hStdError;

  } STARTUPINFO, *LPSTARTUPINFO;

2.參數(shù)說明

STARTUPINFO結(jié)構(gòu) 該結(jié)構(gòu)用于指定新進(jìn)程的主窗口特性 

  DWORD cb; //包含STARTUPINFO結(jié)構(gòu)中的字節(jié)數(shù).如果Microsoft將來擴(kuò)展該結(jié)構(gòu),它可用作版本控制手段.

  應(yīng)用程序必須將cb初始化為sizeof(STARTUPINFO)

  PSTR lpReserved; //保留。必須初始化為N U L L

  PSTR lpDesktop; //用于標(biāo)識(shí)啟動(dòng)應(yīng)用程序所在的桌面的名字。如果該桌面存在,新進(jìn)程便與指定的桌面相關(guān)聯(lián)。

  如果桌面不存在,便創(chuàng)建一個(gè)帶有默認(rèn)屬性的桌面,并使用為新進(jìn)程指定的名字。

  如果lpDesktop是NULL(這是最常見的情況),那么該進(jìn)程將與當(dāng)前桌面相關(guān)聯(lián)

  PSTR lpTitle; //用于設(shè)定控制臺(tái)窗口的名稱。如果l p Ti t l e 是N U L L ,則可執(zhí)行文件的名字將用作窗口名

  DWORD dwX; //用于設(shè)定應(yīng)用程序窗口在屏幕上應(yīng)該放置的位置的x 和y 坐標(biāo)(以像素為單位)。

  DWORD dwY; 只有當(dāng)子進(jìn)程用CW_USEDEFAULT作為CreateWindow的x參數(shù)來創(chuàng)建它的第一個(gè)重疊窗口時(shí),

  才使用這兩個(gè)坐標(biāo)。若是創(chuàng)建控制臺(tái)窗口的應(yīng)用程序,這些成員用于指明控制臺(tái)窗口的左上角

  DWORD dwXSize; //用于設(shè)定應(yīng)用程序窗口的寬度和長度(以像素為單位)只有dwYsize

  DWORD dwYSize; 當(dāng)子進(jìn)程將C W _ U S E D E FA U LT 用作C r e a t e Wi n d o w 的

  n Wi d t h參數(shù)來創(chuàng)建它的第一個(gè)重疊窗口時(shí),才使用這些值。

  若是創(chuàng)建控制臺(tái)窗口的應(yīng)用程序,這些成員將用于指明控制臺(tái)窗口的寬度

  DWORD dwXCountChars; //用于設(shè)定子應(yīng)用程序的控制臺(tái)窗口的寬度和高度(以字符為單位)

  DWORD dwYCountChars;

  DWORD dwFillAttribute; //用于設(shè)定子應(yīng)用程序的控制臺(tái)窗口使用的文本和背景顏色

  DWORD dwFlags; //請參見下一段和表4 - 7 的說明

  WORD wShowWindow; //用于設(shè)定如果子應(yīng)用程序初次調(diào)用的S h o w Wi n d o w 將S W _ S H O W D E FA U LT 作為

  n C m d S h o w 參數(shù)傳遞時(shí),該應(yīng)用程序的第一個(gè)重疊窗口應(yīng)該如何出現(xiàn)。

  本成員可以是通常用于Show Wi n d o w 函數(shù)的任何一個(gè)S W _ *標(biāo)識(shí)符

  WORD cbReserved2; //保留。必須被初始化為0

  PBYTE lpReserved2; //保留。必須被初始化為N U L L

  HANDLE hStdInput; //用于設(shè)定供控制臺(tái)輸入和輸出用的緩存的句柄。

  按照默認(rèn)設(shè)置,h S t d I n p u t 用于標(biāo)識(shí)鍵盤緩存,

  h S t d O u t p u t 和h S t d E r r o r用于標(biāo)識(shí)控制臺(tái)窗口的緩存

  HANDLE hStdOutput;

  HANDLE hStdError;

  當(dāng)Wi n d o w s 創(chuàng)建新進(jìn)程時(shí),它將使用該結(jié)構(gòu)的有關(guān)成員。大多數(shù)應(yīng)用程序?qū)⒁笊傻膽?yīng)用程序僅僅使用默認(rèn)值。至少應(yīng)該將該結(jié)構(gòu)中的所有成員初始化為零,然后將c b 成員設(shè)置為該結(jié)構(gòu)的大小:

  STARTUPINFO si = { sizeof(si) };

  CreateProcess(...,&si,...);

  表4-7 dwFlags 使用標(biāo)志及含義

  標(biāo)志 含義

  STARTF_USESIZE // 使用d w X S i z e 和d w Y S i z e 成員

  STARTF_USESHOWWINDOW //使用w S h o w Wi n d o w 成員

  STARTF_USEPOSITION //使用d w X 和d w Y 成員

  STARTF_USECOUNTCHARS //使用d w X C o u n t C h a r s 和dwYCount Chars 成員

  STARTF_USEFILLATTRIBUTE //使用d w F i l l A t t r i b u t e 成員

  STARTF_USESTDHANDLES //使用h S t d I n p u t 、h S t d O u t p u t 和h S t d E r r o r 成員

  STARTF_RUN_FULLSCREEN //強(qiáng)制在x 8 6 計(jì)算機(jī)上運(yùn)行的控制臺(tái)應(yīng)用程序以全屏幕方式啟動(dòng)運(yùn)行

  另外還有兩個(gè)標(biāo)志,即STARTF_FORCEONFEEDBACK 和STARTF_+FORCEOFFF -EEDBACK ,當(dāng)啟動(dòng)一個(gè)新進(jìn)程時(shí),它們可以用來控制鼠標(biāo)的光標(biāo)。由于Windows支持真正的多任務(wù)搶占式運(yùn)行方式,因此可以啟動(dòng)一個(gè)應(yīng)用程序,然后在進(jìn)程初始化時(shí),使用另一個(gè)程序。為了向用戶提供直觀的反饋信息,C r e a t e P r o c e s s 能夠臨時(shí)將系統(tǒng)的箭頭光標(biāo)改為一個(gè)新光標(biāo),即沙漏箭頭光標(biāo):

  該光標(biāo)表示可以等待出現(xiàn)某種情況,也可以繼續(xù)使用系統(tǒng)。當(dāng)啟動(dòng)另一個(gè)進(jìn)程時(shí),CreateProcess函數(shù)使你能夠更好地控制光標(biāo)。當(dāng)設(shè)定STARTF_FORCEONFEEDBACK標(biāo)志時(shí),C r e a t e P r o c e s s 并不將光標(biāo)改為沙漏。

  STARTF_FORCEONFEEDBACK可使CreateProcess能夠監(jiān)控新進(jìn)程的初始化,并可根據(jù)結(jié)果來改變光標(biāo)。當(dāng)使用該標(biāo)志來調(diào)用CreateProcess時(shí),光標(biāo)改為沙漏。過2 s 后,如果新進(jìn)程沒有調(diào)用G U I ,CreateProcess 將光標(biāo)恢復(fù)為箭頭。

  如果該進(jìn)程在2 s 內(nèi)調(diào)用了GUI ,CreateProcess將等待該應(yīng)用程序顯示一個(gè)窗口。這必須在進(jìn)程調(diào)用G U I 后5 s內(nèi)發(fā)生。如果沒有顯示窗口,CreateProcess就會(huì)恢復(fù)原來的光標(biāo)。如果顯示了一個(gè)窗口,CreateProcess將使沙漏光標(biāo)繼續(xù)保留5s 。如果某個(gè)時(shí)候該應(yīng)用程序調(diào)用了G e t M e s s a g e 函數(shù),指明它完成了初始化,那么C r e a t e P r o ce s s 就會(huì)立即恢復(fù)原來的光標(biāo),并且停止監(jiān)控新進(jìn)程。

  在結(jié)束這一節(jié)內(nèi)容的介紹之前,我想講一講S TA RT U P I N F O 的w S h o w Wi n d o w成員。你將該成員初始化為傳遞給( w ) Wi n M a i n 的最后一個(gè)參數(shù)n C m d S h o w的值。該成員顯示你想要傳遞給新進(jìn)程的( w ) Wi n M a i n 函數(shù)的最后一個(gè)參數(shù)n C m d S h o w的值。它是可以傳遞給S h o w Wi n d o w 函數(shù)的標(biāo)識(shí)符之一。通常,n C m d S h o w 的值既可以是S W _ SH O W N O R M A L ,也可以是SW_ SHOWMINNOACTIVE 。但是,它有時(shí)可以是S W _ S H O W D EFA U LT 。

  當(dāng)在E x p l o r e r 中啟動(dòng)一個(gè)應(yīng)用程序時(shí),該應(yīng)用程序的( w ) Wi n M a i n 函數(shù)被調(diào)用,而S W _ SH O W N O R M A L 則作為n C m d S h o w參數(shù)來傳遞。如果為該應(yīng)用程序創(chuàng)建了一個(gè)快捷方式,可以使用快捷方式的屬性頁來告訴系統(tǒng),應(yīng)用程序的窗口最初應(yīng)該如何顯示。圖4 - 3 顯示了運(yùn)行No t e p a d 的快捷方式的屬性頁。注意,使用R u n 選項(xiàng)的組合框,就能夠設(shè)定如何顯示N o t e p a d 的窗口。

  當(dāng)使用E x p l o r e r 來啟動(dòng)該快捷方式時(shí),E x p l o r e r 會(huì)正確地準(zhǔn)備S TA RT U P I N FO 結(jié)構(gòu)并調(diào)用C r e a t e P r o c e s s 。這時(shí)N o t e p a d 開始運(yùn)行,并且為n C m d S h ow 參數(shù)將S W _ S H O W M I N N O A C T I V E傳遞給它的( w ) Wi n M a i n 函數(shù)。

  運(yùn)用這樣的方法,用戶能夠很容易地啟動(dòng)一個(gè)應(yīng)用程序,其主窗口可以用正常狀態(tài)、最小或最大狀態(tài)進(jìn)行顯示。

  最后,應(yīng)用程序可以調(diào)用下面的函數(shù),以便獲取由父進(jìn)程初始化的S TA RT U P I N F O 結(jié)構(gòu)的拷貝。子進(jìn)程可以查看該結(jié)構(gòu),并根據(jù)該結(jié)構(gòu)的成員的值來改變它的行為特性。

  VOID GetStartupInfo(LPSTARTUPINFO pStartupInfo);

  注意雖然Wi n d o w s 文檔沒有明確地說明,但是在調(diào)用G e t S t a r t I n f o 函數(shù)之前,必須像下面這樣對該結(jié)構(gòu)的c b 成員進(jìn)行初始化:

  STARTUPINFO si = { sizeof(si) };

  GetStartupInfo(&si);

總結(jié)

以上是生活随笔為你收集整理的STARTUPINFO结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。