Войти

Показать полную графическую версию : [решено] Как взять в буфер выделенный текст


maxd2007
02-06-2014, 12:02
Есть такой скрипт:
HotKeySet("^c", "_Func")

While 1
WEnd

Func _Func()
MouseMove (100, 100)
EndFunc
После нажатия ctrl+c скрипт выполняется, но в буфер выделенный текст не берется, подскажите как решить данную проблему?

madmasles
02-06-2014, 13:36
maxd2007,
Попробуйте сделать так (Ctrl+INSERT).HotKeySet (http://autoit-script.ru/autoit3_docs/functions/HotKeySet.htm)('^{INSERT}', '_Func');назначаем функцию _Func для нужного действия
HotKeySet (http://autoit-script.ru/autoit3_docs/functions/HotKeySet.htm)('{Esc}', '_Exit');назначаем функцию _Exit для выхода

While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) Sleep (http://autoit-script.ru/autoit3_docs/functions/Sleep.htm)(100)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _Func()
HotKeySet (http://autoit-script.ru/autoit3_docs/functions/HotKeySet.htm)('^{INSERT}');т.к. HotKeySet() перехватывает нажатие '^{INSERT}', поэтому освобождаем '^{INSERT}'
Send (http://autoit-script.ru/autoit3_docs/functions/Send.htm)('^{INSERT}');нажимаем '^{INSERT}', чтобы получить в буфер выделенный текст в активном окне
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)(ClipGet (http://autoit-script.ru/autoit3_docs/functions/ClipGet.htm)() & @LF (http://autoit-script.ru/autoit3_docs/macros.htm#@lf));для отладке пишем в консоль содержимое буфера
MouseMove (http://autoit-script.ru/autoit3_docs/functions/MouseMove.htm)(100, 100);делаем какое-то действие
HotKeySet (http://autoit-script.ru/autoit3_docs/functions/HotKeySet.htm)('^{INSERT}', '_Func');опять назначаем функцию _Func для нужного действия
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc) ;==>_Func

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _Exit()
Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc) ;==>_Exit

maxd2007
02-06-2014, 14:30
В Вашем варианте работает даже ctrl+c. Спасибо большое.
Но можно спросить:

HotKeySet('^{INSERT}', '_Func')
HotKeySet('{Esc}', '_Exit')

While Sleep(100)
WEnd

Func _Func()
HotKeySet('^{INSERT}') ; - зачем еще раз прописан ctrl+insert (для того что бы буфер брал)?
Send('^{INSERT}')
ConsoleWrite(ClipGet() & @LF) ; - для чего это? (что бы он корректно взял в буфер?)
MouseMove(100, 100)
HotKeySet('^{INSERT}', '_Func'); - это для зацикливание скрипта сделано?
EndFunc ;==>_Func

Func _Exit()
Exit
EndFunc ;==>_Exit

madmasles
02-06-2014, 14:54
maxd2007,
Я добавил комментарии в код.

работает даже ctrl+c »Посмотрите здесь: Обход проблемы с HotKeySet/Accelerators при разных раскладках клавиатуры (http://autoit-script.ru/index.php/topic,5745)

maxd2007
02-06-2014, 16:55
Еще раз большое спасибо )))




© OSzone.net 2001-2012