|
|
|
Неясность с CreateProcess
|
|||
|---|---|---|---|
|
#18+
Добрый день. Расклад в общем такой: есть СУБД, кот. называется СЭД. Для нее изредка приходят апдейты в виде архивов 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); } Что я делаю не так и что мне нужно исправить? (Только не говорите, что ошибка в ДНК) :) С уважением. Пантер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2007, 18:25 |
|
||
|
Неясность с CreateProcess
|
|||
|---|---|---|---|
|
#18+
в батнике запустить и дождаться завершения: start /wait yourfile.exe ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2007, 18:30 |
|
||
|
Неясность с CreateProcess
|
|||
|---|---|---|---|
|
#18+
aak__в батнике запустить и дождаться завершения: start /wait yourfile.exe Прикольно. А без батника можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2007, 18:32 |
|
||
|
Неясность с CreateProcess
|
|||
|---|---|---|---|
|
#18+
panter_dsdЧто я делаю не так и что мне нужно исправить? Неправильно задаешь окружение. Забыл добавить завершающий ноль. panter_dsd(Только не говорите, что ошибка в ДНК) :)Хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2007, 18:40 |
|
||
|
Неясность с CreateProcess
|
|||
|---|---|---|---|
|
#18+
White Owl panter_dsdЧто я делаю не так и что мне нужно исправить? Неправильно задаешь окружение. Забыл добавить завершающий ноль. panter_dsd(Только не говорите, что ошибка в ДНК) :)Хорошо. Добавлял, даже два(одним не отделаешься). Не помогло. Был вообще глюк: прога запускалась, среда устанавливалась, а параметр не передавался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2007, 18:59 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=300&tid=2029115]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 391ms |

| 0 / 0 |
