![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запуск программы в модальном режиме [D6, XP]
q1485 © (2008-01-24 19:34:00)Мне нужно написать программулину, которую что-то будет вызывать, передавая ей параметры в консоли.
После вызова будет появляться окно моей программы и нужно сделать так, чтобы оно было модальным, то есть лочило до своего завершения приложение, которое его запустило. Подскажите пожалуйста, как?
palva (2008-01-28 17:08:00) [1]Так выпьем же за то, чтобы наши странные желания совпадали с нашими интеллектуальными возможностями.
Игорь Шевченко (2008-01-28 16:18:00) [2]В древнем Китае желающим странного отрубали голову. Мудро.
q1485 (2008-01-28 15:55:00) [3]
> palva © (28.01.08 10:34) [17]
Спасибо!
ketmar (2008-01-28 11:10:00) [4]>[16] q1485 (28.01.08 10:16)
вся задача — один большой изврат.
palva (2008-01-28 10:34:00) [5]> Под Handle родителя я это и имел ввиду......
Тогда читайте обсуждение этой темы здесь:
http://forum.sources.ru/index.php?showtopic=209024&st=15&hl=
q1485 (2008-01-28 10:16:00) [6]Я тебе не поянил? Где увидел изврат?
ketmar (2008-01-28 10:00:00) [7]да, тяжело. если ты не можешь пояснить — значит задача не имеет практического смысла. следовательно, нечего заниматься цереброизвращениями.
q1485 (2008-01-28 09:54:00) [8]Ну могу пояснить...
Запускающее приложение не мое, поэтому [1] не подходит.
Мое приложение принимает параметры и выполняет определенные действия. Во время выполнения оно рисует окно с неким прогресс баром информируя пользователя о статусе выполнения операции. Нужно чтобы вызывающее приложение было заблокировано пока ползунок не добежит до конца..
Это так тяжело представить?
ketmar (2008-01-28 09:48:00) [9]как всё запущено… может, ты всё-таки пояснишь, нафига оно надо? и чем не подходит [1]? если приложение не твоё, и код туда не добавишь — с чего тебе понадобилось что-то там «лочить»? зачем? мне за 10 лет вот ни разу не понадобился такой изврат.
q1485 (2008-01-28 09:42:00) [10]
> palva © (27.01.08 09:49) [11]
Не знаю что за pipe...
Я под консолью имел ввиду вызов исполняемого файла с параметрами.
Т.е.
"имя exe" "параметры"
и не более...
Ведь программу запустит какой то процесс. Надо узнать его PID, а потом по PID узнать handle и потом залочить EnableWindow(ParentWindowHandle, FALSE)
Под Handle родителя я это и имел ввиду......
palva (2008-01-27 09:49:00) [11]
> Причем запускать программулину будет стороннее (не мое)
> Win32 приложение..
Ага. Причем это приложение сначала запустит консоль. (Как же иначе оно "будет вызывать, передавая ей параметры в консоли" (см. [0])) Затем в эту консоль через pipe введет имя этой "программулины" с нужными параметрами и нажмет Enter. Правильно я понимаю?
> Тогда, вопрос, как узнать Handle родителя?
Что такое родитель и чего родитель? Если у вас есть окно, то функцией GetParent можно узнать Handle родительского окна.
q1485 (2008-01-26 22:12:00) [12]
> программу вызывают с параметрами, программа должна появиться
> визуально как модальное окно вызывающего приложения и до
> своего закрытия не отпускать вызывающие приложение.
Тут все верно... Причем запускать программулину будет стороннее (не мое) Win32 приложение..
> Dib@zol © (25.01.08 18:01) [6]
Думаю, WinAPI будет сложновато..
> EnableWindow(ParentWindowHandle, FALSE)
Тогда, вопрос, как узнать Handle родителя?
Anatoly Podgoretsky (2008-01-25 18:52:00) [13]
> Ну к примеру, я поставил эту программу в автозагрузку, а
> она должна заблокировать какой-нибудь системный процесс
> Windows, да еще чтобы окно появилось
Это уже вирус.
palva (2008-01-25 18:18:00) [14]
> Скорее всего, раз первая, "вызывающая" прога - твоя
Ну вот, еще одна версия... Буду тренировать телепатор на досуге.
palva (2008-01-25 18:14:00) [15]> Зачем разводить глупую философию. Человек все понятно изложил.
Ну раз я спросил, значит мне непонятно. Наверно, я недостаточно крут для той фени, на котором написано [0]. Тем более что автор противоречит сам себе. А вы поняли его еще как-то иначе. Оказывается, программа должна заставить то приложение, которое ее вызвало, показать модальное окно. Ну к примеру, я поставил эту программу в автозагрузку, а она должна заблокировать какой-нибудь системный процесс Windows, да еще чтобы окно появилось. А если в этом системном процессе даже кода такого нет, который мог бы показывать модальные окна? Что же, эта программа должна внедрить код?
Если автор заинтересован в ответе, он должен участвовать в обсуждении и отвечать на вопросы.
Dib@zol (2008-01-25 18:01:00) [16]А если главное окно проги назначить дочерним и модальным относительно окна "родительской" проги? Вообще я однажды делал нечто подобное... q1485, если ты сможешь разобраться в WinAPI, попробую сляпать пример. Единственная проблема - как обеспечить собсно модальность. Скорее всего, раз первая, "вызывающая" прога - твоя, то в ней проще всего создать пустое окно и прописать его хендл в параметры вызова (а запускаемая должна "принять" его как своё главное окно и весь свой GUI выводить в нем, проставив ему собственную оконную процедуру), чтоб не париться с отловом и остановкой потока обработки сообщений родительской проги через мессадж-хуки.
clickmaker (2008-01-25 17:56:00) [17]EnableWindow(ParentWindowHandle, FALSE)
bobr (2008-01-25 17:50:00) [18]
> palva © (24.01.08 23:55) [3]
Зачем разводить глупую философию. Человек все понятно изложил. Или нужно составить ТЗ и опубликовать его здесь?
программу вызывают с параметрами, программа должна появиться визуально как модальное окно вызывающего приложения и до своего закрытия не отпускать вызывающие приложение.
как сделать я лично не знаю.
palva (2008-01-24 23:55:00) [19]> которую что-то будет вызывать, передавая ей параметры в консоли
что-то - это программа или человек?
этот что-то будет запускать вашу программу из консоли?
или это что-то должна быть консольная программа?
>чтобы оно было модальным, то есть лочило до своего завершения приложение
объясните что значит лочить и как окно может лочить. Почему модальность окна означает, что оно кого-то лочит.
>Чтобы моя программулина лочила...
Так что же должно лочить окно или программулина.
q1485 (2008-01-24 23:18:00) [20]Спасибо. Про WaitForSingleObject я знаю, но к сожалению нужен именно описанный вариант. Чтобы моя программулина лочила...