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 22:54    Post subject: Reply with quote

;================================================================
Ап. И ещё один вариант - микс из таймера (значение можно регулировать) и хука движения мыши. У меня вроде не "залипает" после активации других окон. Пока не работает проверка на зажатую левую кнопку (при копировании/перемещении). С панелями быстрого просмотра ещё тоже не разбирался, наверняка долгая история с ними будет.

Code:

;================================================================
 ; Сделать файловую панель активной при наведении на неё курсора мыши
 ; Альтернативный вариант
 ; Версия скрипта: 1.05a
 ; Дата создания: 2014.06.15
 ; Автор скрипта: LonerD
 ; Фрагменты кода: OnMyDSeeAtAll, serzh82saratov
 ; Сайт: http://dreamlair.net
 ;================================================================

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

hHookMouse := DllCall("SetWindowsHookEx" . (A_IsUnicode ? "W" : "A")
   , Int, WH_MOUSE_LL := 14
   , Int, RegisterCallback("LowLevelMouseProc", "Fast")
   , Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr)
   , UInt, 0, Ptr)
 Return

LowLevelMouseProc(nCode, wParam, lParam)
{
   Critical
   SetTimer, mTimer, -50
   Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, UInt, wParam, UInt, lParam)
}

mTimer:
If WinActive("ahk_class TTOTAL_CMD")
{
    KeyWait, LButton
    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
      }
  }
}
W_TreeList2
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α


Last edited by LonerD on Mon Jun 16, 2014 04:30; edited 1 time in total
View user's profile Send private message Visit poster's website ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group