Что нового

Send. Не получается из буфера вставить в форму

Suppir

Продвинутый
Сообщения
967
Репутация
62
Код:
HotKeySet("{F2}", "_CopyLink")
HotKeySet("{F3}", "_SendLink")
HotKeySet("{F4}", "_Exit")

TrayTip ("AutoIt", "Скрипт запущен", 1)
sleep(1000)
TrayTip("clears any tray tip","",0)


While 1
    Sleep(100)
WEnd


Func _CopyLink()
	$pos = MouseGetPos()
	MouseClick("right")
	MouseMove($pos[0]+10, $pos[1]+5, 1)
	MouseClick("left")
	$link=ClipGet()
	Send("!{TAB}")	
	TrayTip ("Скопировали ссылку", $link, 1)
EndFunc

Func _SendLink()
	Send("!{F7}")	
	WinWaitActive("Адрес гиперссылки")
	Send("^v")  ############## вот в этом месте не работает
	Send("{ENTER}")
EndFunc


Func _Exit()
	TrayTip ("AutoIt", "Завершение работы скрипта", 1)
	Sleep(1000)
	Exit
EndFunc



Функция _CopyLink копирует в буфер обмена адрес ссылки в специальной программе (затем делает ALT-TAB для перехода в другую программу). Работает нормально. Ссылка представляет собой некое число, например, "123"

Функция _SendLink() вставляет эту ссылку в форму другой программы. Для этог на клавиатуре необходимо нажать:
1) ALT(зажать)F7
2) LCTRL(зажать)v (т.е. просто "вставить")
3) ENTER

Однако у меня не срабатывает пункт 2). Т.е. текст не передается из буфера в форму, а просто сразу жмется enter. Где тут возможна ошибка?


Добавлено:
Сообщение автоматически объединено:

Если в функцию добавить sleep'ы:

Код:
Func _SendLink()
	Send("!{F7}")	
	WinWaitActive("Адрес гиперссылки")
	Sleep(100)
	Send("^v")
	Sleep(100)
	Send("{ENTER}")
EndFunc


то в форму копируется НЕ данные из буфера, а символ "v".


Добавлено:
Сообщение автоматически объединено:

Кажется, удалось, наконец, разобраться!

Нужно переписать функцию _SendLink() в следующем виде:

Код:
Func _SendLink()
	$Link=ClipGet()  # т.е. мы присваиваем переменной значение из буфера
	Send("!{F7}")	
	WinWaitActive("Адрес гиперссылки")
	Sleep(100)
	Send($Link)   # шлем в форму на CTRL-v, а переменную со значением из буфера
	Sleep(100)
	Send("{ENTER}")
EndFunc


Так заработало!
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Suppir [?]
Где тут возможна ошибка?
В раскладке клавиатуры по умолчанию (рус.). В данном случае лучше использовать Send("+{INS}"). А для других случаев с подобной проблемой, есть SendEx.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
CreatoR - ясно, спасибо.

Кстати, поймал такой глюк. Например, у меня значение ссылки равно "12345.0", а в форму вставляет "2345/0". Пробовал поиграться со sleep - примерно одно и то же выходит.

"." и "/" - это понятно. Связано с русско-английской раскладкой. Но куда "1" пропала я не знаю :(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Suppir [?]
в форму вставляет "2345/0"
У Send есть дополнительный параметр, отвечающий за метод отправки символов, если выставить там 1, то спец. символы (клавиши-модификаторы) будут отправляться "как есть" (литерально).
 
Верх