Question

J'ai cherché toujours une solution à cela, donc je pensais que je cherche la matière grise des plus grands esprits que le mien. Je développe une application Cocoa qui utilise l'API d'accessibilité pour manipuler un autre programme (c'est une application de raccourci clavier). L'application que je suis le contrôle a généralement plusieurs fenêtres ouvertes, avec un peu caché derrière les autres. Ce que je voudrais faire, si elle est possible, est d'envoyer des événements de souris pour Windows en utilisant l'API d'accessibilité d'une manière qui appuie sur un bouton dans la fenêtre sans l'amener au premier plan (Interagir avec la fenêtre, mais ne l'active pas) . La raison pour laquelle je suis en train de faire est que l'envoi de l'événement de souris à cette autre fenêtre forcera à l'avant-plan et de perturber l'interaction avec la fenêtre avant tout de l'utilisateur.

Ceci est possible sous Windows - apparemment parce que des applications similaires à la mienne le faire là-bas - mais je reçois le sentiment que ce n'est pas possible avec Cocoa, étant donné la façon dont fonctionne le gestionnaire de fenêtres. Je me trompe?

Était-ce utile?

La solution

L'accessibilité est-niveau supérieur à celui. Vous envoyez, par exemple, les actions de AXPress aux objets AXButton, mais « presse » est pas nécessairement un clic en appuyant sur la barre d'espace en vue est focalisé, par exemple, est aussi une « presse ». AXPress est une action de haut niveau qui signifie « faire votre chose », ce qui a évidemment un sens pour certains points de vue (comme les boutons) et pas d'autres (comme les champs).

Accessibilité activation de l'application est logique quand on regarde de son but recherché: appareils et accessoires fonctionnels pour les utilisateurs handicapés. Si l'utilisateur « presse » quelque chose par quelque moyen que ce, ils ont l'intention probablement d'activer l'application et le travail en elle.

Quartz Event Services vous obtiendrez presque il: Vous pouvez les envoyer à un robinet . Le hic est que vous ne pouvez envoyer des événements à un robinet lorsque les feux de robinet de -ie, lorsque l'application a déjà un événement à traiter. Quand il ne est pas, vous êtes coincé.

scroll top