zoukankan      html  css  js  c++  java
  • c++ win32调用exe,并等待其结束

    调用exe 有诸如 ShellExecute(Ex) , System 之类的函数,本文以ShellExecuteEx为例子,调用exe,并等待其结束。

            char ActiveCmd[200] ={0};
            sprintf(ActiveCmd, "%s %s", argv[1]  , argv[2] );
            printf( "%s\n", ActiveCmd);
            

    /** 转换char * ---> TCHAR  **/
            int actcnt = MultiByteToWideChar(CP_ACP, NULL, ActiveCmd, -1, NULL, 0);
            TCHAR * pbuffer = new TCHAR[actcnt + 1];
            memset(pbuffer, 0sizeof(pbuffer));
            MultiByteToWideChar(CP_ACP, NULL, ActiveCmd, -1, pbuffer, actcnt);
            
            SHELLEXECUTEINFO ShExecInfo = {0};
            ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
            ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
            ShExecInfo.hwnd = NULL;
            ShExecInfo.lpVerb = L"open";//多种类别有 "explorer" "print" 等
            ShExecInfo.lpFile = EXE_FILE;//exe 路径    
            ShExecInfo.lpParameters = pbuffer;//参数
            ShExecInfo.lpDirectory = NULL;
            ShExecInfo.nShow = SW_HIDE;//
            ShExecInfo.hInstApp = NULL;
            ShellExecuteEx(&ShExecInfo);

            printf("waiting... \n ");    
            WaitForSingleObject(ShExecInfo.hProcess, INFINITE);//等待完成   第二个参数是超时时间(毫秒)超时后返回超时代码     
            
            delete pbuffer;

            pbuffer = NULL; 


    也可以简单的调用:

    ::ShellExecute(NULL, NULL, EXE_PATH , pbuffer, NULL,SW_HIDE);//pbuffer 同上需要是 TCHAR*  

  • 相关阅读:
    集大软件工程15级结对编程week1
    集大软件工程15级个人作业Week2
    集大软件工程15级个人作业Week1
    Java 课程设计 "Give it up"小游戏(团队)
    Java 课程设计 "Give it up"小游戏设计(个人) 201521123077
    201521123077 《Java程序设计》第14周学习总结
    201521123077 《Java程序设计》第13周学习总结
    2019-助教总结
    软工的总分
    第四次团队作业
  • 原文地址:https://www.cnblogs.com/no7dw/p/2364101.html
Copyright © 2011-2022 走看看