我正在使用CreateProcess函数执行外部应用程序,为了执行此类应用程序,我需要在运行.bat文件之前设置一些环境变量。问题是当我调用CreateProcess
运行bat文件然后再次执行CreateProcess
以运行外部应用程序时,不使用环境变量。问题是当我第二次执行CreateProcess
函数时,我如何使用bat文件中设置的环境变量?
答案 0 :(得分:6)
如果初始createprocess批处理文件只是设置环境变量,请改为创建环境变量块,并通过CreateProcess()调用直接传递它。
此处提供了一些示例代码,用于获取/设置环境变量以及将块传递给CreateProcess()http://www.delphidabbler.com/articles?article=6
答案 1 :(得分:2)
您可以使用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, ...);
答案 2 :(得分:1)
如果从批处理文件中执行其他应用程序,则会设置这些环境变量。您可以将可执行文件名作为参数传递给批处理文件。在批处理文件中设置环境变量时,它们仅在该批处理文件退出之前存在。