Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-17345
Дмитрий К.К.
2003-02-18 06:21
2003.03.06
Именинники 18 февраля


4-17465
ers
2003-01-17 09:28
2003.03.06
Как запустить в отладочном режиме?


14-17365
Dracula2000
2003-02-18 16:34
2003.03.06
Service pack for Delphi 5


1-17032
Checist [root]
2003-02-25 10:06
2003.03.06
Запуск файла


3-16943
bavc
2003-02-17 06:42
2003.03.06
Таблица 2 in 1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский