1

Тема: AHK: Send

Send, текст

Приведённый скрипт просто вставляет текст.

Я ищу аналог этого скрипта.
Дело в том что если нужно вставить длинный текст
(например больше 100 символов)
то этот скрипт будет вставлять текст медленно,
т.к. он вставляет его по одному символу.
Т.е. вставит один символ, потом вставляет второй,
и т.д. так сто раз.

С помощью какой команды можно быстро вставить сразу весь текст
из 100 символов (типа ctrl+V) но не затрагивая буфер обмена.

Спасибо.

2

Re: AHK: Send

Если почитать документацию, можно узнать про SetKeyDelay.

3

Re: AHK: Send

SendInput вставляет текст гораздо быстрее. В зависимости от того, куда нужно вставлять, иногда можно воспользоваться командой ControlSetText.

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

4

Re: AHK: Send

teadrinker пишет:

1. SendInput
2. ControlSetText

SendInput отпарвляет текст гораздо быстрее
SendPlay также нашёл и эту команду, тоже отправляет достаточно быстро
ControlSetText так и не удалось применить, ну и хрен с ней

ypppu пишет:

SetKeyDelay

SetKeyDelay Так же заинтересовала эта команда.
Я так понял она устанавливает задержку между вставкой символов.
Но также не как не смог её применить.
Пытался сделать жадержку между вставками символов в ноль:

1.
SetKeyDelay, 0, 0
Send Тест

2.
SetKeyDelay, 0, 0
SendInput Тест

3.
SetKeyDelay, 0, 0
SendPlay Тест

В некоторых случаях замечена более быстрая вставка, а я пытаюсь добить мгновенную вставки  (повторюсь: типа ctrl+V, так же мгновенно вставить текст, ну буфер трогать мне нельзя).

5

Re: AHK: Send

SetKeyDelay, 0

Писать в самом начале скрипта. И это будет значить, что задержка между нажатиями клавиш будет равна 0!
Приведу небольшой пример, может тебе подойдет:


F1::
InputFile = 123.txt ;файл должен лежать в одной папке со скриптом или указать полный путь типа C:\File.txt
LastLine = 27 ;Ограничение строк

Loop, Read, %InputFile%
{
    If (A_Index > LastLine)
        Break
    Clipboard := A_LoopReadLine ;. "`n"
    Sleep, 3150
    Send, ^{vk56} ;+{Ins} как альтернатива ctrl+v
	Sleep, 1000
	Send, {Enter}
}

Суть скрипта следующая: есть файл 123.тхт в котором находится текст (стих к примеру), который состоит из 27 строк. Скрипт читает 1 строку, копирует содержание ее в буфер, вставляет и жемет ентр. Затем 2ю строку так же, 3ю, 4ю и так далее, до 27й, после чего остановится.
Я использовал этот скрипт, что бы в игре спамить стишками и сказками , ручками лень было копипастить

6

Re: AHK: Send

DaVinchi пишет:

Писать в самом начале скрипта.

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

DaVinchi пишет:

Приведу небольшой пример, может тебе подойдет

Не подойдёт. Скрипт использует буфер обмена.
Как я уже писал, мне нельзя его трогать.
Там у меня более ценная информация хранится для дальнешего использования

7

Re: AHK: Send

Вася Пупкин пишет:

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

Для "мгновенной" вставки нужно использовать ControlSetText.

8

Re: AHK: Send

Вася Пупкин пишет:

Там у меня более ценная информация хранится для дальнешего использования

Сохрани свою ценную информацию в переменную, используй буфер, верни информацию в буфер, раз так.

9 (изменено: Вася Пупкин, 2011-10-27 23:07:06)

Re: AHK: Send

Александр_ пишет:

Для "мгновенной" вставки нужно использовать ControlSetText.

Вася Пупкин пишет:

ControlSetText так и не удалось применить

Ну я пытаюсь с этой командой разобраться, ни как чёта.
Вот хелпу читаю щас:
http://www.autohotkey.com/docs/commands … etText.htm

Sleep, 2000  
ControlSetText, Notepad, Новый текст, Безымянный - Блокнот

Вот написал скрипт, который по идеи должен в блокноте
вставить текст "Новый текст".
Но почему это он не делает?
Приведите пример как эту команду использовать то.

10 (изменено: Александр_, 2011-10-27 23:19:52)

Re: AHK: Send

Вася Пупкин пишет:

Приведите пример как эту команду использовать то.

ControlSetText Edit1, Здесь новый текст, Безымянный

11 (изменено: Вася Пупкин, 2011-10-28 15:54:02)

Re: AHK: Send

...

12 (изменено: Вася Пупкин, 2011-10-28 15:57:13)

Re: AHK: Send

ControlSetText Edit1, Здесь новый текст, Безымянный

Спасибо. Работает!
Я так понял ClassNN это Edit1
Его можно посмотреть в AutoIt3 Window Info Spy.
А как быть в окнах где AutoIt3 Window Info Spy
не может отобразить ClassNN у поля где вставляется текст?

Например щас я пытаюсь вставить текст в строку адреса браузера Опера.
AutoIt3 Window Info Spy не может мне показазать какой ClassNN
у этого поля.

13

Re: AHK: Send

ControlSetText работает со стандартными элементами управления. В Opera, вроде бы, такие не используются.

14

Re: AHK: Send

ypppu пишет:

ControlSetText работает со стандартными элементами управления.

Ладно, спасибо всем. Решил проблему своим способом. Конешно не рационально маленько.

Задача была такая:
а. Вставить быстро текст.
б. Сохранить содержимое буфера обмена. (т.е. до работы скрипта, и после - текстовое содержимое буфера не должно измениться.)

План такой:
1. Содержимое буфера обмена присвоить какой нибудь переменной (пусть будет х).
2. Далее можим использовать буфер обмена для своих нужд,
т.к. содержимое буфера временно сохранено.
Буфер обмена использую т.к. он текст вставляет МГНОВЕННО (ctrl + V).
а) присваиваем буферу обмена нужный нам текст.
б) вставляем его. (очень быстро ))))
3. Далее, буфер нам не нужен, следовательно восстанавливаем содержимое,
с помощью переменной x (см. пункт 1).

15

Re: AHK: Send

А если в буфере не текст, а файл или изображение?

16

Re: AHK: Send

а у меня текст

17

Re: AHK: Send

Блин, Zohann же тоже самое предложил, а я его пост не заметил.

Zohann пишет:

Сохрани свою ценную информацию в переменную, используй буфер, верни информацию в буфер, раз так.

Походу, посты писались одновременно (его и мой) в одну и туже минуту. Просматрел.

18

Re: AHK: Send

Столкнулся ещё с одной проблемой. Как вставить Пробел?
Пишу скрипт (Send + "пробел"):
Send,   

Выдаёт ошибку:

---------------------------
run.ahk
---------------------------
Error at line 1.

Line Text: Send,
Error: "Send" requires at least 1 parameter.

The program will exit.
---------------------------
ОК   
---------------------------

P.s.  Использование буфера обмена так же не помогает.
Clipboard =     
Переменная буфера не хочет присваивать пробел.

19

Re: AHK: Send

Есть встроенная переменная A_Space.

Send, %A_Space%

20

Re: AHK: Send

Спасибо.