![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод приложения на передний план... [D7, Win95/98, Win2k, WinXP]
МитяЙ2 © (2003-03-23 10:41:00)У меня в программе есть проверка на повторный запуск.
И при этом повторном запуске я хочу вывести на передний
план уже ранее запущенную программу, и не запускать
второй экземпляр приложения.
Мастера подскажите, почему следующий код (в MyProg.dpr) не работает:
my_hwnd:THandle;
my_hwnd:=FindWindow("TfmMyProg", nil);
if my_hwnd<>0 then // сюда мы попадаем, проверял в отладчике (т.е. форму находит этот код)
Begin
ShowWindow(FindWindow("TfmMyProg", nil),SW_SHOW); // это не дает нужного результата!
SetForegroundWindow(my_hwnd); // это работает - заметно, когда окно поверх остальных.
End;
P.S. Прочитал много справок по повторному запуску приложений, но все, что там есть не помоголо!
Заранее, ОЧЕНЬ благодарен!
МитяЙ.
Митяй2 (2003-03-23 14:41:00) [1]Извиняйте, кого зря побеспокоил.
МитяЙ2 (2003-03-23 14:37:00) [2]Оказывается у меня выше FindWindow("TfmMyProg", nil) стояло (прорабатывало любом случае):
Application.Initialize;
Application.Title := "caption";
Application.CreateForm(TfmMyProg, fmMyProg);
Т.е. в системе было несколько созданных окон типа TfmMyProg.
Song (2003-03-23 13:47:00) [3]2Митяй2 © (23.03.03 11:37)
Если приложение - restore, тогда убирать ничего не надо, просто используйте константу SW_RESTORE
Митяй2 (2003-03-23 12:38:00) [4]Анатолий, в системе что-ли?
Если да, то где?
Если прикол - то, где взять ВЛОМЩИК от выпрыгунчиков? :-))))
Anatoly Podgoretsky (2003-03-23 12:27:00) [5]Работает защита от выпрыгунчикоы, которые хотят в самый не подходящий момент выпругнуть на передний план.
Митяй2 (2003-03-23 11:41:00) [6]Это мистика какая-то!
Может из-за каких-нибудь свойств ФОРМЫ, имеющей тип "TfmMyProg"
или ????????
Митяй2 (2003-03-23 11:37:00) [7]1. Ладно ShowWindow убираю, т.к. приложение - restore
2. SetForeGroundWindow не работает, хоть убей!
И в XP и в Windows 98SE
Song (2003-03-23 11:08:00) [8]Вот этой строчкой
ShowWindow(FindWindow("TfmMyProg", nil),SW_SHOW);
Вы пытаетесь восстановить приложение? Из какого состояния? Из минимизированного? если нет, тогда для чего она нужна.
SetForeGroundWindow() достаточно должно быть.