Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Приложения [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо