4

Я создаю горячую клавишу в автоматических клавишах, чтобы активировать Google Chrome или перемещаться между всеми окнами Chrome.

Горячая клавиша - Win + H (h означает http).

Если пользователь нажимает Win + Shift + H, он открывает новое окно Chrome

Если пользователь нажимает Win + H дважды, он перемещается между всеми окнами Chrome:

Обновление: см. Полный сценарий внизу. Всем спасибо:

Проблема в том, что AutoHotKeys не может найти класс Chrome, поэтому всегда открывается новое окно:

Эта функция всегда возвращает false:If WinExist ahk_class Chrome_WidgetWin_1

Пожалуйста, порекомендуйте.

файл сценария:

#h::
SetTitleMatchMode, 2
If WinExist ahk_class Chrome_WidgetWin_1
{
ifWinActive
WinActivatebottom ,Chrome_WidgetWin_1
else
WinActivate 
return
}
run chrome.exe

Я нашел ошибку.

В этой версии AutoHotkeys и Google Chrome есть ошибка с функцией ifWinExist. Пользователь может использовать;

WinActivate ahk_class Chrome_WidgetWin_1

но не может использовать:

If WinExist ahk_class Chrome_WidgetWin_1

Это всегда ложь!

Надеюсь, что этот вопрос и ответ поможет кому-то (я не могу написать ответ, потому что у меня только 1 очко репутации)

Обновление: это исходный код, для Win + n Open Notepad или переключения между открытыми блокнотами.

+ Shift + n Открыть новый блокнот.

Win + c Откройте cmd.exe или переключайтесь между консольными окнами.

Win + Shift + C Открыть новую консоль.

Win + h Откройте Google Chrome или переключайтесь между окнами Chrome + Shift + H Открыть новый браузер.

SetTitleMatchMode, 2


;********command line
#c::
IfWinExist ,cmd.exe
{
ifWinActive
WinActivatebottom ,cmd.exe
else
WinActivate
return
}
#+c::
run cmd.exe
return

;******************Chrome
#h::
IfWinExist ,Chrome
    {
    ifWinActive
        {
        WinActivatebottom ,Chrome
    }
    else
    {
        WinActivate
    }
    return
}

#+h::
run "chrome"
return 
;**************Notepad
#n::
IfWinExist ,Notepad
    {
    ifWinActive
        {
        WinActivatebottom ,Notepad
    }
    else
    {
        WinActivate
    }
    return
}

#+n::
run "notepad"
return

2 ответа2

2

Я использую только имя (так как Google однажды изменил имя класса). Вот пример в AHK_L, который я использую.

SetTitleMatchMode, 2

#ifWinActive, Chrome
    NumpadIns::Send, {Click}
    NumpadRight::Send, ^{PgDn} ; Right arrow = activate next Tab
    NumpadLeft::Send, ^{PgUp} ; Left arrow = activate previous tab
#ifWinActive
1

Попробуйте Chrome_WidgetWin_0.
Если это не сработает, выясните, что это за класс, используя WinGet

WinGet,activeId,ID,A  <- gives active window ahk_id
WinGetClass, activeClass, ahk_id %activeId%


Вы также можете попробовать поискать по имени

SetTitleMatchMode, 2
WinGetTitle, OutputVar , Chrome <- type the name of the chrome window ( probably contains chrome)


Вы можете все еще обратиться к этому вопросу, если все остальное терпит неудачу.

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