VC调用外部程序接口
(1) system()
函數(shù)名: system
功 能: 發(fā)出一個(gè)DOS命令
用 法: int system(char *command);
備 注: system函數(shù)已經(jīng)被收錄在標(biāo)準(zhǔn)c庫(kù)中,可以直接調(diào)用
返回值
=-1:出現(xiàn)錯(cuò)誤
=0:調(diào)用成功但是沒(méi)有出現(xiàn)子進(jìn)程
>0:成功退出的子進(jìn)程的id
樣例: system("D:\\game.exe");
?
(2) WinExec()
函數(shù)原型:
UINT WINAPI WinExec(
? __in????????? LPCSTR lpCmdLine,
? __in????????? UINT uCmdShow);
參數(shù)說(shuō)明:
lpCmdLine, // 命令路徑
uCmdShow, // 顯示方式,共有11種,具體可以查閱MSDN的ShowWindow函數(shù)
返回值:
成功,返回值大于31
返回0表示內(nèi)存或者資源溢出
返回ERROR_BAD_FORMAT表示exe文件非法或者已損壞。
返回ERROR_FILE_NOT_FOUND指定的文件沒(méi)有找到。
返回ERROR_PATH_NOT_FOUND找不到指定路徑
樣例:
WinExec("Notepad.exe", SW_SHOW); // 打開(kāi)記事本
WinExec("D:\\Program Files\\Test\\Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打開(kāi)Test.exe(注意文件名的大小寫也必須完全一樣)
?
(3) ShellExecute()
函數(shù)原型:
???? HINSTANCE ShellExecute(
?????????? HWND hwnd,??????????? //父窗口句柄
???? LPCTSTR lpOperation,???? //操作, 打開(kāi)方式"edit","explore","open","find","print","NULL"
???? LPCTSTR lpFile,???????? //文件名,前面可加路徑
???? LPCTSTR lpParameters,?? //參數(shù)
???? LPCTSTR lpDirectory, ????? //默認(rèn)文件夾
???? INT nShowCmd?????????? //顯示方式
);
用例: ShellExecute(NULL,"open","C:\\Test.txt",NULL,NULL,SW_SHOWNORMAL); // 打開(kāi)C:\Test.txt 文件
?
(4) CreateProcess()
? 函數(shù)原型:
???? BOOL CreateProcess(
???????? LPCTSTR lpApplicationName, //執(zhí)行程序名
????? LPTSTR lpCommandLine, // 參數(shù)行
?????? //下面兩個(gè)參數(shù)描述了所創(chuàng)建的進(jìn)程和線程的安全屬性,如果為NULL則使用默認(rèn)的安全屬性
????? LPSECURITY_ATTRIBUTES lpProcessAttributes, //進(jìn)程安全屬性
???? LPSECURITY_ATTRIBUTES lpThreadAttributes, ?? // 線程安全屬性
?????? BOOL bInheritHandles, // 繼承標(biāo)志
?????? ??DWORD dwCreationFlags, // 創(chuàng)建標(biāo)志
?????? LPVOID lpEnvironment, // 環(huán)境變量
?????? LPCTSTR lpCurrentDirectory,?? // 運(yùn)行該進(jìn)程的初始目錄
?????? LPSTARTUPINFO lpStartupInfo, // 用于在創(chuàng)建子進(jìn)程時(shí)設(shè)置各種屬性
?????? LPPROCESS_INFORMATION lpProcessInformation //用于在進(jìn)程創(chuàng)建后接受相關(guān)信息
??? );
?
評(píng)論:
system(),主要用在DOS環(huán)境下.
?
WinExec(),簡(jiǎn)單實(shí)用,方便打開(kāi)執(zhí)行進(jìn)程,但不能操作控制進(jìn)程。
?
ShellExecute(),增強(qiáng)了操作能力,但對(duì)進(jìn)程的控制還是不夠用。
?
CreateProcess(),目前最強(qiáng)勁的進(jìn)程函數(shù),通過(guò)設(shè)置StartupInfo結(jié)構(gòu)體參數(shù),來(lái)設(shè)置子進(jìn)程的屬性,
子進(jìn)程創(chuàng)建后的信息也保存在ProcessInformation結(jié)構(gòu)體中,便于操作,功能強(qiáng)大,但參數(shù)過(guò)多.
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/xiehy/archive/2010/07/16/1778949.html
總結(jié)
以上是生活随笔為你收集整理的VC调用外部程序接口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Stream 和Byte[] 之间的转换
- 下一篇: 基于visual c++之windows