1 (изменено: kilad, 2023-12-28 13:28:03)

Тема: AHK: Ожидание нужного текста в буфере

Здравствуйте! Если ли варианты оптимизации данного кода, который ожидает нужный текст в буфере, заменяет его и ожидает дальше.


Clipboard =

start:
Sleep 1000
if (var == Clipboard)
 gosub start
else {
ClipWait
var := Clipboard
switch var
{
 case "x": MsgBox, x
 case "y": MsgBox, y
 case "z": MsgBox, z
 default: gosub start
}
gosub start
}
return

Есть проблема, когда код в ожидании выдает ошибку.

https://imageup.ru/img61/4682421/error.png

2

Re: AHK: Ожидание нужного текста в буфере

Вместо

start:
...
gosub start

используйте OnClipboardChange.

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

3

Re: AHK: Ожидание нужного текста в буфере

teadrinker спасибо, это именно то что было необходимо. Код переписал и получилось вот так:

#SingleInstance,force
#Persistent

OnClipboardChange:
ClipWait
var := Clipboard
switch var
{
	case "x": MsgBox, x
	case "y": MsgBox, y
	case "z": MsgBox, z
	;~ default: MsgBox, Что-то другое
}
return

Остался еще вопрос в ходе изучение данной команды.
Для того чтобы работало корректно OnClipboardChange необходима директива #Persistent, чтобы скрипт запустился заново. Не будет ли конфликтовать с #SingleInstance,force?

4

Re: AHK: Ожидание нужного текста в буфере

ClipWait там лишнее. Если метка сработала, значит в буфере обмена что-то есть.

kilad пишет:

Не будет ли конфликтовать с #SingleInstance,force?

Вы можете сами проверить.

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