HNK Цитата: создать список HookWindowEvents и оттуда вызывать скрипт
Код:
Local hh=win.handle("c=КлассОкна")
if(activewindow(hh))do
*Bar Close имя_панели
endif
Quit
Вопрос не в том, чтобы только автоматически закрывать панель при активизации определенного окна, но чтобы показать при переходе в другое окно.
Получился такой скрипт:
/*
BarHider
Скрытие/отображение панель для отдельных программ.
Панель не скрывается для программ, окно которых не развёрнуто максимально.
*/
// Если панель выключена вручную никаких действий не выполняется
If ( PProFlag( 0 ) == 0 ) Do
Local hWnd = Win.Handle( "=FireFox" )
If ( ActiveWindow( hWnd ) == 0 ) Do
Jump BarShow
Else
// Отловлено окно требуемой программы и это окно не развёрнуто
// во весь экран
If ( Win.Maxxed( hWnd ) ) Do
If ( cl.GetBarHandle( "(Top)" ) != "" ) Do
cl.Close( "(Top)" )
Endif
Else
Jump BarShow
Endif
Endif
Endif
Quit
// Включить панель при её отсутствии
@BarShow
If ( cl.GetBarHandle( "(Top)" ) == "" ) Do
cl.Show( "(Top)" )
Endif
Quit
// Ручное выключение/ включение панели
Function Visible
If ( cl.getBarHandle( "(Top)" ) == "" ) Do
cl.Show( "(Top)" )
Flag clear 0 0
Else
cl.Close( "(Top)" )
// Отметка "Панель выключена вручную"
Flag set 0 0
EndIf
Quit
В HookWindowEvents вставляется вызов .BarHider, дополнительно на горячую клавишу навешивается .BarHider@Visible для ручного управления.