1 (изменено: petrS24, 2018-04-02 13:22:32)

Тема: AHK: Clipboard работает неправильно. Глючит. Медленно.

Вот простой скрипт:


vkКЛАВИША::
clipboard = 123
SendInput {Click}^{vk56}

Начинаю быстро долбить - глючит, много раз не вдалбливается 123. Работает нормально - только если жать редко, "с расстановкой".
Правлю:


vkКЛАВИША::
KeyWait, vkКЛАВИША
clipboard = 123
ClipWait
SendInput {Click}^{vk56}

Та же самая проблема. Начинаю быстро долбить - глючит, много раз не вдалбливается 123... А если вместо 123 что-то длинное - то и 2 раза вставляет((
А вот такой код:


vkКЛАВИША::
clipboard =
ClipWait
clipboard = 123
ClipWait
SendInput {Click}^{vk56}

Вообще ничего не вставляет! А должен!
Помогите разобраться, на ум ничего не приходит. В чём тут хитрость??

2

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

С первыми 2 разобрался. Проблема в просто в {Click}
А вот Третий остался загадкой. Почему такое не работает, ничего не вставляет??

vkКЛАВИША::
clipboard =
ClipWait
clipboard = 123
ClipWait
SendInput {Click}^{vk56}

3 (изменено: qqlexa, 2018-04-01 11:42:35)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

Очень интересно что в вашем понимании должна делать клавиша "Click"?
http://www.script-coding.com/AutoHotkey/KeyList.html

4 (изменено: petrS24, 2018-04-02 13:23:19)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

qqlexa, Клик работает. Курсор кликает в поле для текста...

Я никак не пойму проблему с буфером...
Вот такой код:

vkBB::
ClipSaved := ClipboardAll
Sleep, 100
clipboard = 123
Sleep, 100
Send ^{vk56}
Clipboard := ClipSaved
Sleep, 100
ClipSaved =

(пробовал менять на ClipWait, 100)
Иногда вставляет как надо, иногда вставляет старое содержимое буфера, а не новое, 123.

5

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

petrS24 пишет:

Много натрахался. Я первый раз такое делаю и у меня проблемы с грамматикой.

petrS24, пройдитесь по всем своим сообщениям, проставьте заглавные буквы и точки! Также оформите ссылки тегом "URL".

6 (изменено: petrS24, 2018-04-02 13:33:27)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

qqlexa пишет:

Очень интересно что в вашем понимании должна делать клавиша "Click"?

http://www.script-coding.com/AutoHotkey/Click.html


ypppu, Ок, тег "URL" 2 раза вставил. Это ещё можно понять. А также пару раз двоеточие и один раз точку. А вот это вроде grammar nazi перебор, это же не код...

7 (изменено: petrS24, 2018-04-03 13:17:32)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

stealzy пишет:

Во-первых, зачем тут вообще буфер обмена?

По клику одной кнопки требуется вставить различные некороткие тексты в зависимости от пары условий, по клику другой кнопки - другие тексты и другие условия. А даже SendInput делает это довольно медленно, посимвольно. Буфер нужен для мгновенной вставки.
Я написал эти короткие примеры, где в коде для одной кнопки встречается буфер более 1 раза - чтобы разобраться, т.к. именно тогда начинаются глюки.

Спасибо за ClipWait ! Я думал, что очистка буфера - это тоже запись в него пустого значения (clipboard = ) и ClipWait ждёт... Но ведь не работало корректно и без ClipWait, когда я использовал Sleep, 100...

8 (изменено: petrS24, 2018-04-05 00:04:32)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

Разобрался!
Проблема не во времени записи в буфер, а во времени вставки (начинает вставляться, буфер меняется ещё раз, и вставляется другое... так выходит по факту)

Например, такой код глючит, часто вставляет не то значение буфера (не aaa, а www):


aaa := 123

vkBB::
KeyWait, vkBB
www := clipboard
clipboard := aaa
ClipWait
SendInput {Click}^{vk56}
clipboard := www
ClipWait
www =

Но, если добавить Sleep после SendInput - всё работает! Теперь думаю над способом обхождения без Sleep, над способом определить конец вставки...

9

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

petrS24 пишет:

Теперь думаю над способом обхождения без Sleep

Думаю ничего не выйдет.
https://autohotkey.com/docs/commands/On … Change.htm

If the script itself changes the clipboard, its OnClipboardChange label or functions are typically not executed immediately; that is, commands immediately below the command that changed the clipboard are likely to execute beforehand. To force the label or functions to execute immediately, use a short delay such as Sleep 20 after changing the clipboard.

Только так:

f11::
clipboard := "a"
clipboard := "z"
Sleep 20
SendInput ^v

10 (изменено: petrS24, 2018-04-05 00:45:26)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

Malcev пишет:

Только так:

В быстроте буфера нет проблем (также, ClipWait есть)
А Sleep мне щас помогло ПОСЛЕ SendInput (чтобы подождало пока вставит, и только потом переходило к следующим операциям, к следующему обновлению буфера)
Мой вопрос был в определении конца операции вставки...

11

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

Предполагаю, что sleep нужен для того чтобы изменить виндовский системный буфер.
Так как, так работает без пауз:

f11::
clipboard := "a"
clipboard := "z"
SendInput % clipboard

12 (изменено: petrS24, 2018-04-05 01:05:50)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

stealzy, Спасибо!
А почему vkBB Up ?

ControlSetText - я слышал, читал тут одну тему. Но будет ли он работать везде? (у меня вставки текста нужны в браузере, форумы, публикации [s]каментов за дядю вову[/s] фильмаков)

13

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

stealzy пишет:

Не, просто конкретное окно принимает данные из буфера не сразу по получении Ctrl+V, а спустя пару-тройку десятков мс, а буфер уже изменен следующей командой.

Не согласен, так как тогда бы такой код попеременно посылал бы, то "a", то "z".
А он посылает либо "z" либо ничего.

f11::
clipboard := "a"
clipboard := "z"
SendInput ^v

14 (изменено: petrS24, 2018-04-05 01:17:20)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

Malcev пишет:

Так как, так работает без пауз:

Спасибо за ответ. Да, такое без глюков, знаю.
Глюки начинаются, если после вставки сразу или через несколько команд - опять меняется буфер. Уж слишком быстро происходит, а вставка тормозит по сравнению с остальным, как выяснилось.

15

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

Пример приведите.
У меня все работает вроде без глюков:

f11::
clipboard := "a"
clipboard := "z"
SendInput % clipboard
clipboard := "b"
SendInput % clipboard

16 (изменено: petrS24, 2018-04-05 01:23:39)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

stealzy пишет:

Это вместо вашего KeyWait, vkBB, зачем вы ждете отпускания клавиши мне неизвестно

Я думал, что vkBB:: и так начинает работать по началу нажатия. И ждёт отпускания только, если следующей строчкой указать KeyWait. Буду знать, Спасибо!

17 (изменено: petrS24, 2018-04-05 02:05:32)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

Malcev пишет:

Пример приведите.
У меня все работает вроде без глюков:

f11::
clipboard := "a"
clipboard := "z"
SendInput % clipboard
clipboard := "b"
SendInput % clipboard

Спасибо! Проверил, потестил. Работает! (пробовал и переменные, и длинные значения)
Заменил на SendInput {Click}^{vk56} или без клика - и начались прежние глюки.
Значит, именно в этом:
SendInput {Click}^{vk56} или просто ^{vk56}
- находятся тормоза. Именно это долго и происходит так, что быстрая последущаяя смена буфера влияет...

18

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

SendInput {Click}%clipboard%

19 (изменено: stealzy, 2018-04-05 02:22:14)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

Malcev пишет:

Не согласен, так как тогда бы такой код попеременно посылал бы, то "a", то "z".

Ваш код ну совсем про другое, попробую переписать 15 сообщение:
Некое окно забирает данные из буфера не сразу по получении Ctrl+V, а спустя пару-тройку десятков мс, к этому моменту буфер уже изменяется следующей командой после SendInput (Clipboard := tmp).

Возможно и по-другому: SetKeyDelay по-умолчанию 10, значит {Click} занимает 10 мс, т.е. смена буфера и отправка ^{vk56} происходят одновременно.
Если же отправлять напрямую содержимое буфера в Send, то последующие изменения самого буфера уже никак не повлиют на Send.

20 (изменено: petrS24, 2018-04-05 02:40:48)

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

Malcev пишет:
SendInput {Click}%clipboard%

Спасибо, работает! (быстрая последующая смена буфера - не влияет)
Но делает это довольно медленно. Ну не совсем посимвольно, но время довольно весомое проходит, если текст длинный...

21

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

aaa := "123"

vkBB::
	tmp := Clipboard, Clipboard := "", Clipboard := aaa
	ClipWait
	SetKeyDelay -1
	SendInput {Click}^{vk56}
	Clipboard := tmp
Return

22

Re: AHK: Clipboard работает неправильно. Глючит. Медленно.

stealzy, у меня этот код отправляет, то 123, то изначально сохраненный буфер.
petrS24, попробуйте делать паузы по 10 ms до и после sendinput.