jihongyuan 发表于 2016-8-26 16:34:22

MFC调用带有参数的exe文件

首先介绍一下工程,我现在要用MFC里面的button按钮,单击后执行一个exe文件,而这个exe文件是带有很多参数的,被放置在一个。bat文件中,具体如下

FLAS2000.exe BASE.MHX 1 0x600xF1   115200/L4/S3 /D1 0x000C0000 0x0013FFFF /T5000 /P31 /KISUZU60k096CU_DEV.dll /C1

@REM            |    |    |   |         |   |    |    |   |         |      |      |      |               |
@REM            |    |    |   |         |   |    |    |   |         |      |      |      |               parameter for backwards compatibility
@REM            |    |    |   |         |   |    |    |   |         |      |      |      key-Dll
@REM            |    |    |   |         |   |    |    |   |         |      |      download protocol
@REM            |    |    |   |         |   |    |    |   |         |      Timeout (P3)
@REM                |    |    |   |         |   |    |    |   |         EndAddress
@REM            |    |    |   |         |   |    |    |   StartAddress
@REM            |    |    |   |         |   |    |    Filetype of the target file: D1=Motorola(.mhx) D2=binary(.bin)
@REM            |    |    |   |         |   |    accessMode (for securityAccess)
@REM            |    |    |   |         |   seed/key length (0 for autor detect)
@REM            |    |    |   |         Download Baudrate
@REM            |    |    |   Source Adress (Tester address)
@REM            |    |    Target Adress (ECU address)
@REM            |    Comm. channel: 1=K-Line, 32=CAN Ch1, 32=CAN Ch2
@REM            Target file name
pause

我在MFC中的程序是这样的

        SHELLEXECUTEINFO ShExecInfo = {0};
        ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
        ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
        ShExecInfo.hwnd = NULL;
        ShExecInfo.lpVerb = NULL;
        ShExecInfo.lpFile = "C:\\Users\\uidq8721\\Desktop\\code\\FLAS2000.exe";
        ShExecInfo.lpParameters = "BASE.MHX 1 0x600xF1   115200/L4/S3 /D1 0x000C0000 0x0013FFFF /T5000 /P31 /KISUZU60k096CU_DEV.dll /C1";
        ShExecInfo.lpDirectory = NULL;
        ShExecInfo.nShow = SW_SHOW;
        ShExecInfo.hInstApp = NULL;
        ShellExecuteEx(&ShExecInfo);
        WaitForSingleObject(ShExecInfo.hProcess,INFINITE);

编译后没有错误,但是在执行的时候,感觉是执行了FLAS2000.exe文件,因为有个窗口出现后很快就消失了,于是我就没有运行bat文件,直接运行FLAS2000.exe
文件,结果出现了和上述运行MFC一样的现象,就是出现了一个窗口但是很快就消失了,所以猜测是不是参数没有传进去啊,请教各位大神,不胜感激啊,急啊,急啊

mcu5i51 发表于 2016-8-27 09:11:18

自己写一个显示参数的程序不就好了

jihongyuan 发表于 2016-8-27 09:59:50

mcu5i51 发表于 2016-8-27 09:11
自己写一个显示参数的程序不就好了

大师,愿闻详解啊,是不是说,这种方法是可行的,但是参数传递不正确需要用另外一种参数传递的方法?
那么对于这种方法
ShExecInfo.lpParameters = "BASE.MHX 1 0x600xF1   115200/L4/S3 /D1 0x000C0000 0x0013FFFF /T5000 /P31 /KISUZU60k096CU_DEV.dll /C1";
lpParameters 的格式我写错了么?
显示参数与这个程序怎么结合呢,能讲解一下思想么,谢谢啊
页: [1]
查看完整版本: MFC调用带有参数的exe文件