LonerD

|
Posted: Sun Jun 15, 2014 17:43 Post subject: |
|
|
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-α |
|