Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запуск программы в модальном режиме [D6, XP]


Страницы:   1 2

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 я знаю, но к сожалению нужен именно описанный вариант. Чтобы моя программулина лочила...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо