(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","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结构体中,便于操作,功能强大,但参数过多.



参考推荐:


VC 调用外部程序接口


VC调用系统运行程序


VC中调用外部程序方式总结


VC打开系统msc、cpl文件