CreateProcess windows API 在 Documents 文件夹中存储 excel

CreateProcess windows API stores excel in Documents folder

我正在处理调用 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) 此 CreateProcess 触发器 bat 文件将启动 vbscript 并已修改传递的 excel 文件。

此方法 1() 结束后,他们将在方法 2() 中再次调用 CreateProcess() 以打开相同的 excel 文件。

method2()
{
  BOOL bResult = ::CreateProcess(
        NULL,               // LPCTSTR    
        wctAppPath,         // LPTSTR      
        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是(excelInstallationPath\EXCEL.exe folderPath\excelFile.xls)

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

method2我已经评论了,也试过了。预期 excel 出现在给定路径中。

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