我希望在主程序中打开一单文档程序,并传递字符串如“Open"给单文档程序,该如何实现?  
我用CreateProcess来实现,如            if(!CreateProcess("C:\\abc.exe","  Open",NULL,NULL,FALSE,0,NULL,NULL,&StupInfo,&ProcInfo)),但是在abc.exe虽然可以获得Open这个字符串,但程序提示找不到Open文件.
而实际上我只是想传递一个字符串给该单文档程序,然后自己处理.那么该如何做?

解决方案 »

  1.   

    使用命令行参数即可,比如,abc.exe /cmd open
    在abc程序中,看到/表示是一个参数的开始,看到cmd表示是cmd选项,open表示是/cmd的选项值看看我的例子:
    LPTSTR lpszDestPathName(NULL);
    LPTSTR lpszSyncS(NULL),lpszSyncT(NULL);
    int nArgc = __argc -1;
    PCTSTR *ppArgv = (PCTSTR*) __argv;
    CMDPARAM param=en_Other;
    for (int i = 1; i <= nArgc; i++){
    if ((ppArgv[i][0] == TEXT('-')) || (ppArgv[i][0] == TEXT('/'))){
    // Command line switch
    if (lstrcmpi(&ppArgv[i][1], TEXT("copyrun")) == 0){
     param=en_DestPathName;
    }else if (lstrcmpi(&ppArgv[i][1], TEXT("syncS")) == 0){
     param=en_SyncS;
    }else if (lstrcmpi(&ppArgv[i][1], TEXT("syncT")) == 0){
     param=en_SyncT;
    }else if (lstrcmpi(&ppArgv[i][1], TEXT("Run")) == 0){
    m_bRun=true;
    }else{
    param=en_Other;
    }
    }else{
    switch(param){
    case en_DestPathName:
    lpszDestPathName=(LPTSTR)ppArgv[i];
    break;
    case en_SyncS:
    lpszSyncS=(LPTSTR)ppArgv[i];
    break;
    case en_SyncT:
    lpszSyncT=(LPTSTR)ppArgv[i];
    break;
    }
    }
    }
      

  2.   

    应该这样CreateProcess("C:\\abc.exe [file name]","就成了
      

  3.   

    不过前提是你的abc.exe能够处理参数
      

  4.   

    应该加多一斜杠就可以了,如:
    if(!CreateProcess("C:\\abc.exe","  /Para",
    NULL,NULL,FALSE,0,NULL,NULL,&StupInfo,&ProcInfo))