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

Вниз

Вывод приложения на передний план...   Найти похожие ветки 

 
МитяЙ2 ©   (2003-03-23 10:41) [0]

У меня в программе есть проверка на повторный запуск.
И при этом повторном запуске я хочу вывести на передний
план уже ранее запущенную программу, и не запускать
второй экземпляр приложения.

Мастера подскажите, почему следующий код (в 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. Прочитал много справок по повторному запуску приложений, но все, что там есть не помоголо!


Заранее, ОЧЕНЬ благодарен!

МитяЙ.


 
Song ©   (2003-03-23 11:08) [1]

Вот этой строчкой
ShowWindow(FindWindow("TfmMyProg", nil),SW_SHOW);

Вы пытаетесь восстановить приложение? Из какого состояния? Из минимизированного? если нет, тогда для чего она нужна.
SetForeGroundWindow() достаточно должно быть.


 
Митяй2 ©   (2003-03-23 11:37) [2]

1. Ладно ShowWindow убираю, т.к. приложение - restore
2. SetForeGroundWindow не работает, хоть убей!

И в XP и в Windows 98SE


 
Митяй2 ©   (2003-03-23 11:41) [3]

Это мистика какая-то!
Может из-за каких-нибудь свойств ФОРМЫ, имеющей тип "TfmMyProg"
или ????????


 
Anatoly Podgoretsky ©   (2003-03-23 12:27) [4]

Работает защита от выпрыгунчикоы, которые хотят в самый не подходящий момент выпругнуть на передний план.


 
Митяй2 ©   (2003-03-23 12:38) [5]

Анатолий, в системе что-ли?

Если да, то где?

Если прикол - то, где взять ВЛОМЩИК от выпрыгунчиков? :-))))



 
Song ©   (2003-03-23 13:47) [6]

2Митяй2 © (23.03.03 11:37)
Если приложение - restore, тогда убирать ничего не надо, просто используйте константу SW_RESTORE


 
МитяЙ2 ©   (2003-03-23 14:37) [7]

Оказывается у меня выше FindWindow("TfmMyProg", nil) стояло (прорабатывало любом случае):

Application.Initialize;
Application.Title := "caption";
Application.CreateForm(TfmMyProg, fmMyProg);

Т.е. в системе было несколько созданных окон типа TfmMyProg.


 
Митяй2 ©   (2003-03-23 14:41) [8]

Извиняйте, кого зря побеспокоил.



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
3-70091
KAA1971
2003-05-03 14:14
2003.05.22
insert into table2 select * from table1


9-70077
Pavel_s
2002-12-11 14:46
2003.05.22
Лучшая книга по OpenGL


4-70555
Axis_of_Evil
2003-03-21 15:42
2003.05.22
FindEditEx


1-70237
Ststus_I
2003-05-12 01:53
2003.05.22
Программно редактировать EXEшник


1-70363
FZ*XupypG
2003-05-10 04:08
2003.05.22
Сохранение типа TColor в текстовый файл и чтение его оттуда