powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Неясность с CreateProcess
5 сообщений из 5, страница 1 из 1
Неясность с CreateProcess
    #34435279
panter_dsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Расклад в общем такой: есть СУБД, кот. называется СЭД. Для нее изредка приходят апдейты в виде архивов arj. Для того, чтобы установить апдейт нужно:
1. Распаковать архив в папку c:\SED\Upgrade\ (получится папка c:\SED\Upgrade\ 010010(имя папки означает версию))
2. Запустить c:\SED\EXE\!cbank.bat /U010010
3. Запустить СЕД c:\SED\EXE\!cbank.bat.

Захотелось написать прогу, которая будет все делать автоматом:
1. При запуске она проверяет опред. папку на наличие обновлений.
2. Распаковывает обновление в папку
3. Запускает c:\SED\EXE\!cbank.bat /U010010 и ждет завершения
4. Запускает c:\SED\EXE\!cbank.bat и ждет завершения
5. Повторяет для следующего обновления.

Проблема возникает на шаге 3, т.к. батник вызывает экзешник и завершается, а мне нужно узнать, когда завершается экзешник. Посмотрел батник и нашел тот экзешник, который он запускает. Вот только перед запуском он обозначает PATH=c:\SED; c:\SED\SYSTEM;c:\SED\USER. Пытался решить так:

void CreateProc(AnsiString FileName,AnsiString CommandString,AnsiString Environment)
{
TProcessInformation ProcessInformation;
TStartupInfo StartupInfo;

ZeroMemory(&StartupInfo,sizeof(StartupInfo));
StartupInfo.cb=sizeof(StartupInfo);
if (Environment==NULL)
CreateProcess(FileName.c_str(),CommandString.c_str(),NULL,NULL,false,0,NULL,NULL,&StartupInfo,&ProcessInformation);
else
{
CreateProcess(FileName.c_str(),CommandString.c_str(),NULL,NULL,false,0,Environment.c_str(),NULL,&StartupInfo,&ProcessInformation);
}
WaitForSingleObject(ProcessInformation.hProcess,INFINITE);
CloseHandle(ProcessInformation.hProcess);
CloseHandle(ProcessInformation.hThread);
}


AnsiString Env;
AnsiString UpdateString="/U$NAME";
AnsiString UpdatePath="c:\\1\\";
AnsiString SedPath="c:\\SED";

for (int i=0; i<ListView1->Items->Count; i++)
{
if (!ListView1->Items->Item->Checked) continue;
FileName=ListView1->Items->Item->Caption;
CreateProc(RarPath,(" x "+UpdatePath+FileName+".arj "+SedPath+"\\UPGRADE\\"),NULL);

Env="PATH="+SedPath+"\\SYSTEM;"+SedPath+"\\USER;"+SedPath+"\\UPGRADE;"+SedPath;
AnsiString tmp=UpdateString;
int j=tmp.Pos("$NAME");
tmp.Delete(j,5);
tmp.Insert(FileName,j);
CreateProc(SedPath+"\\EXE\\cbank.exe",tmp,Env);
MessageBox(this->Handle,"Сейчас произойдет запуск СЭД. Войдите в программу и выйдите из нее",Application->Title.c_str(),MB_OK);
CreateProc((SedPath+"\\EXE\\cbank.exe"),"",Env);

}

Что я делаю не так и что мне нужно исправить?
(Только не говорите, что ошибка в ДНК) :)

С уважением.
Пантер.
...
Рейтинг: 0 / 0
Неясность с CreateProcess
    #34435290
aak__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в батнике запустить и дождаться завершения:
start /wait yourfile.exe
...
Рейтинг: 0 / 0
Неясность с CreateProcess
    #34435295
panter_dsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aak__в батнике запустить и дождаться завершения:
start /wait yourfile.exe
Прикольно. А без батника можно?
...
Рейтинг: 0 / 0
Неясность с CreateProcess
    #34435310
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
panter_dsdЧто я делаю не так и что мне нужно исправить? Неправильно задаешь окружение. Забыл добавить завершающий ноль.

panter_dsd(Только не говорите, что ошибка в ДНК) :)Хорошо.
...
Рейтинг: 0 / 0
Неясность с CreateProcess
    #34435377
panter_dsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl panter_dsdЧто я делаю не так и что мне нужно исправить? Неправильно задаешь окружение. Забыл добавить завершающий ноль.

panter_dsd(Только не говорите, что ошибка в ДНК) :)Хорошо.
Добавлял, даже два(одним не отделаешься). Не помогло. Был вообще глюк: прога запускалась, среда устанавливалась, а параметр не передавался.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Неясность с CreateProcess
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]