Belkin
|
Posted: Mon May 15, 2006 00:51 Post subject: |
|
|
Привет. Мне было проще написать скрипт заново, чем искать источник глюков. Получилось, как мне кажется, проще а может и надежнее.
Сам я не нахожу такую навигацию удобной, поэтому долго тестировать не стал. Но всё же немного погонял. Вроде не глючило. Надеюсь такой вариант решения задачи тебе подойдет. Удачи.
Code: |
SendMode Input ; новый режим высылки без задержки и повышенной надежности
#IfWinActive, ahk_class TTOTAL_CMD ; если активно окно ТС (включаем контекстную чувствительность горячих клавиш), то...
^Left::
SetTimer, Control_Up, 100 ; переходить к указанной подпрограмме через каждые 0.1 секунды
GetKeyState, state, LControl ; получить положение левого CTRL
if state = D ; если нажат левый CTRL
SendMessage, 0x433, 131,,, ahk_class TTOTAL_CMD ; выслать команду Левая: открыть список выбора диска
Else ; если нажат правый CTRL
SendMessage, 0x433, 231,,, ahk_class TTOTAL_CMD ; выслать команду Правая: открыть список выбора диска
Send, {Up} ; перейти к предыдущему диску
DNDiskChange = 1 ; выставляем указатель, что существует окно выбора дисков
return ; закончить обработку горячей клавиши
^Right::
SetTimer, Control_Up, 100 ; переходить к указанной подпрограмме через каждые 0.1 секунды
GetKeyState, state, LControl ; получить положение левого CTRL
if state = D ; если нажат левый CTRL
SendMessage, 0x433, 131,,, ahk_class TTOTAL_CMD ; выслать команду Левая: открыть список выбора диска
Else ; если нажат правый CTRL
SendMessage, 0x433, 231,,, ahk_class TTOTAL_CMD ; выслать команду Правая: открыть список выбора диска
Send, {Down} ; перейти к следующему диску
DNDiskChange = 1 ; выставляем указатель, что существует окно выбора дисков
return ; закончить обработку горячей клавиши
Control_Up: ; таймер проверки отжатия CTRL
GetKeyState, state, Control ; получить положение CTRL
if ( state = "U" and DNDiskChange = 1 ) ; если CTRL отжат И существует окно выбора дисков, то...
{
SetTimer, Control_Up, off ; выключить таймер
Send, {Enter} ; выбрать выделенный диск
DNDiskChange = ; выставляем указатель, что диск уже выбран
}
Return ; конец подпрограммы по таймеру
#IfWinActive ; отключаем контекстную чувствительность горячих клавиш (эту строчку можно убрать, если такую же строку ниже оставить)
; Хотя эти три строчки ниже не относятся к заявленной задаче, я их оставил, т.к. в твоем посте что-то такое (случайно?) затесалось, и чему я предлагаю другое решение.
#IfWinActive, ahk_class TInpComboDlg ; если активно окно копир-я/перемещ., то...
Enter:: Send, {F2} ; поставить в очередь
#IfWinActive ; отключаем контекстную чувствительность горячих клавиш
|
|
|