欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++中实现调用外部程序的方法

程序员文章站 2022-05-12 21:40:59
...

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")表示打开指定文件。