c++ 调用外部程序exe-ShellExecuteEx

此方法最实用的调用exe.

#include <ShellAPI.h>

string file_path = s_run_dir+"\\ConsoleApplication1.exe";
    if (!myfile.IsFileExist(file_path))
    {
        return 1;
    }

    LPCWSTR lp_file_path = mystring.StringToLPCWSTR(file_path);

    SHELLEXECUTEINFO ShExecInfo;

    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb = NULL;
    ShExecInfo.lpFile = lp_file_path;
    ShExecInfo.lpParameters = __T("D:\\a.txt D:\\b.txt D:\\c.txt");//传出去的参数
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow = SW_SHOW;
    ShExecInfo.hInstApp = NULL;

    BOOL b_ret=ShellExecuteEx(&ShExecInfo);
    if (b_ret)
    {
        //等待调用启动的exe关闭,此处要设置成ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
        WaitForSingleObject(ShExecInfo.hProcess, INFINITE);

    }
    else
    {
        return 2;
    }

传给控制台程序参数

#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{

    // 参数个数,第一个参数为可执行文件路径
     int iParamCount = argc;
     cout << "参数个数:" << iParamCount << endl;
     for (int i = 0; i < iParamCount; i++)
     {
           cout << endl << "第" << i + 1 << "个参数:";
           wprintf(argv[i]);
     }

     getchar();

    return 0;
}
时间: 2024-10-11 10:36:47

c++ 调用外部程序exe-ShellExecuteEx的相关文章

Delphi调用外部程序的集中方法

Delphi调用外部程序 WinExec主要运行EXE文件.如:WinExec(’Notepad.exe Readme.txt’, SW_SHOW); WinExec(  lpCmdLine: LPCSTR; {文件名和参数; 如没指定路径会按以下顺序查找: 程序目录/当前目录/System32/Windows/PATH环境变量}  uCmdShow: UINT     {启动选项}): UINT; //返回值:大于 31                    {调用成功}等于 0       

windows下调用外部exe程序 SHELLEXECUTEINFO

本文主要介绍两种在windows下调用外部exe程序的方法: 1.使用SHELLEXECUTEINFO 和 ShellExecuteEx SHELLEXECUTEINFO 结构体的定义如下: 1 typedef struct _SHELLEXECUTEINFO { 2 DWORD cbSize; 3 ULONG fMask; 4 HWND hwnd; 5 LPCTSTR lpVerb; 6 LPCTSTR lpFile; 7 LPCTSTR lpParameters; 8 LPCTSTR lpD

PowerShell中调用外部程序和进程操作命令例子

学习PowerShell,我们不指望通过C#编程去搞定所有事情,我们应该记住cmd.exe或者说批处理给我们留下的宝贵财富——通过调用外部程序去解决问题.调用了外部程序,势必就要对进程进行管理,这就是本文要介绍的. 1.Get-Process,返回进程. Get-Process [-id] ,按pid获取Get-Process -name ,按进程名Get-Process -inputObject ,传入参数 举例:get-process -name mmc,显示所有mmc的进程. 2.Star

WPF调用外部程序

想通过main()函数传递参数,先重载下面的OnStartup() public partial class App : Application { public static string args0; protected override void OnStartup(StartupEventArgs e) { if(e.Args != null && e.Args.Length > 0) args0 = e.Args[0].ToString(); base.OnStartup(

Windows API调用外部程序之图片查看

最近顺手接了一个小活,任务目标是将一组图像依次显示出来.环境就是XP中,代码嵌入到一个MFC工程里,图片是未经处理的可能是JPEG2000格式的j2c,也可能是bitmap.当然还可能没有任何的文件头,这个最后看实际情况再添加吧. 主要就是调用外部程序(j2c可以用网上的ivanview或kakadu,bmp就用Windows的图片查看工具),打开/关闭这两个功能.文件便利可以用CFileFind类,这里用的FindFirstFile和FindNextFile. 打开可以使用system(),还

C#使用Process类调用外部程序(转)

在程序开发中,一个程序经常需要去调用其他的程序,C#中Process类正好提供了这样的功能.它提供对本地和远程进程的访问并使您能够启动和停止本地系统进程. 一.启动进程实例 Process myProcess = new Process(); try { myProcess.StartInfo.UseShellExecute = false; myProcess.StartInfo.FileName = "test.exe"; myProcess.StartInfo.CreateNoW

c# 调用外部exe程序

c#调用外部exe程序,首先要 using System.Diagnostics; 然后开启一个新process System.Diagnostics.ProcessStartInfo p=null; System.Diagnostics.Process Proc; p = new ProcessStartInfo("nnnn.exe","参数"); p.WorkingDirectory = exepath;//设置此外部程序所在windows目录 p.Window

C#winform调用外部程序,等待外部程序执行完毕才执行下面代码

1.简单调用外部程序文件(exe文件,批处理等),只需下面一行代码即可 System.Diagnostics.Process.Start(“应用程序文件全路径”); 2.如果要等待调用外部程序执行完毕才执行下面代码,只需要在后面加上WaitForExit()方法 System.Diagnostics.Process.Start(应用程序文件全路径).WaitForExit(); 3.另一种方法:使用实例化方法不使用静态方法 1 Process process = new Process(); 2

C# 客户端程序调用外部程序的三种实现

简介 我们用C#来开发客户端程序的时候,总会不可避免的需要调用外部程序或者访问网站,本篇博客介绍了三种调用外部应用的方法,供参考 实现 第一种是利用shell32.dll,实现ShellExecute方法,该方法可同时打开本地程序.文件夹或者访问网站,只要直接输入路径字符串即可, 如C:\Users\Desktop\xx.exe或者https://cn.bing.com/,可以根据返回值判断是否调用成功 (成功0x00000002a , 失败0x00000002) Window wnd = Wi

[.Net] 调用外部程序

以记事本为例 以记事本为例 第一招: 只是单纯要把某个应用程序或某个文档打开,只要一行code:ex. Process.Start("notepad"); 或 Process.Start(@"C:boot.ini"); 第二招: 开启某种应用程序或文档,之后再将它关闭:ex.中国台湾是主权独立的国家 Process prc = Process.Start("notepad");// 开启时声明变量记下回传的Process 关闭语法为: prc.C