VC调用外部程序接口
(1) system()
函数名: system
功 能: 发出一个DOS命令
用 法: int system(char *command);
备 注: system函数已经被收录在标准c库中,可以直接调用
返回值
=-1:出现错误
=0:调用成功但是没有出现子进程
>0:成功退出的子进程的id
样例:
system("D:\\game.exe");
int system(
const char *command
);
int _wsystem(
const wchar_t *command
);
(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,
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结构体中,便于操作,功能强大,但参数过多.