|
Копировать, вырезать и вставлять текст, используя Буфер обмена, можно только тогда, когда этот текст доступен для системного курсора (каретки). Напомним, что системным называется курсор, связанный с вводом с клавиатуры. Он указывает место на экране, где будет отображаться вводимый текст. Количество элементов управления, в которых может быть активен системный курсор, весьма ограничено - это поля редактирования, списки выбора, комбинированные списки. Часто, однако, возникает необходимость скопировать текст из той области экрана, которая недоступна для системного курсора, но доступна для Jaws-курсора. Например, если появилось сообщение об ошибке с многозначным кодом этой самой ошибки и необходимо этот код сообщить по электронной почте разработчику программы. Переписывать на слух, елозя Jaws-курсором по окну сообщения, занятие утомительное и потому весьма высока вероятность ещё одной ошибки - теперь уже в переписывании кода. Бывают случаи, когда информация, расположенная в окне какого-нибудь диалога, необходима для дальнейшей работы (например, сообщение о том, какие действия надо совершить на следующем этапе). Jaws читает окно диалога целиком в тот момент, когда оно становится активным, после чего прочитать его можно опять же целиком по комбинации клавиш Insert+B или Jaws-курсором. Но вам бы хотелось не просто прочитать это сообщение, а скопировать его куда-нибудь для последующего использования. Для решения этой задачи в JAWS предусмотрен скрипт, который вызывается комбинацией клавиш Insert+Control+W (английская дабл ю) или Insert+Alt +W. Этот скрипт переносит видимый текст из активного окна в окно виртуального просмотра (VirtualViewer), в котором можно передвигаться системным курсором, выделять и копировать текст. Однако бывают случаи, когда скопировать надо всего лишь одну строку, а в окне виртуального просмотра информации оказывается слишком много (средства контекстного поиска здесь отсутствуют). То есть опять придётся искать нужную строку, перечитывая в худшем случае не менее половины отображаемого текста. Поэтому сформулируем задачу следующим образом: скопировать строку текста из любого места экрана (где находится JAWS-курсор) и поместить ее сразу в Буфер обмена Windows. Попутно (в качестве примера) покажем, как скопировать весь видимый текст из активного окна напрямую в Буфер обмена. Решим эту задачу средствами языка сценариев Jaws. Надеемся, что вы уже имеете опыт в написании, отладке и компиляции скриптов для Jaws for Windows. Приводимый ниже исходный код скриптов был проверен для Jaws версий 4.51 и выше. ; Скрипт, копирующий текущую строку в буфер обмена. Script GrabLine () Var String sLine If !IsPCCursor() Then let sLine = GetLine(); CopyToClipBoard(sLine) Say("Скопировано "+sLine, OT_MESSAGE) Else Say("Используйте Jaws-курсор или невидимый курсор!", OT_MESSAGE) EndIf EndScript ;Скрипт, копирующий весь текст из окна в буфер обмена Script GrabWindow Var String sBuf If !IsPCCursor() Then let sBuf= GetWindowText (GetAppMainWindow (GetCurrentWindow ()), 0) CopyToClipBoard(sBuf) Say("Скопировано "+sBuf, OT_MESSAGE) Else Say("Используйте Jaws-курсор или невидимый курсор!", OT_MESSAGE) EndIf EndScript Поместите эти скрипты в default.jss, назначьте им «горячие» клавиши (например, Insert+Control+X и Insert+Control+Shift+X, откомпилируйте файл скриптов ) и проверьте их работу , вызвав диалоговое окно Свойства файла. Для этого откройте Проводник, встаньте на любой файл или папку и нажмите Alt+Enter. Теперь с помощью назначенных «горячих» клавиш вызывайте скрипт, после чего можете вставить содержимое буфера обмена, например, в Блокнот (Notepad). |
||||||||
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2024 |
Социальные сети