解决方案 »

  1.   

    就是说如果完全是exe格式的程序,就不能显示这个程序的进度了?
      

  2.   

    你的程序做成控制台吧,带有回显消息的,回显消息显示进度之类的信息,然后你的MFC程序以无窗口模式启动它,再创建一个pipe管道去提取回显的进度,将回显的进度反映到MFC进度条上,前提是你的视频分析程序必须是console类型的下面是代码,希望能给你些启示:
    CString getEach(char  *cmd)
    {
        LPTSTR lpsz = (LPTSTR)(LPCTSTR)CString((char*)cmd);
        SECURITY_ATTRIBUTES sa;
        HANDLE hRead,hWrite;
        sa.nLength = sizeof(SECURITY_ATTRIBUTES);
        sa.lpSecurityDescriptor = NULL;
        sa.bInheritHandle = TRUE;
        if (!CreatePipe(&hRead,&hWrite,&sa,0))
        {
            MessageBox(NULL, "text",_T("Error on CreatePipe()!"), MB_OK);
            return " ";
        }
        
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
        si.cb = sizeof(STARTUPINFO);
        GetStartupInfo(&si);
        si.hStdError = hWrite;
        si.hStdOutput = hWrite;
        si.wShowWindow = SW_HIDE;
        si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
        if (!CreateProcess(NULL,lpsz,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
        {
            MessageBox(NULL,"test", _T("Error on CreateProcess()!"),MB_OK);
            return " ";
        } CloseHandle(hWrite); char buffer[4096];
    memset(buffer,0,4096);
    DWORD byteRead;
    CString  eachstring; //获取命令行数据
        while(true)
        {
            if (ReadFile(hRead,buffer,4095,&byteRead,NULL) == NULL)
            {
                break;
            }
    eachstring+=CString(buffer);
            Sleep(1);
        }

    return eachstring;
    }
    这里cmd参数这样传 "cmd /c C:/video.exe" 绿色是你的视频分析exe
      

  3.   

    问题的关键是:只知道exe程序,不知道内部运行机制,还有这个视频分析程序不是简单的播放,是分析这个视频有没有被编码过?
    所以....我估计显示进度就很难办到了