Используйте CreateProcess с переменными среды, установленными через bat-файл - PullRequest
2 голосов
/ 24 марта 2012

Я выполняю внешнее приложение, используя функцию CreateProcess , для того, чтобы такое приложение выполнялось, мне нужно запустить файл .bat, прежде чем устанавливать некоторые переменные окружения. Проблема заключается в том, что когда я вызываю CreateProcess, чтобы запустить файл bat, а затем снова запускаю CreateProcess для запуска внешнего приложения, переменные среды не используются. Вопрос в том, как я могу использовать переменные окружения, установленные в файле bat, когда я выполняю функцию CreateProcess во второй раз?

Ответы [ 3 ]

6 голосов
/ 24 марта 2012

Если исходный пакетный файл createprocess предназначен для простой установки переменных среды, создайте вместо него блок переменных среды и передайте его напрямую с помощью вызова CreateProcess ().

Некоторые примеры кода доступны для получения / настройкипеременные окружения и для передачи блока в CreateProcess () http://www.delphidabbler.com/articles?article=6

2 голосов
/ 24 марта 2012

Вы можете использовать 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, ...);
1 голос
/ 24 марта 2012

Если вы запустите другое приложение из командного файла, в нем будут установлены эти переменные среды. Вы можете передать имя исполняемого файла в качестве параметра в командный файл. Когда вы устанавливаете переменные среды в пакетном файле, они существуют только до выхода из этого пакетного файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...