pourrait me dire comment coller du texte de l'application am (qui se trouve dans la barre d'état) dans un NSTextField qui se trouve dans une application différente.
Le collage est ce qui se passe dans l'application réceptrice. L'écriture dans une table de montage est en cours de copie.
En outre, vous ne pouvez pas supposer que l'utilisateur voudra coller dans un NSTextField. Il peut s'agir d'une vue NSTextView ou d'une zone de texte dans un WebView, ou d'un contrôle Carbon EditText ou MLTE, ou d'un autre éditeur de texte tel qu'un éditeur de texte Qt ou wxWidgets. Ils peuvent même utiliser une application avec une vue de liste qui leur permet de coller du texte directement dans celle-ci. Donc, il n'y a pas de façon programmatique de dire directement à une application "voici du texte - collez-le, s'il vous plaît". Vous devez le copier dans la table de montage générale, puis falsifier un événement qui devrait généralement provoquer le collage de l'application la plus à l'avant. La suggestion de Charlie de ⌘V est une façon, quoique difficile; la disposition Dvorak met V sur une autre touche, tandis que la disposition "Dvorak QWERTY ⌘" met V-avec-⌘ (par opposition à V-sans-⌘) sur la même touche que QWERTY V.
For for that ⌘V événement, regardez dans CGEventTap. Vous devrez utiliser the CGEventCreateKeyboardEvent
function pour créer l'événement lui-même, et comme cette fonction prend un code de clé, vous devrez rechercher le code de touche approprié pour la partie V de la combinaison ⌘V, ce qui nécessitera de passer par Text Input Source Services ou Keyboard Layout Services, en fonction de la disposition.
Vous pouvez utiliser Accessibility pour trouver l'élément de menu Coller dans le menu Edition et lui envoyer un message AXPress, mais "Coller" et "Modifier" ne sont que des mots anglais pour ces concepts; Si vous l'avez fait, votre application ne fonctionnera dans aucune autre langue. Vous pouvez passer commande (troisième menu, sixième élément de menu), mais votre application ne fonctionnera pas dans les applications sans menu Fichier, ou sans élément de menu Rétablir, ou avec deux éléments de menu Annuler (Photoshop). Forger un événement ⌘V est vraiment la voie à suivre.
CGEventSourceRef ne fonctionne pas pendant que j'ai sandbox ma demande. Y a-t-il un moyen de résoudre le problème? – iPhoneDv
@iPhoneDv: Vous devriez poser une question séparée avec plus d'informations sur ce que vous faites et quel problème vous avez rencontré. –
Voici un lien non-rompu vers la documentation de KeyboardLayoutServices: https://developer.apple.com/legacy/library/documentation/Carbon/Reference/KeyboardLayoutServices/ (Bien sûr, cela n'échouera toujours pas si l'utilisateur a désactivé ou modifié le raccourci clavier pour coller?) – jtbandes