Перейти к содержимому

AutoHotKey WinЗакрыть с помощью CTRL + W

2

Я использовал WinClose Script в AutoHotKey, чтобы закрыть окна с помощью Ctrl+ w(^ w). Поскольку Ctrl+ wиногда уже является ярлыком для закрытия окна (или вкладки в Firefox), я снова отправляю знак Ctrl+, wкоторый заканчивается в бесконечном цикле, я полагаю. Как я могу решить это?

Это сообщение об ошибке:

enter image description here

И это мой сценарий:

;;; make the “CTRL+W” key to close window or tab. ; which key to send depends on the application ^w:: IfWinActive ahk_class ATH_Note { ; ATH_Note is Windows Mail ; Ctrl+F4 Send ! } IfWinActive ahk_class Notepad { ; Alt+F4 Send ! } Else IfWinActive ahk_class Outlook Express Browser Class { WinMinimize, A } Else IfWinActive ahk_class IrfanView { Send  } Else ; IE, Firefox, Google Chrome, Opera { Send ^w } Return 
4 777 просмотров
FiveO спросил 13 лет назад
F 5 089

2 ответа

6
Принятый ответ

Я бы попробовал использовать контекстно-зависимые горячие клавиши вместо проверки активного окна при нажатии клавиш. Ваши другие горячие клавиши по-прежнему работают так же, но поскольку ваши браузеры не указаны, они сохранят свою нормальную функциональность. Я создал желаемую функциональность, используя код ниже:

#IfWinActive ahk_class ATH_Note ^w::Send ! #IfWinActive  #IfWinActive ahk_class Notepad ^w::Send ! #IfWinActive  #IfWinActive ahk_class Outlook Express Browser Class ^w::WinMinimize, A #IfWinActive  #IfWinActive ahk_class IrfanView ^w::Esc #IfWinActive 

Если между программами есть общие горячие клавиши, вы также можете создавать группы:

GroupAdd, FileExplorer, ahk_class EVERYTHING GroupAdd, FileExplorer, ahk_class CabinetWClass GroupAdd, FileExplorer, ahk_class #32770  #IfWinActive ahk_group FileExplorer ^w::WinMinimize, A #IfWinActive 

Спасибо, хороший вопрос, но проблема возникает с программами, которых у меня нет в моем скрипте (случай ELSE). Но вы правы, может быть, я должен просто сделать контекстно-зависимый скрипт, только программы, о которых я знаю, их горячие клавиши.

FiveO · 13 лет назад · 0
Elliot DeNolf ответил 13 лет назад
E 773
0

Как я вижу, у вас нет возврата в операторе if, так что имеется ввиду циклическое повторение до тех пор, пока ваш скрипт не рухнет, также вы должны включить else return, ... попробуйте этот подход.

Отредактировано:

 $^w:: IfWinActive ahk_class ATH_Note { ; ATH_Note is Windows Mail ; Ctrl+F4 Send ! } IfWinActive ahk_class Notepad { ; Alt+F4 Send ! } Else IfWinActive ahk_class Outlook Express Browser Class { WinMinimize, A } Else IfWinActive ahk_class IrfanView { Send  }  else { Send ^ return } Return 

Используйте $, чтобы предотвратить многократный запуск при использовании команды « Отправить» . $

Нет, к сожалению, если вы отправите ^ w в операторе else (см. Мой код), вы также попадете в цикл (даже с возвратом).

FiveO · 13 лет назад · 0

Код отредактирован, и он работает, он будет работать без ошибок, и он вернется, когда это необходимо ... все остальное объяснение такое же

tonni · 13 лет назад · 0
tonni ответил 13 лет назад
T 139