AutoHotKey: #IfWinActive .* Проводник *. ? в окнах 7

Я пытаюсь создать макрос AutoHotKey, активный только в проводнике Windows, но я не знаю имени проводника в Windows 7. Я пробовал следующее:

;Make explorer understand that Ctrl+L means goto location bar (like Firefox / Chrome)
#IfWinActive .* Explorer *.
    ^l::Send {F4}
#IfWinActive

Любые идеи?


person Ola    schedule 09.12.2010    source источник
comment
Этот вопрос, вероятно, принадлежит superuser.com   -  person Ither    schedule 09.12.2010
comment
Ах. Я не знал об этом. Спасибо. Я задам следующие вопросы там.   -  person Ola    schedule 09.12.2010
comment
Связано: superuser.com/q/1489874/169199   -  person Avatar    schedule 08.10.2019


Ответы (3)


Autohotkey поставляется с программой под названием Window Spy. Вы можете использовать его, чтобы узнать заголовок активного окна.

Также обратите внимание на ahk_class (найдите ahk_class в файле справки), который использует тип окна, а не заголовок. Например, в моем случае с Win 7 я могу ограничить горячие клавиши для проводника, указав:

#IfWinActive ahk_class CabinetWClass
person Nathan    schedule 09.12.2010
comment
Это работает для вас? Это не для меня (в Win7), хотя Window Spy говорит мне то же самое, что и вы написали. Или мне тоже нужно вставить какой-то подстановочный знак? - person Ola; 09.12.2010
comment
Это работает для следующего кода: #IfWinActive ahk_class CabinetWClass #a:: Msgbox Да, это работает! Может быть, если вы опубликуете сброс своей процедуры с горячими клавишами, есть что-то помимо горячей клавиши, вызывающее проблемы? - person Nathan; 09.12.2010
comment
Это сработало. Но я переназначил свой l выше, чтобы мне пришлось написать ^p::Send {F4}, чтобы он соответствовал коду клавиши l. Большое спасибо за помощь! - person Ola; 10.12.2010
comment
То же имя для Windows 10: CabinetWClass - person Avatar; 08.10.2019

Проводник Windows, похоже, использует разные классы окон в разное время (например, отображается ли поиск или нет - по крайней мере, в Win XP). Этот сценарий соответствует двум классам, которые я видел, и сопоставляет Ctrl-L с «фокусом на адресной строке» (например, Firefox) в Проводнике:

#IfWinActive ahk_class ExploreWClass
^L::
#IfWinActive ahk_class CabinetWClass
^L::
    Send {F6}
return
#IfWinActive
person Jay G    schedule 08.07.2011

Просто хотел поблагодарить Натана за решение моей проблемы - практически идентичной вопросу Олы здесь. Использовал очень популярный скрипт AHK под названием Favorite_folders, который отображает меню папок при нажатии средней кнопки. Я использовал в течение многих лет в XP без проблем, но не смог заставить скрипт работать в Win7 в окне проводника Windows.

Сценарий работал во всех окнах проводника программ, но НЕ в обычном окне проводника Windows (как в -- Пуск › щелкните правой кнопкой мыши › Открыть проводник Windows). Потратил более 20 часов, пытаясь решить.

Совет Натана использовать сценарий #IfWinActive ahk_class CabinetWClass решил мою проблему. Это привело меня к тому, что я добавил следующий скрипт в скрипт Favorite_folders:

IfWinActive ahk_class ШкафWClass

f_AlwaysShowMenu = y

По-видимому, CabinetWClass относится к окну проводника Windows, тогда как ExploreWClass относится к окну проводника, которое появляется в различных программах при открытии или сохранении файла. Мне нужно было меню для обеих ситуаций.

В исходном скрипте Favorite_folders командная строка для разрешения появления меню f_Hotkey = ~MButton гласит: -- if f_class in #32770,ExploreWClass,CabinetWClass ; Диалог или Проводник. По неизвестным причинам это позволяет отображать меню только в окне проводника программ, но НЕ в обычном окне проводника Windows.

Добавив две приведенные выше командные строки в исходный сценарий Favorite_folders, я смог заставить меню появляться в обычных окнах проводника Windows, но НЕ в окнах проводника программ — та же проблема в обратном порядке. И если бы я добавил вторую аналогичную модификацию скрипта для #IfWinActive ahk_class ExploreWClass -- тогда ни в одном из окон проводника не появилось меню. Сумасшедшие вещи - по моим расчетам.

Таким образом, решение для меня состояло в том, чтобы загрузить две отдельные версии AHK-скрипта Favorite_folders: 1) немодифицированный исходный скрипт Favorite_folders; 2) отдельный модифицированный оригинальный скрипт Favorite_folders с вставленной в него двухстрочной командой #IfWinActive ahk_class CabinetWClass, вдохновленной Натаном. СЕЙЧАС -- меню появляется в обоих типах окон проводника. Непонятно, ПОЧЕМУ эти сценарии не могут отображаться в одном сценарии, но они прекрасно работают как отдельные сценарии.

Так что ОГРОМНОЕ спасибо Натану и Оле за то, что подняли и решили этот вопрос и мою проблему.

person Mary Conseca    schedule 15.05.2019
comment
К сожалению, очередь предлагаемых правок заполнена. Может быть, также есть заслуга Jay G? - person Cadoiz; 26.06.2021