我正在使用CreateProcess函数执行一个外部应用程序,为了执行这样的应用程序,我需要在运行.bat文件之前设置一些环境变量。问题是,当我调用CreateProcess来运行bat文件,然后再次执行CreateProcess来运行外部应用程序时,没有使用环境变量。问题是,当我第二次执行CreateProcess函数时,如何使用bat文件中设置的环境变量?
发布于 2012-03-24 12:15:51
如果最初的createprocess批处理文件只是设置环境变量,则创建环境变量块,并通过CreateProcess()调用直接传递它。
此处提供了一些示例代码,用于获取/设置环境变量以及将块传递给CreateProcess() http://www.delphidabbler.com/articles?article=6
发布于 2012-03-24 13:46:14
您可以使用CreateProcess()来运行操作系统的cmd.exe程序,以便一次执行多个命令,例如:
TCHAR szCmd[(MAX_PATH * 3) + 16] = {0};
TCHAR szPathToCmdExe[MAX_PATH+1] = {0}
GetEnvironmentVariable(TEXT("COMSPEC"), szPathToCmdExe, MAX_PATH+1);
wsprintf(szCmd, TEXT("\"%s\" /C \"%s && %s\""), szPathToCmdExe, szPathToBat, szPathToProgram);
CreateProcess(NULL, szCmd, ...);发布于 2012-03-24 10:34:15
如果从批处理文件执行另一个应用程序,它将设置这些环境变量。您可以将可执行文件名作为参数传递给批处理文件。在批处理文件中设置环境变量时,这些环境变量仅在该批处理文件退出之前存在。
https://stackoverflow.com/questions/9848601
复制相似问题