View previous topic :: View next topic |
Author |
Message |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Jun 15, 2014 20:13 Post subject: |
|
|
LonerD wrote: | Так они и есть в начале кода. | Так а ты наличие контролов не отслеживаешь.
LonerD wrote: | Можно. Вот и вот. | Хм. Забирай.
И это касается здешнего скрипта тоже, работу в режиме быстрого просмотра никто не отменял.
LonerD wrote: | через мышиный хук | Вариант пошустрее первого.
LonerD wrote: | невозможно выставить задержку | Почему?
LonerD wrote: | активация окна Акелпада действует на скрипт тлетворно | У меня всё в порядке. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
LonerD

Joined: 04 Jan 2011 Posts: 1172 Location: Макеевка
|
(Separately) Posted: Sun Jun 15, 2014 21:47 Post subject: |
|
|
Flasher wrote: | Так а ты наличие контролов не отслеживаешь. |
Наличие контролов отслеживать бесполезно, они всегда Enabled. Проверять нужно тот факт, что контрол видимый (контрол TInEdit1/Edit1 становится видимым, когда инициируется процесс переименования файла - можно отследить скриптовой программой Control Viewer).
GetKeyState, LBState, LButton, P ; проверяю, что зажата левая кнопка мыши.
ControlGet, Editmode32, Visible,, TInEdit1, A ; проверяю, что видимый контрол переименования файла в 32-х битном Тотале
ControlGet, Editmode64, Visible,, Edit1, A ; то же самое в 64-х битном
if ( LBState != D ) and ( Editmode32 = 0 ) and ( Editmode64 = 0 ) ; Если левая кнопка мыши не зажата И если не видимы контролы переименования - тогда выполняется остальной скрипт.
Flasher wrote: | LonerD wrote: | Можно. Вот и вот. | Хм. Забирай.
И это касается здешнего скрипта тоже, работу в режиме быстрого просмотра никто не отменял. |
Хм... Буду думать дальше.
Flasher wrote: | LonerD wrote: | невозможно выставить задержку | Почему? |
Потому, что не знаю как именно и где именно выставлять. Во втором варианте скрипта движение мыши отслеживается постоянно. Если в функцию LowLevelMouseProc вставить паузу Sleep - мыша начинает вести себя непредсказуемо; при маленькой паузе движения похожи на слоу-мо, при высокой паузе - почему-то первый рывок сложный, а дальше работает как будто паузы и нет... _________________ Windows 11 | TC DreamLair eternal pre-α |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Jun 15, 2014 22:46 Post subject: |
|
|
LonerD wrote: | Проверять нужно тот факт, что контрол видимый | Согласен. Помню, что с ControlGet связано.
LonerD wrote: | Если левая кнопка мыши не зажата И если не видимы контролы переименования - тогда выполняется остальной скрипт. | Да, я на новый код уже смотрел.
LonerD wrote: | а дальше работает как будто паузы и нет | Мм. Там что-то на лупах завязано. Надо помозговать. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
LonerD

Joined: 04 Jan 2011 Posts: 1172 Location: Макеевка
|
(Separately) Posted: Sun Jun 15, 2014 22:54 Post subject: |
|
|
;================================================================
Ап. И ещё один вариант - микс из таймера (значение можно регулировать) и хука движения мыши. У меня вроде не "залипает" после активации других окон. Пока не работает проверка на зажатую левую кнопку (при копировании/перемещении). С панелями быстрого просмотра ещё тоже не разбирался, наверняка долгая история с ними будет.
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 _________________ Windows 11 | TC DreamLair eternal pre-α
Last edited by LonerD on Mon Jun 16, 2014 04:30; edited 1 time in total |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Jun 16, 2014 00:02 Post subject: |
|
|
LonerD wrote: | Пока не работает проверка на зажатую левую кнопку (при копировании/перемещении). |
Quote: | If WinActive("ahk_class TTOTAL_CMD")
{ |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
LonerD

Joined: 04 Jan 2011 Posts: 1172 Location: Макеевка
|
(Separately) Posted: Mon Jun 16, 2014 04:29 Post subject: |
|
|
Flasher
Спасибо. Гениально и просто. Зациклился на While not GetKeyState("LButton") / GetKeyState , а до такого не додумался. _________________ Windows 11 | TC DreamLair eternal pre-α |
|
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
|