2012-03-24 109 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, ...);