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: AutoHotKey для перехода между дисками как в Dos Navigator 
Author Message
Belkin



PostPosted: Mon May 15, 2006 00:51    Post subject: Reply with quote

Привет. Мне было проще написать скрипт заново, чем искать источник глюков. Получилось, как мне кажется, проще а может и надежнее.
Сам я не нахожу такую навигацию удобной, поэтому долго тестировать не стал. Но всё же немного погонял. Вроде не глючило. Надеюсь такой вариант решения задачи тебе подойдет. Удачи.

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 ; отключаем контекстную чувствительность горячих клавиш
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group