LonerDergunov
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: У меня Ваш код ни каких проблем с мышью не выявил. | Интересно. У меня Win 8.1 x 64, TC 8.51a (чистый) - двойные клики при запущенном скрипте не всегда работают. Пробовал оптимизировать - вначале узнать на каком контролле фокус, а потом передать фокус контроллу только в случае если он под куросором и не-в-фокусе. Не помогло. Возможно, особенность программы (программы+ОС) - частые ControlGetFocus/ControlFocus "глушат" двойные клики - время между кликами должно быть меньше, чем время опроса панелей таймером. Попробовал по аналогии передавать фокус в проводнике Win 8.1 x 64 между деревом каталогов слева и файловой панелью - скрипт работает отлично даже при очень частом таймере. Код: #NoEnv #NoTrayIcon #Persistent #SingleInstance ignore SetTimer subTimer, 10 subTimer: if WinActive( "ahk_class CabinetWClass" ) { ControlGetFocus, mFocus, ahk_class CabinetWClass MouseGetPos,,,, mControl if (( mControl = "DirectUIHWND3" || mControl = "SysTreeView321" ) && mFocus != mControl ) ControlFocus, % mControl, ahk_class CabinetWClass } | Спасибо за вариант с PostMessage, работает стабильно. Думал уже о чём-то подобном, но если делать вариант для общего случая - получится совсем неэлегантно, и слишком много вычислений постоянно придётся выполнять скрипту... PS. Ой мамочки... сколько проверок нужно будет делать... Не очень понятны фрагменты кода: SetTimer, % "SubTimer", 250 - почему знак процента и название таймера в кавычках? Exit, (mControl) And mControl:="" - возвращаем mControl? (куда, почему в скобочках?) и очищаем его значение? |