Показать полную графическую версию : [решено] Как взять в буфер выделенный текст
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.