我要调用mencoder.exe 来剪切一个avi文件   
WinExec((LPCSTR)"E:\\DXSDK\\mencoder.exe -ss 00:00:00 -oac copy -ovc copy -endpos 00:00:05 \"g:\\1.avi\" -o \"g:\\2.avi\"",0);
上面这个语句是对的
但是我要用程序来获取源文件和输出文件的路径 所以用了CString来保存路径,最后加到参数字符串中这样做的
control=(CString)"E:\\DXSDK\\mencoder.exe -ss "+start + (CString)" -oac copy -ovc copy -endpos " + end + (CString)" \""+m_sourceFile +(CString)"\" -o \""+(CString)strTmp+ (CString)":\\out.avi\"";然后传到WinExec((LPCSTR)(LPCTSTR)control,1);这样不对,mencoder。exe文件根本没有运行有资料说用ShellExecute 会更好,但我看了msdn上关于ShellExecute的描述 还是没看懂 第三个和第四个的参数究竟该传什么 请各位根据我WinExec((LPCSTR)"E:\\DXSDK\\mencoder.exe -ss 00:00:00 -oac copy -ovc copy -endpos 00:00:05 \"g:\\1.avi\" -o \"g:\\2.avi\"",0);这句话 告诉我 怎么传参给ShellExecute。

解决方案 »

  1.   

    你这是纯粹的进程间调用,用CreateProcess()岂不更好
      

  2.   

    比如 ping /t 127.0.0.1 
    lpFile [in]
    文件名称
    ping 是文件名  C:\Windows\System32 下的ping.exe
    lpParameters [in, optional]
    传递给文件的参数
    /t 127.0.0.1 是参数
      

  3.   


    ShellExecute(NULL,_T("open"),_T("E:\\DXSDK\\mencoder.exe"),_T("-ss 00:00:00 -oac copy -ovc copy -endpos 00:00:05 \"g:\\1.avi\" -o \"g:\\2.avi\""),NULL,SW_HIDE);类似这样用
      

  4.   

    我就是这样用的 不对啊,mencoder.exe到是运行了,耽误输出结果。
      

  5.   

    深入浅出ShellExecute 
      

  6.   

    执行以后 有一个窗口闪过 但是没有输出1.avi文件  应该是参数没传对
      

  7.   

    其实我已经把我的问题说的很清楚了  来这发贴也肯定是查过很多资料都无果的无奈之举  希望会的大哥大姐直接根据我在1L描述的情况帮我把用ShellExecute 或是CreatProess 调用的语句写出来,不用在这里发什么资料的链接了,小女愚笨,都看过但是不会用。感激不尽。
      

  8.   

    你有QQ或msn吗  在论坛上不好交流 等回复太慢了,希望你给个号我加你 
      

  9.   

    UINT WinExec( LPCSTR lpCmdLine, UINT uCmdShow );
    ShellExecute and ShellExecuteEx
    BOOL CreateProcess(..);
    考虑编码
    考虑路径考虑启动程序的参数设置 - /,
    最好写个测试启动程序,用getcommandlin类似的函数得到启动参数,看看是否配置正确注意可能不能解析空格的问题,建议把整个命令放在一个引号内
    如:"C:\\Microsoft Visual Studio\\COMMON\\IDE\\IDE98\\NOTEPAD.EXE -\"%1\""