![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приложения [D7, WinXP]
Lera © (2006-04-07 13:39:00)Доброго времени суток! У меня открыты 2 приложения. 1 полностью закрывает 2. Не одно не свернуто. Подскажите похалуйста, как вывести 2 поверх 1. Application.restore не помогает, оно почемуто работает тока после Application.minimize. Application.BringToFront почеиуто работает только, когда приложения запускаются из Delphi. Прям не знаю что делать.
Lera (2006-04-11 14:47:00) [1]понятно.....спасибо огромное
Leonid Troyanovsky (2006-04-11 13:20:00) [2]
> Lera (11.04.06 13:02) [12]
> сделала управляющее приложение принудительно SetForegroundWindow(Fm_disp.
> Handle), после чего посылаю сообщение приложению, которое
> закрыто....оно принимает
Может я непонятно говорю?
Сделай маленькое приложение с одной формой и одной кнопкой,
для которой напиши:
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
begin
h := FindWindow('Notepad', nil);
if IsIconic(h) then
ShowWindow(h, SW_RESTORE);
SetForegroundWindow(h);
end;
Запусти Блокнот, затем это приложение, нажми на кнопку.
Получилось?
Для дельфийских приложений есть небольшая особенность,
оперировать надо с окном Application - пример я приводил.
--
Regards, LVT.
Lera (2006-04-11 13:02:00) [3]сделала управляющее приложение принудительно SetForegroundWindow(Fm_disp.Handle), после чего посылаю сообщение приложению, которое закрыто....оно принимает сообщение и выполняет код, который вы написали
////////////////////////////////
if IsIconic(Application.Handle) then
ShowWindow(Application.Handle, SW_RESTORE);
SetForegroundWindow(Application.Handle);
if IsIconic(fm_disp_panel.Handle) then
ShowWindow(fm_disp_panel.Handle, SW_RESTORE);
SetForegroundWindow(fm_disp_panel.Handle);
////////////////////////////////
приложение не ложиться поверх...только мерцает его занчок на нижней панели виндоус
Leonid Troyanovsky (2006-04-11 11:21:00) [4]
> Lera (10.04.06 13:17) [7]
> у меня 3 приложения....из одного(шапка 2-х других) я посылаю
> сообщения в другие....и потом само приложение пытаеться
> себя поставить поверх другого.....
Неправильно.
Я ж написал, как нужно сделать.
Т.е., сделать другое приложение foreground может только то
приложение, которое, в данный момент, само foreground.
--
Regards, LVT.
Lera (2006-04-11 10:03:00) [5]не уж то никак нельзя это сделать?
Lera (2006-04-10 13:36:00) [6]нельзя три окна....приложения очень объемные по коду....решают разные задачи....было принято решение делать их отдельными экзешниками
balepa (2006-04-10 13:30:00) [7]Они че у тебя все Always on top ?
На***на такой изврат ?
Можно же просто три окна в одном приложении сделать или нет ?
Lera (2006-04-10 13:17:00) [8]у меня 3 приложения....из одного(шапка 2-х других) я посылаю сообщения в другие....и потом само приложение пытаеться себя поставить поверх другого.....спасибо за код.....но с ним приложение не ложиться поверх...только мерцает его занчок на нижней панели виндоус
Leonid Troyanovsky (2006-04-10 11:07:00) [9]
> Lera (10.04.06 10:10) [5]
Сначала надо найти какое-нибудь окно второго приложения,
например, по его классу и/или названию:
var
h: HWND;
h := FindWindow('WindowClass', 'WindowTitle');
Win32Check(h<>0);
А затем пытаться вывести его на передний план:
procedure ActivatePrevInstance(wnd: HWND);
var
h : HWND;
begin
h := GetWindowLong(wnd, GWL_HWNDPARENT);
if IsIconic(h) then
ShowWindow(h, SW_RESTORE);
SetForegroundWindow(h);
end;
Не забудь: первое приложение, из которого будет выполняться
этот код, должно быть активно, т.е. быть foreground.
--
Regards, LVT.
Lera (2006-04-10 10:10:00) [10]не работает....к сожалению
Handle (2006-04-10 09:50:00) [11]BringWindowToTop(hWnd);
Lera (2006-04-10 09:27:00) [12]может быть кто-нибудь знает?
Lera (2006-04-07 15:24:00) [13]не помогает...приложение не ложится поверх....тока значек на нижней панели виндов приложения мерцает
balepa (2006-04-07 14:57:00) [14]SetForeGroundWindow(hwnd)
А Restore оно и есть потому что после minimize