2012-03-24 69 views
2

我正在执行使用CreateProcess函数的外部应用程序,以便执行这样的应用程序我需要在运行一个.bat文件之前设置一些环境变量。问题是当我拨打CreateProcess来运行bat文件,然后再次执行CreateProcess来运行外部应用程序时,不使用环境变量。问题是我第二次执行CreateProcess函数时如何使用bat文件中设置的环境变量?使用CreateProcess和通过bat文件设置的环境变量

回答

6

如果最初的createprocess批处理文件只是设置环境变量,则应创建enviornment变量块,然后直接通过CreateProcess()调用传递它。

一些示例代码可以在这里来获得/设置环境变量和传递块给CreateProcess()http://www.delphidabbler.com/articles?article=6

1

如果您从批处理文件执行其他应用程序,它会设置这些环境变量。您可以将可执行文件名称作为参数传递给批处理文件。在批处理文件中设置环境变量时,它们只存在于该批处理文件退出之前。

2

您可以使用CreateProcess()运行OS的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, ...);