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 

Single Post  Topic: AHK: Активация файловой панели при наведении мыши 
Author Message
LonerD



PostPosted: Sun Jun 15, 2014 17:43    Post subject: Reply with quote

Flasher wrote:
Условия должны быть в начале кода после проверки активности окна ТС.

Так они и есть в начале кода.

Flasher wrote:
Можно пруфскрин при чистом конфиге увидеть?

Можно. Вот и вот. (так как речь идёт о скрипте прокрутки вкладок, то разумеется в панелях открыты вкладки).
Дальнейшие обсуждения табов предлагаю продолжить в отдельной теме; сегодня выложу скрипт, тогда виднее будет что к чему.


Добавлено спустя 8 минут:

;================================================================
Альтернативный вариант скрипта, который реагирует только на движение мыши (через мышиный хук). Лишён некоторых проблем предыдущей версии. Если не двигать мышью - работают переименование файлов и прочие операции с текстовыми полями, работает навигация с клавиатуры... Но имеются некоторые свои проблемы - невозможно выставить задержку, панель активируется сразу при наведении. Скрипт "залипает" при активации некоторых других окон (например, на окно Оперы реагирует спокойно, а активация окна Акелпада действует на скрипт тлетворно). Может, кто знает как это побороть?

Code:

;================================================================
; Сделать файловую панель активной при наведении на неё курсора мыши
; Альтернативный вариант
; Версия скрипта: 1.0a
; Дата создания: 2014.06.15
; Автор скрипта: LonerD
; Идея и помощь: OnMyDSeeAtAll
; Сайт: http://dreamlair.net
;================================================================
; WM_USER+51 = 1075
; cm_FocusRight = 4002
; cm_FocusLeft = 4001
;================================================================

#NoEnv
#NoTrayIcon
#Persistent
#KeyHistory, 0
#SingleInstance, force
ListLines, Off

hHookKeybd := DllCall("SetWindowsHookEx"
   , Int, WH_MOUSE_LL := 14
   , Int, RegisterCallback("LowLevelMouseProc", "Fast")
   , UInt, DllCall("GetModuleHandle", UInt, 0)
   , UInt, 0)
Return

LowLevelMouseProc(nCode, wParam, lParam)
{
If WinActive("ahk_class TTOTAL_CMD")
{
  GetKeyState, LBState, LButton, P
  if ( LBState != D )
  {
    MouseGetPos,,,, mControl
    if ( mControl ~= "ListBox" )
    {
      WinGet, TCHWND, ID, A
      SeparateTree := 0
      Loop, 3
      {
        ControlGetText, TMyText%A_Index%, TMyListBox%A_Index%, % "ahk_id " TCHWND
        ControlGetText, LCLText%A_Index%, LCLListBox%A_Index%, % "ahk_id " TCHWND
        if ( TMyText%A_Index% = "W_TreeList2" || LCLText%A_Index% = "W_TreeList2" )
        {
          SeparateTree := 2
          break
        }
        else if ( TMyText%A_Index% = "W_TreeList1" || LCLText%A_Index% = "W_TreeList1" )
          SeparateTree := 1
      }
      Loop, 3
      {
        TMyListBox%A_Index% := "ListBox" (SeparateTree + A_Index)
      }
        if ( mControl ~= TMyListBox1 )
          PostMessage, 1075, 4002,,, % "ahk_id " TCHWND
        else if ( mControl ~= TMyListBox3 )
          PostMessage, 1075, 4001,,, % "ahk_id " TCHWND
        else if ( mControl ~= TMyListBox2 )
        {
          WinGet, TCControls, ControlList, % "ahk_id " TCHWND
          TCFTPMode := 0
          Loop, Parse, TCControls, `n, `r
            {
              if ( A_LoopField ~= TMyListBox3 )
              {
                TCFTPMode := 1
                break
              }
            }
          PostMessage, 1075, 400 (TCFTPMode="1" ? 2:1),,, % "ahk_id " TCHWND
        }
    }
  }
}
}

_________________
Windows 11 | TC DreamLair eternal pre-α
View user's profile Send private message Visit poster's website ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group