Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Активация окна Total Commander движением мыши
Goto page Previous  1, 2, 3, 4  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Mar 21, 2010 14:30    Post subject: Reply with quote

MVV wrote:
т.е. фактически это прямоугольничек 170х2 пикселей, расположенный внизу экрана в 30 точках от правой его границы.
Я не просил расшифровывать код. Я там не правильно изначально исправил. У меня получается 198X30. Я имел ввиду: как привести его в виду с первым предложенным случаем?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sun Mar 21, 2010 16:15    Post subject: Reply with quote

Flasher wrote:
MVV wrote:
т.е. фактически это прямоугольничек 170х2 пикселей, расположенный внизу экрана в 30 точках от правой его границы.
Я там не правильно изначально исправил. У меня получается 198X30. Я имел ввиду: как привести его в виду с первым предложенным случаем?

С каким именно? Конкретно что ты хочешь? Размер и положение прямоугольника укажи, а там видно будет, к чему и можно ли.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Mar 21, 2010 16:45    Post subject: Reply with quote

MVV wrote:
С каким именно?
Цитирую:
MVV wrote:
Зачем так извращаться? Левый верхний угол экрана имеет координаты (0, 0), поэтому прямоугольник в нем при любых разрешениях элементарно ловится абсолютными размерами:
Code:
If ($mpos[0] < 2) And ($mpos[1] < 8) Then[/quote]
Я уже всё указал. И всё изначально работало. Вопрос был только в компактности кода, о котором ты пишешь.

Вот вопросик: а можно переделать скрипт, чтобы все окна становились поверх Панели задач при перемещении курсора от неё в область любого окна(без нажатия кн. крысы)?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu May 27, 2010 21:07    Post subject: Reply with quote

Нужна подсказка в модификации скрипта для скрытия панели задач при переводе фокуса курсора с области, где располагается панель задач, т.е. скрытие организовать аналогично системному. Добавляю к скрипту
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
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Fri May 28, 2010 09:45    Post subject: Reply with quote

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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri May 28, 2010 13:02    Post subject: Reply with quote

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
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Fri May 28, 2010 13:32    Post subject: Reply with quote

Теперь я не понял...
Давай пойдем так - а какие нужны преимущества по сравнению со стандартной опцией? Я ее не включаю, поэтому не очень представляю тонкостей (и недостатков) ее работы.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri May 28, 2010 13:50    Post subject: Reply with quote

Loopback wrote:
а какие нужны преимущества по сравнению со стандартной опцией?
"Расшифровываю": появление панели задач, если активно приложение, в котором с помощью аддона/утилиты скрыта строка заголовка. Так понятно? Smile При системном скрытии в таких окнах при наведении курсора внизу экрана панель задач появляться не будет; там, насколько я понимаю, задействован режим FullScreen.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri May 28, 2010 14:37    Post subject: Reply with quote

Фуф.., сделал.
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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri May 28, 2010 18:31    Post subject: Reply with quote

Теперь у меня следующая задача: нужно прикреплённую сбоку десктопа панель быстрого запуска также выводить в режимах 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
, ан нет.. Какие будут предложения? Rolling Eyes
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Tue Jun 01, 2010 10:57    Post subject: Reply with quote

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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jun 01, 2010 12:43    Post subject: Reply with quote

Loopback
Спасибо за подсказку класса. К сожалению ни в FullScreen, ни в HideTitleBar появляться панель сбоку самостоятельно никак не хочет, функции WinSetOnTop не хватает приоритета, либо QuickLaunch скрытым образом привязан к TaskBar. Пробовал с list - также ничего не дало. Остаётся рассчитывать либо на что-то новенькое, либо на одновременный показ панели задач с панелью быстрого запуска, чего бы конечно не очень-то хотелось.(
Кстати знаки ">", "<" в коде перепутаны.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Tue Jun 01, 2010 12:59    Post subject: Reply with quote

Flasher
Ну не знаю, у меня появлется нормально.

Flasher wrote:
Кстати знаки ">", "<" в коде перепутаны.

Отнюдь. Если позиция больше @DesktopWidth - 2 - показываем. Т.е. при разрешении 1280 появление панели будет при координате мыши больше 1278. Что вроде правильно.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jun 01, 2010 13:14    Post subject: Reply with quote

Loopback wrote:
Ну не знаю, у меня появлется нормально.
Хм. А не трудно снимок развёрнутого окна сделать, например, со скрытой строкой заголовка? Интересно стало.
Loopback wrote:
Если позиция больше @DesktopWidth - 2 - показываем.
Зачем показывать? Наоборот скрывать! Как и с случае работы системной опции. Т.е. при подведении курсора краю экрана панель появляется, после того, как пересекла 27 пикселей должна скрываться. Или я Чего-то не пойму? Ради прикола попробовал с предложенными знаками, панель намертво присосалась к краю экрана в скрытом режиме..
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Tue Jun 01, 2010 16:32    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 3 of 4

 
Jump to:  
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