我有个Dos程序,在cmd中命令行的运行方式是:decd.exe -i c:\file1.in -o d:\file2.out,我试图在另外一个程序中执行并将-i c:\file1.in -o d:\file2.out传递给它。我的程序如下:
ShellExecute(NLL,"Open","E:\\decd.exe","-i c:\file1.in -o d:\file2.out",NULL, SW_SHOWNORMAL);但是decd.exe程序并不能正确执行!
我又试图通过CreateProcess调用,程序如下:
CreateProcess("E:\\decd.exe","-i c:\file1.in -o d:\file2.out", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);但是同样decd.exe程序并不能正确执行!
如果去掉传入参数-i c:\file1.in -o d:\file2.out则decd.exe程序可以运行!请各位帮忙啊!!

解决方案 »

  1.   

    更正一下,刚刚写的有错误
    ShellExecute(NLL,"Open","E:\\decd.exe","-i c:\\file1.in -o d:\\file2.out",NULL, SW_SHOWNORMAL);
    CreateProcess("E:\\decd.exe","-i c:\\file1.in -o d:\\file2.out", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
      

  2.   

    CreateProcess("E:\\decd.exe","-i c:\\file1.in -o d:\\file2.out", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
    =>CreateProcess(NULL,"e:\\decd.exe -i c:\\file1.in -o d:\\file2.out", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
      

  3.   

    BOOL bRetVal = FALSE; SHELLEXECUTEINFO sShellExecuteInfo = {0}; sShellExecuteInfo.cbSize = sizeof(SHELLEXECUTEINFO); sShellExecuteInfo.fMask  =  SEE_MASK_NOCLOSEPROCESS;#ifdef _UNICODE
    sShellExecuteInfo.fMask |=  SEE_MASK_UNICODE;
    #endif sShellExecuteInfo.lpVerb = TEXT("open");
    sShellExecuteInfo.lpFile = TEXT("TLearnWare.exe"); if(nBootMode==0x01)
    {
    sShellExecuteInfo.lpParameters= TEXT("-run"); 
    }
    else if(nBootMode==0x02)
    {
    sShellExecuteInfo.lpParameters= TEXT("-exit"); 
    } sShellExecuteInfo.lpDirectory = TEXT(".\\");
    sShellExecuteInfo.nShow       = SW_SHOW; bRetVal = ::ShellExecuteEx(&sShellExecuteInfo);
      

  4.   

    如果没有特殊需要, 只是要在程序中启动另一个程序, 用
    ShellExecute(NULL, NULL, "c:\\winnt\\notepad.exe", "d:\\11.txt", NULL, SW_SHOWNORMAL);
    更方便了或者更简单的, 用winexec
    WinExec("c:\\winnt\\notepad.exe d:\\11.txt", SW_SHOWNORMAL);
      

  5.   

    /*F+F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F
      Function: CmdExec  Summary:  Execute an EXE Win32 program by creating a process and
                running the specified EXE in it.  Args:     LPTSTR szCmd,
                  Entire command line (eg, "notepad.exe mytext.txt")  Returns:  BOOL
                  TRUE if succeed; FALSE if fail.
    F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F-F*/
    BOOL CmdExec(
           LPTSTR szCmd)
    {
      BOOL bOk;
      STARTUPINFO si;
      PROCESS_INFORMATION pi;  // Execute the command with a call to the CreateProcess API call.
      memset(&si,0,sizeof(STARTUPINFO));
      si.cb = sizeof(STARTUPINFO);
      si.wShowWindow = SW_SHOW;
      bOk = CreateProcess(NULL,szCmd,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
      CloseHandle(pi.hThread);
      CloseHandle(pi.hProcess);  return bOk;
    }