Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.06;
Скачать: CL | DM;

Вниз

CreateProcess и “DOS архиватор”.   Найти похожие ветки 

 
xGrey ©   (2003-01-17 11:51) [0]

Уважаемые мастера! Помогите советом.

Создаю процесс ф-цией CreateProcess в котором запускается “DOS архиватор”. Процесс автоматически завершается после закрытия окна архиватора.
Жду окончание работы процесса ф-цией WaitforSingleObject.

Проблема в следующем: в Win9x для архиватора должен существовать *.pif файл, в котором хранится информация о том, что нужно "закрывать окно после завершения работы". Иначе процесс не завершается и приложение вешается.
Можно ли избавиться от *.pif файла, передав входным параметрам ф-ции CreateProcess соответствующие данные?


 
DOOMin   (2003-01-17 12:42) [1]

А что за архиватор? Не легче ли найти компоненты, которые будут паковать в этот формат без запуска стороннего приложения? Практически для всех распространенных архиваторов таковые имеются www.torry.net


 
xGrey ©   (2003-01-17 13:03) [2]

to DOOMin
ARJ 2.71
IMHO, эта проблема будет с любым "поддосовым" архиватором в Win9x.
Исп. чего-то стороннего не хочется, т. к. уже написан и работает соотв. класс.
Тем более что передовая в pCommandLine (CreateProcess) путь к архиватору + ключи, можно работать пр. с любым архиватором.
Меня смущает только одно: пользователь, сняв галку в св-вах *.pif "закрывать окно после завершения работы", может подвесить мое приложение...


 
AKu   (2003-01-17 13:35) [3]

У меня пару дней назад возникла такая же проблема, которую нужно было срчно решить. Я применил очень тупой метод: запустил архиватор (у меня - HA.exe) CreateProcess c параметром SW_ShowMinimized, а потом

var p:TProcessInfo;
...
while WaitForSingleObject(p.hProcess,100)=WAIT_OBJECT_0 do
if FindWindow(nil,"(Сеанс завершен) - HA")<>0 then TerminateProcess(p.hProcess);

Для моих целей такого кода оказалось вполне достаточно, но интересно узнать, как же это можно сделать по-человечески.


 
xGrey ©   (2003-01-17 14:13) [4]

to AKu
Вариант, конечно :)

Правда, теряется универсальность:
-для каждого исп. архиватора нужно хранить константы с соотв. надписями;
-надпись будет зависеть от локализации OS и от типа OS (9x / NT), возможно и от локальных настроек пользователя.
+ доп. расход ресурсов на сканирование окна каждые 100 миллисекунд.

IMHO, с *.pif все же лучше....


 
AKu   (2003-01-17 15:16) [5]

Кстати, может быть попробовать запускать не сам архиватор, а BAT-файл вида:

arj %1
exit


 
AKu   (2003-01-17 16:28) [6]

Я тут подумал, наверное лучше всего перенаправить вывод архиватора в другое место, заменив hStdOut в StartupInfo, тогда он не будет использовать окно консоли. Пример смотри в программе TDosMemo на этом сайте.
А по поводу моего раннего способа могу сказать, что я над ним раньше не раздумывал, мне срочно нужно было перепаковать несколько сотен файлов и я не заботился об изящности способа.


 
xGrey ©   (2003-01-17 17:52) [7]

То AKu:
Спасибо, посмотрю.



Страницы: 1 вся ветка

Текущий архив: 2003.03.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-17107
Маришка
2003-02-26 08:11
2003.03.06
использование микрофона


1-17041
Stream2k
2003-02-22 08:41
2003.03.06
Реестр >>> Помогите плиз!!!!!


3-16916
Arick
2003-02-15 22:31
2003.03.06
Документация для чайников


14-17383
rusdeejay
2003-02-17 21:57
2003.03.06
Необходим Специалист


9-16852
CHiF_
2002-10-07 12:57
2003.03.06
dxg формат