Я пишу всплывающее меню в OS X.
Цель состоит в том, чтобы скопировать выделенный текст текущего активного приложения (не моего всплывающего окна) в мое приложение, чтобы я мог использовать его как строку.
Я пишу всплывающее меню в OS X.
Цель состоит в том, чтобы скопировать выделенный текст текущего активного приложения (не моего всплывающего окна) в мое приложение, чтобы я мог использовать его как строку.
Класс NSPasteboard используется для размещения/получения информации на монтажном столе. Насколько я понимаю, вы хотите получить текущий выделенный текст в другом приложении в строку в вашем приложении. API специальных возможностей для достижения этой цели.
Вы можете отправить ключи в другое приложение, чтобы вы могли отправить Cmd-C в другое приложение, а затем извлечь данные из монтажного стола. Пример этого в obj-c можно найти here
.
Догадаться!
ПРИМЕЧАНИЕ. Вы должны отложить функцию вставки. copyText() нужно время для записи в монтажный стол.
func copyText() {
// Clear pasteboard
pasteBoard.clearContents()
let src = CGEventSourceCreate(CGEventSourceStateID.HIDSystemState)
//let cmdd = CGEventCreateKeyboardEvent(src, 0x37, true)
let cmdu = CGEventCreateKeyboardEvent(src, 0x37, false)
let c_down = CGEventCreateKeyboardEvent(src, 0x08, true)
let c_up = CGEventCreateKeyboardEvent(src, 0x08, false)
// Set Flags
CGEventSetFlags(c_down, CGEventFlags.MaskCommand)
CGEventSetFlags(c_up, CGEventFlags.MaskCommand)
let loc = CGEventTapLocation.CGHIDEventTap
//CGEventPost(loc, cmdd)
CGEventPost(loc, c_down)
CGEventPost(loc, c_up)
CGEventPost(loc, cmdu)
}
func paste() -> String {
let lengthOfPasteboard = pasteBoard.pasteboardItems!.count
print(lengthOfPasteboard)
var theText = ""
if lengthOfPasteboard > 0 {
theText = pasteBoard.pasteboardItems![0].stringForType("public.utf8-plain-text")!
} else {
theText = "Nothing Coppied"
}
//print(theText)
return theText
}
Я вызываю это из AppDelegate.swift, а не из ViewController. Так что, надеюсь, он скопирует текст до того, как мое всплывающее окно станет активным / сфокусированным окном.