![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Активация предыдущей копии приложения
Степан © (2007-03-24 21:47:00)Запретил одновременный запуск 2х и более копий моего приложения, но хочу, чтоб при запуске копии, активизировалось окно главной формы исходного экземпляра приложения. Поиск окна, открытие и активацию осуществляю так:
procedure ActivatePreviousInstance;
var
PrevInstWnd: HWND;
begin
PrevInstWnd := FindWindow('TMainForm', nil);
if PrevInstWnd <> 0 then begin
ShowWindow(PrevInstWnd, SW_SHOWNORMAL);
ShowWindow(PrevInstWnd, SW_RESTORE);
SetWindowPos(PrevInstWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or
SWP_SHOWWINDOW);
// SetForegroundWindow(PrevInstWnd);
end;
end;
Класс главного окна: TMainForm. Дескриптор определяется правильно и окно отображается на экране, если свернуто... но поверх всех показываться не хочет (что SetWindowPos'ом, что SetForegroundWindow'ом). Кто-нибудь сталкивался с этим? что посоветуете?
Степан (2007-03-25 11:47:00) [1]Спасибо, буду пробовать
Johnmen (2007-03-25 00:11:00) [2]
...
BringWindowToTop(PrevInstWnd);
SetForegroundWindow(PrevInstWnd);
...
Leonid Troyanovsky (2007-03-24 22:43:00) [3]
> Степан (24.03.07 21:47)
> что посоветуете?
http://groups.google.com/group/fido7.su.win32.prog/msg/1984ffcf8ae2b539
--
Regards, LVT.
S@shka (2007-03-24 22:26:00) [4]FormStyle := fsStayOnTop;