1 (изменено: concept.ru, 2024-01-24 10:52:05)

Тема: AHK: OnClipboardChange() и выполнение кода после неё

Здравствуйте, коллеги!
Не могу разобраться с OnClipboardChange(). Код

#Persistent
OnClipboardChange("ClipChanged")
Return
MsgBox qwerty
ExitApp

ClipChanged(){
	MsgBox %Clipboard%
}

не добирается до MsgBox.
Немного другое, но очень близкое:
2. Чем отличаются 1 и -1 в OnClipboardChange("ClipChanged", 0|1|-1)? Т.е. что такое previously registered functions?
3. Можно ли вместо 0|1|-1 использовать переменную? Что-то и это у меня не получается.
Спасибо.

2

Re: AHK: OnClipboardChange() и выполнение кода после неё

concept.ru пишет:

не добирается до MsgBox

Код после загрузки выполняется сверху вниз, пока не встретит Return, Exit, горячую клавишу, либо дойдёт до конца. У вас скрипт выполняется до первого Return.

concept.ru пишет:

что такое previously registered functions

Это если раньше эта команда уже использовалась в скрипте и была назначена другая функция в первом параметре.

concept.ru пишет:

Можно ли вместо 0|1|-1 использовать переменную?

Можно, просто подставьте переменную, содержащую -1, 0 или 1.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: OnClipboardChange() и выполнение кода после неё

teadrinker, спасибо.

teadrinker пишет:

подставьте переменную, содержащую -1, 0 или 1.

#Persistent
k=0
OnClipboardChange("ClipChanged", k)
k=1
Return

ClipChanged(){
	MsgBox %Clipboard%, %k%
}

Не хочет OnClipboardChange воспринимать изменившийся AddRemove, т.е. k. Что не верно в этом коде?

4

Re: AHK: OnClipboardChange() и выполнение кода после неё

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: OnClipboardChange() и выполнение кода после неё

teadrinker, нет, не я. OnClipboardChange понимает, что изменилась еда в тарелке (буфер обмена). Но почему-то не хочет брать ложку (второй параметр, k).

6

Re: AHK: OnClipboardChange() и выполнение кода после неё

Нет, OnClipboardChange ничего не знает о содержимом буфера обмена. Эта функция просто выполняет разовую акцию, "съедая", если продолжать аналогию, скормленные ей данные.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: OnClipboardChange() и выполнение кода после неё

teadrinker, снова нет. Не разовую. Она постоянно отрабатывает при изменении БО. Вот только второй параметр берёт тот, что был при её первом запуске.

8

Re: AHK: OnClipboardChange() и выполнение кода после неё

А разве при изменении буфера обмена отрабатывает не та функция, которую вы указали в первом параметре?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9 (изменено: concept.ru, 2024-01-24 14:39:33)

Re: AHK: OnClipboardChange() и выполнение кода после неё

teadrinker, при изменении БО срабатывает функция OnClipboardChange, вызывая функцию, именованную в первом параметре.
Логично было бы второй параметр обновлять. По-моему, это недоделка разработчиков.
А, может, я и не прав. И при повторном изменении БО срабатывает сразу вторичная функция, из первого параметра. Тогда не понятно, зачем это всё нужно, чем функция OnClipboardChange() лучше метки OnClipboardChange:.

10

Re: AHK: OnClipboardChange() и выполнение кода после неё

concept.ru пишет:

при изменении БО срабатывает функция OnClipboardChange, вызывая функцию, именованную в первом параметре

Сами придумали, или в справке прочитали?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11 (изменено: concept.ru, 2024-01-24 14:41:23)

Re: AHK: OnClipboardChange() и выполнение кода после неё

teadrinker, сам предположил. Не могу найти толковых руководств.

12

Re: AHK: OnClipboardChange() и выполнение кода после неё

concept.ru пишет:

чем функция OnClipboardChange() лучше метки OnClipboardChange

Тем же, чем любая функция лучше любой метки — у функции гораздо больше возможностей.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder