CreateProcess函数无法完全启动应用程序

时间:2014-06-19 07:20:47

标签: c++ windows createprocess

我有两个申请。我将它们称为A和B.我可以访问应用程序A的代码。 我想启动应用程序B并在A中打开该应用程序中的文件。我正在使用 实现它的CreateProcess方法。但是应用程序B没有完全打开。 我不确定这两个应用程序之间是否存在任何常见的dll或其他依赖关系。

我用来打开应用程序B表单A的代码是:

    std::wstring appBPath(L"C:\\B.exe");
    std::wstring filePath(L"C:\\file.pdf");
    std::wstring cmdLineCommand =  L"\"" + appBPath+ L"\" \"" + filePath + L"\"";
    STARTUPINFO startupInfo;
    PROCESS_INFORMATION processInfo;
    // set the size of the structures
    SecureZeroMemory( &startupInfo, sizeof(startupInfo) );
    startupInfo.cb = sizeof(startupInfo);
    SecureZeroMemory( &processInfo, sizeof(processInfo) );
    CreateProcess( NULL,    // No module name (use command line)
        &cmdLineCommand[0],     // Command line
        NULL,                   // Process handle not inheritable
        NULL,                   // Thread handle not inheritable
        FALSE,                  // Set handle inheritance to FALSE
        CREATE_NEW_CONSOLE,     // New process has a new console
        NULL,                   // Use parent's environment block
        NULL,                   // Use parent's starting directory
        &startupInfo,           // Pointer to STARTUPINFO structure
        &processInfo );         // Pointer to PROCESS_INFORMATION structure

exe文件开始加载但在初始化期间卡住了。但是,应用程序B没有终止。 它进入一些不一致的状态。此问题仅发生在从其安装程序安装的应用程序A中。 当我运行发布或调试版本时,它不会发生。对于发布和调试版本,我们使用VC10。但对于安装人员  我们使用VC12构建。我不确定编译器优化是否适用于安装程序构建。

CreateProcess函数返回成功。

来自进程资源管理器的应用程序B的线程状态: enter image description here

0 个答案:

没有答案