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