C++中实现调用外部程序的方法
1 system()函数
system()函数的作用是执行指令,该函数的格式为
int system(
const char *command
);
其中,参数command指定了要执行的指令。以下代码的作用是调用“e:\1.exe”程序。
system("e:\\1.exe");
在使用system()函数时,需要在程序中包含process.h或者stdlib.h头文件。
2 _execl()函数
_execl()函数的作用是导入并且执行新的子进程。该函数的格式为
intptr_t _execl(const char* cmdname, const char *arg0, ..., NULL);
该函数的第一个参数cmdname指定了要执行文件的路径;后面的arg系列的参数指定了执行该文件时的参数;最后一个参数必须是NULL。
_execl("e:\\1.exe","1", NULL);
以上代码的作用是调用了“e:\1.exe”程序,需要注意的是第二个参数必须是要执行文件的名称。
使用_execl()函数时,需要在程序中包含process.h头文件。
3 WinExec()函数
WinExec()函数的作用是执行指定的程序。该函数的格式为
UINT WINAPI WinExec(LPCSTR lpCmdLine, UINT uCmdShow);
其中,第一个参数lpCmdLine指定了要执行程序绝对路径;第二个参数uCmdShow指定了显示执行程序的选项。
WinExec("e:\\1.exe", SW_SHOW);
以上代码调用了“e:\1.exe”程序,SW_SHOW表示显示1.exe的窗口。
4 CreateProcess()函数
CreateProcess()函数的作用是在主线程中创建新的进程。该函数的格式为
BOOL WINAPI CreateProcess(
_In_opt_ LPCTSTR lpApplicationName,
_Inout_opt_ LPTSTR lpCommandLine,
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ BOOL bInheritHandles,
_In_ DWORD dwCreationFlags,
_In_opt_ LPVOID lpEnvironment,
_In_opt_ LPCTSTR lpCurrentDirectory,
_In_ LPSTARTUPINFO lpStartupInfo,
_Out_ LPPROCESS_INFORMATION lpProcessInformation
);
其中,参数lpApplicationName指定了要执行模块的名称;lpCommandLine指定了要执行的命令行;lpProcessAttributes指定了创建新进程的句柄能否被子进程所继承;lpThreadAttributeslpProcessAttributes指定了创建新进程的句柄能否被子线程所继承;bInheriteHandles指定了调用该函数的进程中每个可被继承的句柄是否被新进程继承;dwCreationFlags指定了优先类控制和进程创建的标志;lpEnvironment指定了新进程的环境区块;lpCurrentDirectory指定了要创建进程所在的路径;lpStartupInfo指定了创建进程时的信息;lpProcessInformation中保存了新创建进程的识别信息。
CreateProcess()函数的参数虽然非常多,但是仅仅使用该函数调用外部程序时,大多数的参数都可以设置为NULL或者0。
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
CreateProcess(_T("e:\\1.exe"), NULL, NULL, NULL, false, 0, NULL, NULL, &si, &pi);
以上代码的作用是调用了“e:\1.exe”程序。
5 ShellExecute()函数
ShellExecute()函数的作用是完成在指定文件上的操作。该函数的格式为
HINSTANCE ShellExecute(
HWND hwnd
, LPCTSTR lpOperation
, LPCTSTR lpFile
, LPCTSTR lpParameters
, LPCTSTR lpDirectory
, INT nShowCmd
);
其中,参数hwnd指定了所有者窗口的句柄,该窗口用来显示用户界面或者错误信息;lpOperation指定了在文件上的操作;lpFile指定了要操作的文件;lpParameters指定了传递给应用程序的参数;lpDirectory指定了默认的路径;nShowCmd指定了显示文件窗口的方式。
ShellExecute(NULL, _T("open"), _T("e:\\1.exe"), NULL, NULL, SW_SHOW);
以上代码的作用是调用了“e:\1.exe”程序,其中第二个参数_T("open")表示打开指定文件。