View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Mar 21, 2010 14:30 Post subject: |
|
|
MVV wrote: | т.е. фактически это прямоугольничек 170х2 пикселей, расположенный внизу экрана в 30 точках от правой его границы. | Я не просил расшифровывать код. Я там не правильно изначально исправил. У меня получается 198X30. Я имел ввиду: как привести его в виду с первым предложенным случаем? |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Mar 21, 2010 16:45 Post subject: |
|
|
MVV wrote: | С каким именно? | Цитирую: MVV wrote: | Зачем так извращаться? Левый верхний угол экрана имеет координаты (0, 0), поэтому прямоугольник в нем при любых разрешениях элементарно ловится абсолютными размерами: Code: | If ($mpos[0] < 2) And ($mpos[1] < 8) Then[/quote] |
| Я уже всё указал. И всё изначально работало. Вопрос был только в компактности кода, о котором ты пишешь.
Вот вопросик: а можно переделать скрипт, чтобы все окна становились поверх Панели задач при перемещении курсора от неё в область любого окна(без нажатия кн. крысы)? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu May 27, 2010 21:07 Post subject: |
|
|
Нужна подсказка в модификации скрипта для скрытия панели задач при переводе фокуса курсора с области, где располагается панель задач, т.е. скрытие организовать аналогично системному. Добавляю к скрипту Code: |
If ($mpos[0] <= @DesktopWidth - 0) And ($mpos[1] < @DesktopHeight - 28) Then
$list = WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_HIDE)
If $list[1][1] > 0 Then WinHide ($list[0][0])
EndIf | Понятно, что неправильно.) |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Fri May 28, 2010 09:45 Post subject: |
|
|
Flasher
Вот так:
Code: |
If ($mpos[0] <= @DesktopWidth - 0) And ($mpos[1] < @DesktopHeight - 28) Then
WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_HIDE)
Else
WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_SHOW)
EndIf
|
Но проблема в том, что метрики десктопа остаются старые, следовательно и для приложений всё остается по-старому и они не разворачиваются ниже верхней границы панели. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri May 28, 2010 13:02 Post subject: |
|
|
Loopback wrote: | следовательно и для приложений всё остается по-старому и они не разворачиваются ниже верхней границы панели | "Разворачиваются" в каком смысле? Имеется в виду - не становятся активными? Я сделал так: Code: | EndIf
If ($mpos[0] <= @DesktopWidth - 0) And ($mpos[1] < @DesktopHeight - 28) Then
WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_HIDE)
EndIf
If ($mpos[0] <= @DesktopWidth - 0) And ($mpos[0] < @DesktopWidth - 2) And ($mpos[1] > @DesktopHeight - 2) Then
WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_SHOW)
EndIf
| Но мне это не даёт преимущества над системной надстройкой, а именно - разворачивания панели в окнах со скрытым TitleBar(до этого изменения работало). Что для этого требуется? И какой класс нужно указывать для любого развёрнутого окна? Я что-то не нашёл. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Fri May 28, 2010 13:32 Post subject: |
|
|
Теперь я не понял...
Давай пойдем так - а какие нужны преимущества по сравнению со стандартной опцией? Я ее не включаю, поэтому не очень представляю тонкостей (и недостатков) ее работы. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri May 28, 2010 13:50 Post subject: |
|
|
Loopback wrote: | а какие нужны преимущества по сравнению со стандартной опцией? | "Расшифровываю": появление панели задач, если активно приложение, в котором с помощью аддона/утилиты скрыта строка заголовка. Так понятно? При системном скрытии в таких окнах при наведении курсора внизу экрана панель задач появляться не будет; там, насколько я понимаю, задействован режим FullScreen. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri May 28, 2010 14:37 Post subject: |
|
|
Фуф.., сделал. Code: | ; Скрытие/появление панели задач в любых оконных режимах
While 1
GUIGetMsg()
$mpos = MouseGetPos()
If ($mpos[0] <= @DesktopWidth - 0) And ($mpos[1] < @DesktopHeight - 28) Then
WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_HIDE)
EndIf
If ($mpos[0] <= @DesktopWidth - 0) And ($mpos[1] > @DesktopHeight - 2) Then
WinSetState("[CLASS:Shell_TrayWnd]", "", @SW_SHOW)
$list = WinList("[CLASS:Shell_TrayWnd]")
If $list[0][0] > 0 Then WinActivate ($list[1][1])
EndIf
Wend |
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri May 28, 2010 18:31 Post subject: |
|
|
Теперь у меня следующая задача: нужно прикреплённую сбоку десктопа панель быстрого запуска также выводить в режимах FullScreen, HideTitleBar по аналогии с предыдущим решением, при котором QuickLaunch появлялся только после активации TaskBar, и то с некоторой задержкой, несмотря на полностью отключённую анимацию и обнуление задержек в реестре. Поиск показал такие варианты - 1, 2, но они подразумевают использование #include, у меня нет пока желания эту папку, лежащую в корне Тотала пополнять, да и решения там связаны больше с изменением размера и включением/отключением опции. Думал что-то подобное прокатит - Code: | If ($mpos[0] < @DesktopWidth - 2) Then
WinSetState("[CLASS:WMTRAY_TOGGLEQL]", "", @SW_SHOW)
EndIf
If ($mpos[0] > @DesktopWidth - 27) Then
WinSetState("[CLASS:WMTRAY_TOGGLEQL]", "", @SW_HIDE)
EndIf | , ан нет.. Какие будут предложения? |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Tue Jun 01, 2010 10:57 Post subject: |
|
|
Flasher
Похоже эти примеры не подойдут, поскольку они работают с панелью запуска, находящейся в панели задач. Если же его прицепить к экрану, получается окно с классом "BaseBar".
Вот такой код у меня работает.
Code: |
While 1
GUIGetMsg()
$mpos = MouseGetPos()
If ($mpos[0] > @DesktopWidth - 2) Then
WinSetState("[CLASS:BaseBar]", "", @SW_SHOW)
WinSetOnTop("[CLASS:BaseBar]", "", 1)
ElseIf ($mpos[0] < @DesktopWidth - 27) Then
WinSetOnTop("[CLASS:BaseBar]", "", 0)
WinSetState("[CLASS:BaseBar]", "", @SW_HIDE)
EndIf
Wend
|
Да, и еще: у панели должна стоять опция "Скрывать автоматически". |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jun 01, 2010 12:43 Post subject: |
|
|
Loopback
Спасибо за подсказку класса. К сожалению ни в FullScreen, ни в HideTitleBar появляться панель сбоку самостоятельно никак не хочет, функции WinSetOnTop не хватает приоритета, либо QuickLaunch скрытым образом привязан к TaskBar. Пробовал с list - также ничего не дало. Остаётся рассчитывать либо на что-то новенькое, либо на одновременный показ панели задач с панелью быстрого запуска, чего бы конечно не очень-то хотелось.(
Кстати знаки ">", "<" в коде перепутаны. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Tue Jun 01, 2010 12:59 Post subject: |
|
|
Flasher
Ну не знаю, у меня появлется нормально.
Flasher wrote: | Кстати знаки ">", "<" в коде перепутаны. |
Отнюдь. Если позиция больше @DesktopWidth - 2 - показываем. Т.е. при разрешении 1280 появление панели будет при координате мыши больше 1278. Что вроде правильно. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jun 01, 2010 13:14 Post subject: |
|
|
Loopback wrote: | Ну не знаю, у меня появлется нормально. | Хм. А не трудно снимок развёрнутого окна сделать, например, со скрытой строкой заголовка? Интересно стало. Loopback wrote: | Если позиция больше @DesktopWidth - 2 - показываем. | Зачем показывать? Наоборот скрывать! Как и с случае работы системной опции. Т.е. при подведении курсора краю экрана панель появляется, после того, как пересекла 27 пикселей должна скрываться. Или я Чего-то не пойму? Ради прикола попробовал с предложенными знаками, панель намертво присосалась к краю экрана в скрытом режиме.. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Tue Jun 01, 2010 16:32 Post subject: |
|
|
Flasher
Даже в движении. У себя ничего с полноэкранными окнами без заголовка не нашел, поэтому создаю окно скриптом. Тестовый скрипт такой (впрочем, он виден и на видео):
Code: |
#include <WindowsConstants.au3>
$hGUI = GUICreate("Тест", 200, 200, -1, -1, $WS_POPUP)
$hExit = GUICtrlCreateButton("Выход", 20, 20)
GUISetState()
Sleep(500)
WinSetState($hGUI, "", @SW_MAXIMIZE)
Sleep(500)
While 1
If GUIGetMsg() = $hExit Then Exit
$mpos = MouseGetPos()
If ($mpos[0] > @DesktopWidth - 2) Then
WinSetState("[CLASS:BaseBar]", "", @SW_SHOW)
WinSetOnTop("[CLASS:BaseBar]", "", 1)
ElseIf ($mpos[0] < @DesktopWidth - 27) Then
WinSetOnTop("[CLASS:BaseBar]", "", 0)
WinSetState("[CLASS:BaseBar]", "", @SW_HIDE)
EndIf
Wend
|
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|