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

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

передний план


Gu ©   (2011-09-29 08:58:00) 

есть несколько функций для вывода окна на передний план

ShowWindow(Application.MainForm.Handle,SW_RESTORE);
SetActiveWindow(Application.MainForm.Handle);
SetForegroundWindow(Application.MainForm.Handle);

но на передний план окно выводится в редких случаях (win7x64ent), в основном только кнопка на панели задач моргает. раньше помница какойто параметр был в виндах типа "запрещать окнам забирать фокусировку" и кнопка мигала, никто не знает как это отключить хотябы на время или может еще какие функции есть?

вот это тоже не помогает:

procedure AppGoToForeground;
var
 Info: TAnimationInfo;
 Animation: Boolean;
begin
 // Проверяем, включена ли анимация для окон
 Info.cbSize := SizeOf(TAnimationInfo);
 Animation := SystemParametersInfo(SPI_GETANIMATION, SizeOf(Info), @Info, 0) and
   (Info.iMinAnimate <> 0);
 // Если включена, отключаем, чтобы не было ненужного мерцания
 if Animation then
 begin
   Info.iMinAnimate := 0;
   SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
 end;
 // Если приложение не минимизировано, минимизируем
 if not IsIconic(Application.Handle) then Application.Minimize;
 // Восстанавливаем приложение. При этом оно автоматически выводится
 // на передний план
 Application.Restore;
 // Если анимация окон была включена, снова включаем её
 if Animation then
 begin
   Info.iMinAnimate := 1;
   SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
 end;
end;


Омлет   (2011-09-29 13:47:00) [1]

> RWolf ©

Обычно это делается при предотвращении запуска второй копии приложения - уже запущенный экземпляр должен выползти на передний план.


RWolf   (2011-09-29 13:32:00) [2]

а зачем вам выводить окно неактивного приложения на передний план?
чтобы мешать пользователю печатать?
для уведомлений есть специальная область — трей. за подробностями юзер сам сходит, щелчком мыши.


Gu   (2011-09-29 11:25:00) [3]


> Омлет ©   (29.09.11 09:17) [1]

это уже видел. там из всей толпы только функция с маусом работает, но как то стремно - курсор на другие приложение кликает попутно

+


> Еще есть SwitchToThisWindow


тоже странно себя ведет, окно вытаскивается на передний план через раз, а вместе с ним все окна которые под ним были.

> Вот так попробуй

интересно, ща займусь пробованием...


DVM   (2011-09-29 10:10:00) [4]


> Gu   (29.09.11 08:58) 

Вот так попробуй http://www.swissdelphicenter.ch/torry/showcode.php?id=261
Несмотря на все дебаты вокруг метода, работает нормально уже многие годы.

Еще есть SwitchToThisWindow()


Омлет   (2011-09-29 09:17:00) [5]

http://www.transl-gunsmoker.ru/2010/10/blog-post_25.html


Наверх

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