1

Тема: AHK: Запуск словаря Context из Opera

Здравствуйте, скажите  пожалйста почему у меня не работает этот скрипт:


#x::
IfWinActive , ahk_class OperaWindowClass 
{
    SendEvent , ^c
    IfWinNotExist , ahk_class Informatic_Context40MainWindowClass 
    {
        RunWait , "F:\Program Files\Informatic\Context 7.0\context.exe"
        WinWaitActive , ahk_class Informatic_Context40MainWindowClass
        return
    }
    else
    {
        WinActivate , ahk_class Informatic_Context40MainWindowClass
        SendEvent , {Ctrl Down}{v down}{Ctrl Up}{v Up}{Enter} ; не посылает...
        return
    }
}
return

Когда словарь уже запущен, всё работает, но когда нет, то скрипт только запускает словарь. И после этого запуска сочетание перестаёт работать.
Спасибо.

2

Re: AHK: Запуск словаря Context из Opera

RunWait ждёт завершения запущенной программы. Т.е. дальше выполнение кода не идёт.

3

Re: AHK: Запуск словаря Context из Opera

Благодарю за ответ. Поменял RunWait на просто Run, результат тот же - запускается, активируется окно словаря но нет ввода. Я пробовал ставить sleep чтобы словарь точно загрузился, но не работает...
Скажите, а завершение чего ждёт RunWait? Той программы которую запускает...? Я думал что ждёт пока запускаемое окно не загрузится полностью, проверяет готово ли оно к обратной связи.

4 (изменено: o5andrey, 2013-10-30 12:25:05)

Re: AHK: Запуск словаря Context из Opera

Ой... else не надо, так вот у меня:


#x::
IfWinActive , ahk_class OperaWindowClass 
{
    SendInput , ^c
    IfWinNotExist , ahk_class Informatic_Context40MainWindowClass 
    {
        Run , "F:\Program Files\Informatic\Context 7.0\context.exe"
        WinWaitActive , ahk_class Informatic_Context40MainWindowClass
    }
    WinActivate , ahk_class Informatic_Context40MainWindowClass
    SendInput , {Ctrl Down}{v down}{Ctrl Up}{v Up}{Enter} ; не посылает...
}
return

Что-то перестало работать и когда словарь есть свёрнутый... Вставляет то что было в буфере раньше.

...

...Нет, так работает и после запуска словаря, как я хотел, но видимо почему-то  не посылает копирование.

5

Re: AHK: Запуск словаря Context из Opera

Не очень понятно, в чём на данный момент проблемы. Неработа ^C и т.п. может быть связана с тем, что язык ввода в тот момент русский. Лучше обозначать буквенные клавиши виртуальными кодами.


Send, ^{vk43}       ; Ctrl-C
Send, ^{vk56}       ; Ctrl-V

6

Re: AHK: Запуск словаря Context из Opera

Да, так и есть, язык ввода был RU. Всё вроде работает, спасибо.

7

Re: AHK: Запуск словаря Context из Opera

Скажите пожалуйста почему у меня теперь сочетание для перевода работает в любом месте, а не только в тех окнах которые я указал:


#vk5A:: ; win+z - перевести выделенное слово/словосочетание
IfWinActive ahk_class HH Parent ; в справке chm
    SendInput {appskey}{Down 7}{Enter}
If WinActive ("ahk_class OperaWindowClass") or WinActive ("ahk_class MozillaWindowClass")  ;  <---
{
    SendInput , ^{vk43}
    IfWinNotExist , ahk_class Informatic_Context40MainWindowClass 
    {
        Run , "F:\Program Files\Informatic\Context 7.0\context.exe"
        WinWaitActive , ahk_class Informatic_Context40MainWindowClass
    }
    WinActivate , ahk_class Informatic_Context40MainWindowClass
    SendInput , ^{vk56}{Down}{Enter}
}
return

#vk58:: ; win+x - открыть закладки в Opera
IfWinActive ahk_class OperaWindowClass
    SendInput {Ctrl Down}{Shift Down}{vk42}{Ctrl Up}{Shift Up}{Click 414, 111}{Click 54, 157}{Click 414, 111}{End}{F8}

8

Re: AHK: Запуск словаря Context из Opera

Уберите пробелы между WinActive и её параметрами.

9

Re: AHK: Запуск словаря Context из Opera

Большое спасибо, работает. Пустяк, а мог бы долго биться...

10 (изменено: o5andrey, 2013-10-31 13:24:13)

Re: AHK: Запуск словаря Context из Opera

P. S.

Вообще у словаря Context 7.0 есть встроенное сочетание Ctrl+C+C, поэтому можно делать проще:


#a::
IfWinActive , ahk_class OperaWindowClass
    SendInput , ^{c 2}

Но почему-то (так сделана программа) оно хорошо работает только если словарь свёрнут (или ещё не запущен): когда не свёрнут, а просто находится "сзади" (накрыт др. окнами), то при его вызове он начинает сначала сворачиваться, а потом разворачиваться, что не очень красиво. Поэтому открытие перевода с использованием скрипта AHK (представленного в пред. сообщении выше) происходит быстрее.