1 (изменено: Лев, 2012-04-22 10:42:07)

Тема: AHK: Повторение клавиатурных команд

Всем доброго времени суток!
Админам - просьба не ругать, а разложить понятно для чайника. Форум огромный, и (при отсутствиии навыков работы с программой) поиск нужной инфы напоминает поиск прокладок для жены в Ашане. В принципе найти можно, но попросить помощи не мешало бы :-)

Короче: есть последовательность виндовсовских хоткеев, которые мной многократно повторяются (речь о копировании коротких сообщений из программы; Ctrl+A не работает, выдергиваются только отдельные сообщения; авторские права не нарушаю).

1. Открыты два приложения: Word и сама прога "Х".
2. в "Х" - Ctrl+C (копирую сообщение)
3. Alt+Tab (переключаю на Word)
4. Word - Ctrl+V (вставляю соответственно скопированное)
5. Alt+Tab (прыгаю обратно в "Х")
6. курсор вниз на одну строку (перехожу на следующее сообщение)
7... и далее продолжается цикл.
Насобачился, конечно, но рука устает; нашел АХК, но затупил - ну не программист я.

Если кому не лень - поделитесь драгоценным опытом, нарисуйте, как должен выглядеть этот файл.

2 (изменено: Indomito, 2012-04-22 13:17:32)

Re: AHK: Повторение клавиатурных команд

Не очень понятно что копируешь т.е. пункт №1 и соответственно куда вставляешь пункт №4 - Как определить когда сделать Ctrl+C и Ctrl+V, соответственно.
На лицо недостаточность данных для пакетной обработки. Написать то последовательность действий не сложно, но...

2. в "Х" - Ctrl+C (копирую сообщение)

после выделения запустить скрипт или же выделение должно быть автоматическим?

6. курсор вниз на одну строку (перехожу на следующее сообщение)

длинна сообщения одна строка или есть разделители, т.е. переходить по LF/CR (newline linefeed)/(carriage return)

Сама последовательность обработки не сложна, но дополни вопрос по входным и выходным условиям.

Вот похожая задача AHK: Передать из текстового файла построчно текст в другую программу. может всё скопировать и потом вставить построчно?

И

речь о копировании коротких сообщений из программы; Ctrl+A не работает, выдергиваются только отдельные сообщения; авторские права не нарушаю

следовательно Ctrl+C это действие человека, а остальное скрипта, я верно понял?
Задача сводится к выделению текста, нажатию на хоткей, а далее пакетная обработка, верно?

Да, можно сразу надёргать в буфер обмена кучу строчек, а потом их записать - разве так не проще? Я не понимаю зачем переключаться туда - сюда.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

3

Re: AHK: Повторение клавиатурных команд

Попробую внести ясность: мои действия только клавиатурные, т.е. ничего не выделяю в тексте. Последовательность команд именно такая, т.е. я даже на экран не смотрю, тупо повторяю 5 хоткеев. Именно поэтому нашёл АХК. Идея с АХК мне представлялась так: я ставлю курсор в "исходное положение" в проге "Х", и запускаю скрипт. Наблюдаю, как АХК заполняет Ворд, пью чай :-). По достижении какого-то произвольного уровня я табаню это дивное действо клавишей "выхода". Сам сохраняю Ворд. Примерно так.

4 (изменено: creature.ws, 2012-04-22 22:42:39)

Re: AHK: Повторение клавиатурных команд

; ctrl+c
$^vk43::
    X_id := WinExist("A")                   ; определим уникальный id неизвестного нам приложения X
    Loop {                                  ; начало бесконечного цикла повторений нижележащего
        Send ^{vk43}                        ; отправим системе нажатие ctrl+c (нажатие «попадёт» в активное окно)
        WinActivate ahk_exe winword.exe     ; переключимся на word
        Winwaitactive ahk_exe winword.exe   ; дождёмся пока окно word станет активным
        Send +{Insert}                      ; оправим shift insert
        WinActivate ahk_id %X_id%           ; переключимся на приложение «X»
        Winwaitactive ahk_id %X_id%         ; дождёмся пока окно X станет активным
        Send {Down}                         ; отправим нажатие стрелки вниз
    }
    return

Esc::Pause ; приостановка выполнения всего скрипта

На случай недопонимания — вы запускаете скрипт, ставите курсор в нужное место программы X и жмёте ctrl+c,
для остановки (в текущем месте выполнения) жмёте Escape.

5

Re: AHK: Повторение клавиатурных команд

creature.ws - спасибо!
Цикл работает довольно шустро и весело, только есть проблема - в копируемой программе курсор не двигается вниз по команде {Down}, и поэтому копируется одна и та же строчка; причина - окно программы неактивно; почему - понять не могу, поскольку команда в скрипте ясная.
Пытался заменить на параметр {NumpadDown} (это я уже пытаюсь читать и учиться), но в этом случае цикл ведёт себя забавно - начинает просто гонять курсор вниз, где бы он ни был, в любом окне, безостановочно, без прописанной последовательной активации Ворда. Пришлось вытаскивать аккум из ноута, по другому остановить это не удалось. Ковыряюсь дальше.

6 (изменено: creature.ws, 2012-04-24 08:45:14)

Re: AHK: Повторение клавиатурных команд

Следует воспользоваться AU3_Spy, находящимся в папке с autohotkey — узнать класс окна скрываемой от общественности программы «X» и заменить в коде ahk_id %X_id% на ahk_class класс окна.

Вытаскивание аккумулятора можно заменить нажатием Esc.

7

Re: AHK: Повторение клавиатурных команд

creature.ws - СПАСИБО, ДРУГ!!! :-))) Мир дому твоему и удачи в делах!
Всё заработало. Просто зверь; с такой скоростью у меня бы рука отвалилась :-) теперь верю в технический прогресс ;-)
Аккум пришлось вытаскивать, когда уже ничего не помогало - ни Esc, ни Ctrl+Alt+Del (кстати, там не было запущенного процесса АХК), ни нажатие кнопки питания (она у меня на выключение настроена). В любом окне и в любом приложении крусор начинал метаться по списку, как сумашедший.