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

Вниз

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

 
Vasilisk   (2004-11-03 11:34) [0]

Мастера, мне необходимо запустить внешнее приложение из своего, и дождаться окончания его выполнения (например элемент "Панели управления"), но при этом, чтобы оно было МОДАЛЬНЫМ окном по отношению к моему приложению.

P.S. Пробывал CreateProcess, ShellExecuteEx - не совсем то, что нужно (при переключении задач, я опять попадаю на окно моего приложения, а НЕ на открытое им окно другого приложения), может не во всех параметрх разобрался? Кто знает - подскажите.

Заренее благодарен.


 
Digitman ©   (2004-11-03 11:57) [1]


> может не во всех параметрх разобрался?


нет там никаких параметров, управляющих "модальностью".

свойством модальности может обладать окно, но не процесс, и уж тем более не приложение

а для того чтобы в твоем случае заведомо немодальное окно порожденного процесса оставалось на переднем плане и не теряло фокус до момента его закрытия юзером, можно, например, установить хук на сообщение WM_ACTIVATEAPP гл.окна порожденного процесса, и при обнаружении параметра FALSE немедленно же слать этому окну тот же WM_ACTIVATEAPP с параметром TRUE, т.е. принимать меры по принудительной активации.


 
TUser ©   (2004-11-03 12:10) [2]

Может WaitForSingleObject после CreateProcess - и ждать, пока внешнее приложение не выполнится?


 
Vasilisk   (2004-11-03 12:16) [3]

For TUser:

Может WaitForSingleObject... пробывал, эта функци блокирует обработку сообщений окна "родительской программы" но даёт нужный эффект, НО мне нужно чтоб и оно перерисовывалось когда например "хлопаешь" окнами других программ, следовательно - не подходит. Констукция типа : while WaitForSingleObject(PI.hProcess, 0) = WAIT_TIMEOUT do Application.ProcessMessages;
снимает эффект "модальности".


 
TUser ©   (2004-11-03 12:25) [4]

Тогда, наверное, придется переписать wndproc родительского приложения. И ввести флаг - есть/нет подальное окно. Приерно так
if {нет модального окна} or (msg = wm_paint) then
inherited



Страницы: 1 вся ветка

Текущий архив: 2004.12.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
4-1099381257
bigcrush
2004-11-02 10:40
2004.12.19
Непонятная работа хука на WH_GETMESSAGE


14-1101808656
syte_ser78
2004-11-30 12:57
2004.12.19
фельетоны перестроечных времен


3-1100534722
Ivan_
2004-11-15 19:05
2004.12.19
Ошибка в TIBQuery


1-1102402685
stud
2004-12-07 09:58
2004.12.19
текстовый файл


8-1095737837
Ктото
2004-09-21 07:37
2004.12.19
Как вывести картинку или 3D-объект на форму на OpenGL ?