日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Windows 2000系統(tǒng)編程——進(jìn)程的創(chuàng)建( 二 )


⑷ 程序示例
下面通過一個例子來說名 WinExec 和 ShellExecute 的使用 。下面程序有控制臺程序示例 , 其使用兩種不同的方法 , 打開文本文件 。下面程序使用 WinExec , 并明確指定使用記事本程序 。然后 , 使用 ShellExecute, 打開文本文件 。
程序清單
#include
#include
void main(int argc,char *argv[])
{
cout<<”O(jiān)pening with WinExecn”;
if (WinExec(“notepad readme.txt”,SH_SHOW)<32)
MessagBox(NULL,”Can"t WinExec”,NULL,MB_OK);
cout<<”Press Entern”;
MessagBox(NULL,”Press OK to continue”,”Progrm Launched”,MB_OK);
cout<<”O(jiān)pening with ShellExecuten”;
if (ShellExecute (NULL,”open”,
”readme.txt”,NULL,NULL,SW_SHOW)<(HANDLE) 32)
MessagBox(NULL,”Can"t ShellExecuten”,NULL,MB_OK);
}
4 使用 CreateProcess 命令
⑴ 函數(shù)原型:
BOOL CreateProcess(
LPCTSTR lpApplicationName ,
LPTSTR lpCommandLine ,
LPSECURITY_ATTRIBUTES lpProcessAttributes ,
LPSECURITY_ATTRIBUTES lpThreadAttributes ,
BOOL bInheritHandles ,
DWord dwCreationFlags ,
LPVOID lpEnvironment ,
LPCTSTR lpCurrentDirectory ,
LPSTARTUPINFO lpStartupInfo ,
LPPROCESS_INFORMATION lpProcessInformation
);
⑵ 參數(shù):
lpApplicationName :指向一個以空結(jié)尾的串 , 他指定了要執(zhí)行的模塊
lpCommandLine :指向一個以空結(jié)尾的串 , 該串定義了要執(zhí)行的命令行 。
lpProcessAttributes :指向一個 SECURITY_ATTRIBUTES 結(jié)構(gòu) , 該結(jié)構(gòu)決定了返回的句柄是否可被子進(jìn)程繼承 。
lpThreadAttributes :指向一個 SECURITY_ATTRIBUTES 結(jié)構(gòu) , 該結(jié)構(gòu)決定了返回的句柄是否可被子進(jìn)程繼承 。
bInheritHandles , : 表明新進(jìn)程是否從調(diào)用進(jìn)程繼承句柄 。
dwCreationFlags : 定義控制優(yōu)先類和進(jìn)程創(chuàng)建的附加標(biāo)志 。
lpEnvironment :指向一個新進(jìn)程的環(huán)境塊 。
lpCurrentDirectory :指向一個以空結(jié)尾的串 , 該串定義了子進(jìn)程的當(dāng)前驅(qū)動器和當(dāng)前目錄 。
lpStartupInfo :指向一個 STARTUPINFO 結(jié)構(gòu) , 該結(jié)構(gòu)定義了新進(jìn)程的主窗口將如何顯示 。
lpProcessInformation : 指向 PROCESS_INFORMATION 結(jié)構(gòu) , 該結(jié)構(gòu)接受關(guān)于新進(jìn)程的表示信息 。
⑶ 返回值:
若函數(shù)調(diào)用成功 , 則返回值不為 0 ;若函數(shù)調(diào)用失敗 , 返回值為 0。
ShellExecute 和 WinExec 命令用于簡單的作業(yè) 。如果要完全控制一個新進(jìn)程 , 就必須調(diào)用 CreateProcess。
在上述參數(shù)中 , 參數(shù) lpStartupInfo 是 STARTUPINFO 結(jié)構(gòu) ??梢杂脕碓O(shè)置控臺的標(biāo)題 , 新窗口的的初始大小和位置 , 及重定向標(biāo)準(zhǔn)輸入和輸出 。新程序通??梢院雎远鄶?shù)這些數(shù)據(jù)項(xiàng) , 如果選擇那樣做的話 。可以規(guī)定該結(jié)構(gòu)體中的標(biāo)志 , 已表明要設(shè)置的數(shù)據(jù)段 。有時 , 不想設(shè)置任何信息 , 也必須傳遞一個有效的指針給空結(jié)構(gòu)(確定設(shè)置大小到 cb , 及設(shè)置 dwFlags 成員為 0 ) 。參數(shù) lpProcessInformation 返回進(jìn)程和線程句柄 , 還包括進(jìn)程和線程 ID。這些句柄擁有在參數(shù) lpProcessAttributes 和 lpThreadAttributes 中規(guī)定的訪問 。
要注意 , 針對 CreateProcess 的一些參數(shù)對控制臺應(yīng)用程序是特定的 , 而其它參數(shù)則對各種應(yīng)用程序有用 。大多數(shù)情況下 , 并不一定要填入 STARTUPINFO 結(jié)構(gòu) , 但無論如何必須提供它 。其返回值是布爾型的 , 而真正感興趣的返回值發(fā)生于作為參數(shù)傳送的結(jié)構(gòu)中( PROCESS_INFORMATION ) 。CreateProcess 返回該結(jié)構(gòu)中的進(jìn)程 ID 及其句柄 , 以及初始線程 ID 及其句柄 ??梢詫?ID 發(fā)送到其它進(jìn)程 , 或使用句柄來控制新進(jìn)程 。
⑷ 相關(guān)命令
給定進(jìn)程句柄 , 就可以用相關(guān)命令來控制進(jìn)程 。下面我們討論進(jìn)程結(jié)束的確定 , 進(jìn)程結(jié)束的確定有以下幾種方法:

推薦閱讀