CreateProcess Windows API将Excel存储在Documents文件夹中

问题描述

我正在开发一个调用CreateProcess方法的旧应用程序

method1()
{
        BOOL bResult = ::CreateProcess(
        NULL,// LPCTSTR    
        wctAppPath,// LPTSTR      lpszCommandLine
        NULL,// LPSecurity_ATTRIBUTES lpsaProc
        NULL,// LPSecurity_ATTRIBUTES lpsaThread
        FALSE,// BOOL                  fInheritHandles
        NULL,// DWORD                 fdwCreate
        NULL,// LPVOID                lpvEnvironment
        NULL,// LPCTSTR               lpszCurDir
        &stStatusInfo,// LPSTARTUPINFO         lpsiStartInfo
        &stProcInfo         // LPPROCESS_informatION lppiProcInfo
    );
}

wctAppPath值:(folderPath \ test.bat .. \ excel.xls) 将修改将启动vbscript并传递excel文件的CreateProcess触发器bat文件

一旦method1()结束,他们将再次在method2()中调用CreateProcess()以打开相同的excel文件

method2()
{
  BOOL bResult = ::CreateProcess(
        NULL,// LPTSTR      
        NULL,// LPSTARTUPINFO         lpsiStartInfo
        &stProcInfo         // LPPROCESS_informatION lppiProcInfo
        );
}

此处的wctAppPath为(excelInstallationPath \ EXCEL.exe folderPath \ excelFile.xls)

所有主要功能结束后,所需的修改后的excel将存储在Documents文件夹中,而不是实际的给定路径中。实际给出的excel根本不会被修改

我已经评论了method2并尝试了。预期的excel将出现在给定的路径中。

解决方法

旧应用程序是 CATIA。 在 V5 中,CATScriptUtilities::ExecuteScript 用于调用 catvba。 在 V6 中,我们可以使用相同的 API 来调用 catvba。它工作正常。 不需要调用 .bat->.vba->.catvba