Как вставить текст от одного приложения до другого Какао использования?

Я читал о NSPasteBoard в документации Apple, и как благодаря этому приложения вписали PasteBoard и позвольте другим приложениям читать тот текст и использовать его.

Мог кто-то говорить мне, как вставить текст от, приложение (который находится в строке состояния) в a NSTextField это в другом приложении.

То, что я пытаюсь сделать, является чем-то подобным, что делают Отрывок и SnippetsApp.

Если я абсолютно глуп и пропустил очевидное в Документах Apple, могли Вы указывать на меня на правильный путь :)

Спасибо!

8
задан Ikke 21 April 2010 в 06:29
поделиться

2 ответа

Кто-нибудь может сказать мне, как вставить текст из приложения (которое находится в строке состояния) в поле NSTextField, находящееся внутри другого приложения.

Вставка - это то, что происходит в принимающем приложении. Запись на монтажный стол - это копирование.

Кроме того, вы не можете предположить, что пользователь захочет вставить данные в NSTextField. Это может быть NSTextView или текстовое поле в WebView, или элемент управления Carbon EditText или MLTE, или какой-либо другой текстовый редактор, такой как текстовый редактор Qt или wxWidgets. Они могут даже использовать приложение со списком, которое позволяет им вставлять текст прямо в него.

Итак, не существует программного способа напрямую сказать приложению: «Вот текст - вставьте его, пожалуйста». Вы должны скопировать его на общий монтажный стол, а затем создать событие, которое обычно должно вызывать вставку самого переднего приложения. Предложение Чарли относительно ⌘V - односторонний, хотя и хитрый; раскладка Дворака помещает V на другую клавишу, в то время как раскладка «Дворак QWERTY ⌘» помещает V-with-⌘ (в отличие от V-без-⌘) на ту же клавишу, что и V.

Чтобы создать это событие ⌘V , загляните в CGEventTap . Вам нужно будет использовать функцию CGEventCreateKeyboardEvent для создания самого события, а поскольку эта функция принимает код клавиши, вам нужно найти правильный код клавиши для V часть комбинации V, для которой потребуется пройти через Службы источника ввода текста или Службы раскладки клавиатуры , в зависимости от раскладки.

На этом этапе вы можете подумать об использовании специальных возможностей, чтобы найти пункт меню «Вставить» в меню «Правка» и отправить ему сообщение AXPress, но «Вставить» и «Изменить» - это всего лишь английские слова для обозначения этих понятий; если вы это сделаете, ваше приложение не будет работать на любом другом языке. Вы можете перейти по порядку (третье меню, шестой пункт меню), но тогда ваше приложение не будет работать в приложениях без меню «Файл», без пункта меню «Повторить» или с двумя элементами меню «Отменить» (Photoshop). Формирование V-события - это действительно правильный путь.

8
ответ дан 5 December 2019 в 10:40
поделиться

Обычно единственный способ - написать это на NSPasteboard, а затем переключитесь на другое приложение и используйте некоторые функции Carbon, чтобы нажать "Command-V" ...

0
ответ дан 5 December 2019 в 10:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: