1

В этом посте с кратким описанием есть фрагмент, подобный следующему: используйте Backspace для перехода на один уровень вверх в Windows Explorer:

#IfWinActive, ahk_class CabinetWClass

; Please run on Windows 7+ 
Backspace::
    ControlGet renamestatus,Visible,,Edit1,A
    ControlGetFocus focussed, A
    if(renamestatus!=1 && (focussed=="DirectUIHWND3"||focussed==SysTreeView321))
    {
        MsgBox, Don't check this ; debug
        SendInput !{Up}
    }else{
        tooltip, Back-delete a char
        Send {Backspace} ; Why does it not trigger another Backspace hotkey?
    }
return
#IfWinActive

Но я очень озадачен, почему он может написать

Backspace::

вместо

$Backspace::

Согласно документу, когда вы переименовываете файл в проводнике Windows 7, ни один случай не приведет к тому, что нажатие Backspace вызовет больше Backspace бесконечно, НО на самом деле это не происходит. Может кто-нибудь помочь объяснить это?

Попробуйте с Autohotkey 1.1.13.01, на Windows 7.

1 ответ1

1

Из раздела справки #UseHook :

Горячие клавиши будут реализованы с использованием метода по умолчанию (если возможно, RegisterHotkey (); в противном случае - клавиатура).

Обычно, функция Windows API RegisterHotkey() используется для реализации горячей клавиши клавиатуры, когда это возможно. Тем не менее, реагирование горячих клавиш может быть лучше при некоторых условиях, если вместо этого используется клавиатурный хук.

Включение этой директивы эквивалентно использованию префикса $ в определении каждой задействованной горячей клавиши.

Таким образом, у горячей клавиши есть один из двух методов регистрации и несколько способов установки одного из этих двух методов регистрации. Вы можете посмотреть, какой метод используется для регистрации горячей клавиши, запустив скрипт как #persistent или как часть другого скрипта, который является постоянным, а затем открыв окно скрипта на значке в трее и выбрав View > Hotkeys and their methods (Ctrl+H) Горячая клавиша будет указана там с помощью k-hook или reg - двух опций, описанных выше в разделе справки #UseHook .

Следующее приведет k-hook:

#UseHook
Backspace::

Это также приведет к зацепке клавиатуры:

$Backspace::

Это также приведет к зацепке клавиатуры:

#IfWinActive, ahk_class CabinetWClass
Backspace::

Это приведет к регулярной регистрации, и reg будет отображаться в списке горячих клавиш:

Backspace::

Или в целом:

#IfWinActive
Backspace::

Важным отличием является конечный результат и то, зарегистрирован ли он как клавиатурный хук или нет. Если вы хотите попробовать бесконечно повторяющийся Backspace, удалите или замените #IfWinActive, ahk_class CabinetWClass и нажмите Backspace в окне проводника. Все должно сойти с ума на секунду, а затем вы должны получить сообщение о том, что получено слишком много горячих клавиш, и вы уверены, что хотите продолжить. Веселитесь с этим.

Еще один инструмент, который может вас заинтересовать, - просто добавить значок «Вверх» обратно в папки Windows 7 ... бесплатная утилита, представленная ниже, отлично работает, и вы можете просто выбрать 1 из 4 вариантов, доступных в программе установки, как только вы скачать и запустить его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .