Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.24;
Скачать: CL | DM;

Вниз

Запуск программы в модальном режиме   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.014 c
15-1200851799
Alex_xelA
2008-01-20 20:56
2008.02.24
Модель предметной области


3-1191933250
Still Swamp
2007-10-09 16:34
2008.02.24
Проблема с блоб полем.


11-1183749714
Matroskin66
2007-07-06 23:21
2008.02.24
Несколько вопросов по ListView и Memo


2-1201538510
MVanya
2008-01-28 19:41
2008.02.24
вопрос про интерфейсы


15-1200828041
Parus
2008-01-20 14:20
2008.02.24
PHP and mod_layout (help)