Obtenir l'application active n'est pas un problème, je l'ai déjà implémenté. Ce que je veux savoir, c'est comment envoyer une combinaison de touches "Cmd-C" à l'application active pour qu'elle place le texte sélectionné dans le presse-papiers (carton général).Comment envoyer une frappe "Cmd-C" à l'application active dans objectif-c, ou dire à l'application de faire une opération de copie?
Ou encore mieux: comment dire à l'application active de faire une opération de copie sans envoyer la frappe, ou sans mettre en surbrillance le menu "Edition" lorsque l'opération de copie est déclenchée.
Je ne peux pas utiliser NSAppleScript (10.2) car cette classe spécifique doit être aussi rétrocompatible que possible (idéalement jusqu'à 10.0).
J'ai regardé NSAppleEvents (ce qui semblerait être le chemin à parcourir) mais je n'arrive pas à trouver un moyen de le faire. Une réponse spécifique serait la bienvenue!
Merci d'avance!
MISE À JOUR:
La solution NSAppleScript par Rob travaille mais je suis toujours intéressé à faire cela sans avoir besoin de NSAppleScript. J'ai essayé d'utiliser CGPostKeyboardEvent (en utilisant la dernière valeur booléenne pour mettre la clé à son statut "up" ou "down") mais je n'arrive pas à trouver les codes de clés ou les tables de codes de caractères. Quelqu'un pourrait-il préciser comment CGPostKeyboardEvent serait utilisé pour taper un «c»? (une table CGCharCode et CGKeyCode serait parfaite).
Merci pour la réponse rapide, mais la page de référence pour GCPostKeyboardEvent dit que cette méthode est obsolète en 10.6 ... Je travaille sur un produit commercial et j'ai besoin d'une solution à l'épreuve du temps. La discussion dit que CGEventCreateKeyboardEvent serait un bon candidat de remplacement, mais il est seulement supporté depuis 10.4 et plus ... y a-t-il une autre façon de le faire? – Form
@Form Je pense que la façon de gérer cela est la compilation conditionnelle. Utilisez CGPostKeyboardEvent pour <10.3 et CGEventCreateKeyboardEvent pour> = 10.4 – Amok
La prise en charge d'exécution d'Apple pour le SDK 10.6 est la moindre de vos préoccupations. Surtout que vous essayez de cibler pré-10.4, ce qui je suppose serait 10.3.9 puisque c'est le premier SDK universel. – Darren