Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

TrayIcon   Найти похожие ветки 

 
ORMADA ©   (2007-01-26 10:42) [0]

Всем привет!
Опять мучаю трейикон...

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

но возникла следующая трабла
как определить при клике по трейиконке что форма ничем не перекрыта
GetForegroundWindow <> Application.Handle)

такой код не проходит т.к. при клике по трею фокус уходит с главной формы и GetForegroundWindow всегда будет возвращать НЕ Application.Handle....


 
Дмитрий Белькевич ©   (2007-01-26 13:05) [1]

Есть мнение, что этим заморачиваться не нужно - просто сворачивай и разворачивай.


 
Elen ©   (2007-01-26 13:08) [2]


> ORMADA

GetForegroundWindow <> Form1.Handle


 
Elen ©   (2007-01-26 13:20) [3]


> ORMADA

Кстати Application.Handle это не FormXX.handle. ;)


 
ORMADA ©   (2007-01-26 19:57) [4]

есть дурное желание сделать именно как описал...

GetForegroundWindow <> Application.MainForm.Handle

тоже не то
т.к. при клике по трею фокус уходит с главной формы (думаю на десктоп (вероятно HWND=0))

пробовал делать так

// if not FIsMinimized then
//  begin
//    if (GetForegroundWindow = Application.MainForm.Handle) then
//    begin
//      Application.Minimize;
//      TrayIcon.HideMainForm;
//      FIsMinimized := False;
//      exit;
//    end
//    else
//    begin
//      SetForegroundWindow(Application.Handle);
//      exit;
//    end;
//  end;

 if FIsMinimized then
 begin
   TrayIcon.ShowMainForm;
   TrayIcon.HideTaskbarIcon;
   FIsMinimized := False;
 end
 else
 begin
   Application.Minimize;
   TrayIcon.HideMainForm;
   FIsMinimized := True;
 end;


 
ORMADA ©   (2007-01-29 11:37) [5]

решение найдено
именно так как я и говорил
через поиск частично перекрывающих окон

 function IsTopMost(wnd: HWND): Boolean;
 begin
   Result := (GetWindowLong(wnd, GWL_EXSTYLE) or WS_EX_TOPMOST) <> 0;
 end;

var
 wnd                                   : HWND;
 r1, r2, r3                            : TRect;
begin
 if not FIsMinimized then
 begin
   wnd := Handle;
   repeat
     wnd := GetNextWindow(wnd, GW_HWNDPREV);

     if IsTopmost(wnd) then
       if IsWindowVisible(wnd) then
       begin
         GetWindowRect(wnd, r1);
         GetWindowRect(Application.MainForm.Handle, r2);
         if IntersectRect(r3, r1, r2) then
         begin
           FIsMinimized := True;
           break;
         end;
       end;
   until wnd = 0;
 end;

 if FIsMinimized then
 begin
   TrayIcon.ShowMainForm;
   TrayIcon.HideTaskbarIcon;
   FIsMinimized := False;
 end
 else
 begin
   Application.Minimize;
   TrayIcon.HideMainForm;
   FIsMinimized := True;
 end;


 
Separator ©   (2007-01-29 11:54) [6]

А не проще проверять на visible mainform?


 
evvcom ©   (2007-01-29 11:58) [7]

Продвинутое запуздыривание иконки? Растет форум :)


 
Elen ©   (2007-01-29 12:19) [8]


> т.к. при клике по трею фокус уходит с главной формы

The GetForegroundWindow function returns the handle of the foreground window
Причем тут фокус? (в общем у меня GetForegroundWindow <> Form1.Handle работает без проблем)



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

Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.043 c
2-1170271927
Monty
2007-01-31 22:32
2007.02.18
Помогите с шифратором(запись и чтение из файла)


2-1170102348
Ping-Pong
2007-01-29 23:25
2007.02.18
Поддержка русского языка только в моей программе


1-1166801665
Джо
2006-12-22 18:34
2007.02.18
TypeLib Editor, /*Warning: unable to validate structure name: */


4-1158174928
Teenager
2006-09-13 23:15
2007.02.18
Изменение цвета фона чужого окна


1-1167034804
Opilki_Inside
2006-12-25 11:20
2007.02.18
Отключить окно с CPU





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский