Я пытаюсь создать приложение OSX, которое будет копией экранной клавиатуры. Можно ли вставить какой-либо текст в позицию курсора другого активного приложения? Заранее спасибо!Как вставить текст в позицию курсора другого приложения в приложении Mac OSX (например, OSK)?
2
A
ответ
1
Не уверен, если это поможет, но в Applescript вы можете сделать что-то вроде
tell application "System Events"
keystroke "Stuff here"
end tell
Так может быть, вы можете попробовать позвонить, что в какао с использованием NSApplescript
или с помощью NSTask
и запустить
osascript -e 'tell application "System Events" to keystroke "Stuff here"'
+0
Это тоже не работает в Mac App Store, поэтому вам лучше всего это разъяснить. – SevenBits
5
Это возможное. Доступность позволяет изменять контент других приложений, но ваше приложение не может быть изолировано и, следовательно, недоступно через AppStore.
CFTypeRef focusedUI;
AXUIElementCopyAttributeValue(AXUIElementCreateSystemWide(), kAXFocusedUIElementAttribute, &focusedUI);
if (focusedUI) {
CFTypeRef textValue, textRange;
// get text content and range
AXUIElementCopyAttributeValue(focusedUI, kAXValueAttribute, &textValue);
AXUIElementCopyAttributeValue(focusedUI, kAXSelectedTextRangeAttribute, &textRange);
NSRange range;
AXValueGetValue(textRange, kAXValueCFRangeType, &range);
// replace current range with new text
NSString *newTextValue = [(__bridge NSString *)textValue stringByReplacingCharactersInRange:range withString:newText];
AXUIElementSetAttributeValue(focusedUI, kAXValueAttribute, (__bridge CFStringRef)newTextValue);
// set cursor to correct position
range.length = 0;
range.location += text.length;
AXValueRef valueRef = AXValueCreate(kAXValueCFRangeType, (const void *)&range);
AXUIElementSetAttributeValue(focusedUI, kAXSelectedTextRangeAttribute, valueRef);
CFRelease(textValue);
CFRelease(textRange);
CFRelease(focusedUI);
}
Этот код не проверяет наличие ошибок и делает предположение, что сфокусированный элемент является текстовой областью.
Смежные вопросы
- 1. Вставить текст в позицию курсора
- 2. Вставить текст в RichTextEditor в позицию курсора
- 3. Запуск приложения MAC OSX из другого приложения MAC OSX
- 4. VB.NET Как вставить текст в позицию курсора в другом окне?
- 5. Как вставить предварительно форматированный текст в позицию курсора в VS2008?
- 6. Как вставить текст в любую позицию курсора в uitextview?
- 7. Как получить позицию курсора в другом приложении
- 8. Вставить смайлик в позицию курсора
- 9. Вставить текст в позицию курсора, не используя пустые строки
- 10. Вставить текст в позицию курсора в API инструментов Embarcadero
- 11. Вставить текст в позицию курсора в CKEditor с помощью jQuery
- 12. Вставить текст в textarea в позицию курсора (Javascript)
- 13. Вставить текст в позицию курсора в редакторе wysihtml5
- 14. Перемещение окна «osk» в приложении Qt
- 15. Сохранить позицию курсора в текущем ориентированном приложении/управлении, а затем восстановить его и вставить текст
- 16. Отсутствует текст в приложении Air Flex4 + Mac OSX Snow Leopard
- 17. Вставить текст в текстовое поле другого приложения
- 18. Вставить строку в позицию курсора UITextField
- 19. Как получить позицию курсора в редакторе
- 20. Mac OSX: Как погладить текст в NSTextField?
- 21. Ввод курсора в позицию курсора в javascript
- 22. Как найти позицию курсора в контентной DIV?
- 23. Как вставить текст в текстовом поле текущего курсора?
- 24. Как вставить текст в положение курсора В редакторе Wysihtml5-Sandbox
- 25. Найти позицию курсора
- 26. Как добавить текст в позицию курсора в текстовом поле
- 27. Редактировать текст и его позицию курсора?
- 28. Mac OSX Overlay
- 29. Получить позицию курсора в ячейке
- 30. Открыть панель (файлы/папки) и вставить файл в позицию курсора
FYI, на всякий случай: ответ (независимо от деталей, извините, что я не знаю их из рук в руки) является * квалифицированным * да - как, например, как работает вспомогательное программное обеспечение. * Однако * под песочницей и, следовательно, в App Store, общий ответ, безусловно, нет - ввод в другое приложение потенциально является серьезной проблемой безопасности. Конечно, если ваше приложение не будет в песочнице, тогда его ограничения не будут иметь значения. – CRD
@CRD Что вы подразумеваете под песочницей. Вы имеете в виду, что если я отправлю приложение в appstore, он не будет работать? Но как разработчик Apple, я мог бы запустить это приложение в своей системе? Не могли бы вы рассказать ... Спасибо. – Selvin
App Sandbox - это система безопасности, которая ограничивает возможности приложения - какие файлы он может получить, может ли он делать сетевые подключения и т. Д. И т. Д. Все приложения для iOS изолированы, а для OS X они являются необязательными. Однако все приложения, которые будут продаваться в Mac App Store, должны быть изолированы. Посмотрите приложение Sandbox в документах Apple для деталей. – CRD