(1) system()
函數名: system
功 能: 發出一個DOS命令
用 法: int system (char *command);
備 注: system函數已經被收錄在標准c庫中,可以直接調用
返回值
=-1:出現錯誤
=0:調用成功但是沒有出現子進程
>0:成功退出的子進程的id
樣 例:
system("D:\\game.exe");
system("mmc.exe \"c:\\windows\\system32\\gpedit.msc\"");
(2) WinExec()
函數原型:
UINT WINAPI WinExec(
__in LPCSTR lpCmdLine,
__in UINT uCmdShow);
參數說明:
lpCmdLine, // 命令路徑
uCmdShow, // 顯示方式,共有11種,具體可以 查閱MSDN的ShowWindow函數
返回值:
成功,返回值大於31
返回0表示內存或者資 源溢出
返回ERROR_BAD_FORMAT表示exe文件非法或者已損壞。
返回 ERROR_FILE_NOT_FOUND指定的文件沒有找到。
返回ERROR_PATH_NOT_FOUND找不到指定路徑
樣例:
WinExec("Notepad.exe", SW_SHOW); // 打開記事本
WinExec ("D:\\Program Files\\Test\\Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打開 Test.exe(注意文件名的大小寫也必須完全一樣)
(3) ShellExecute()
函數原型:
HINSTANCE ShellExecute(
HWND hwnd, //父窗口句柄
LPCTSTR lpOperation, //操作, 打開方式 "edit","explore","open","find","print",& quot;NULL"
LPCTSTR lpFile, //文件名,前面可加路 徑
LPCTSTR lpParameters, //參數
LPCTSTR lpDirectory, //默認文件夾
INT nShowCmd //顯示方式
);
用例:
ShellExecute(NULL,"open","C:\\Test.txt",NULL,NULL,SW_SHOWNORMAL); // 打開C:\Test.txt 文件
(4) CreateProcess()
函數原型:
BOOL CreateProcess(
LPCTSTR lpApplicationName, //執行程序名
LPTSTR lpCommandLine, // 參數行
//下面兩個參數 描述了所創建的進程和線程的安全屬性,如果為NULL則使用默認的安全屬性
LPSECURITY_ATTRIBUTES lpProcessAttributes, //進程安全屬性
LPSECURITY_ATTRIBUTES lpThreadAttributes, // 線程安全屬性
BOOL bInheritHandles, // 繼承標志
DWORD dwCreationFlags, // 創建標志
LPVOID lpEnvironment, // 環境變量
LPCTSTR lpCurrentDirectory, // 運行該進程的初始目 錄
LPSTARTUPINFO lpStartupInfo, // 用於在創建子進程時設置各種屬性
LPPROCESS_INFORMATION lpProcessInformation //用於在進程創建後接受相關信息
);
評論:
system(),主要用在DOS環境下.
WinExec(),簡單實用,方便打開執行進程 ,但不能操作控制進程。
ShellExecute(),增強了操作能力,但對進程的控制還是不夠用。
CreateProcess(),目前最強勁的進程函數,通過設置StartupInfo結構體參數,來設置子進程的 屬性, 子進程創建後的信息也保存在ProcessInformation結構體中,便於操作,功能強大,但參數過 多.