Форум: "WinAPI";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c