interaction entre 2 applications

chevalhackchevalhack Membre
23:36 modifié dans API AppKit #1
Bonjour,

En fait ce que j'aimerais reproduire c'est un peu le même principe que le visualiseur de clavier mais en plus simple, c-à -d, donc une application qui reste en premier plan (ça c'est fait), qui n'a pas de barre de menu ni d'icone dock c'est fait aussi (UIElement dans info.plist), mais maintenant ce que j'aimerais pouvoir réussir à  faire c'est donc j'ai un bouton tout simple et j'aimerais que l'action qui est lié à  ce bouton s'effectue sur l'application principale qui est lancé comme par exemple j'ouvre un éditeur de texte et puis mon application et quand j'appuye sur le bouton une lettre s'écrit dans l'éditeur en gros comme dans le visualiseur de clavier.

Je ne veux pas reproduire tout le visualiseur juste reproduire et comprendre cette fonctionnalité (interaction avec une autre application si je peux dire)

J'espère que je suis assez clair ^^

Réponses

  • AliGatorAliGator Membre, Modérateur
    23:36 modifié #2
    A mon avis il faut que tu joues avec les propriétés acceptsFirstResponder & consort de NSResponder, mais surtout la méthode canBecomeKeyWindow de NSWindow. De sorte que ta fenêtre ne puisse devenir la "keyWindow" et donc ne puisse prendre le focus et devenir l'application active à  la place de l'application courante.
  • chevalhackchevalhack Membre
    23:36 modifié #3
    j'ai fait plusieurs test mais l'application courante perd son focus je vais encore faire quelques recherches
  • tabliertablier Membre
    23:36 modifié #4
    Pour la partie communication entre processus, Apple a fait un texte (doc de Xcode 2.5) que j'avais traduit et résumé:
    résumé ici
  • chevalhackchevalhack Membre
    septembre 2009 modifié #5
    Je n'y arrive toujours pas  :-\\ pourtant j'ai utiliser toute les propriété de NSWindow tel que canBecomeKeyWindow et toutes celles qui lui sont liés mais l'application courant perd toujours son focus soit je les utilisent mal soir ce ne sont pas les bonnes

    edit: en fait c'est n'est pas du tout ça que j'avais besoin, je dois utiliser les Quartz event service on peux donc clôturer le sujet
  • Philippe49Philippe49 Membre
    septembre 2009 modifié #6
    Pour envoyer un message entre deux applications, on peut utiliser le
    NSDistributedNotificationCenter * defaultCenter=[NSDistributedNotificationCenter defaultCenter];
    


    Comme pour les notifications classiques, on inscrit une des instances de l'application destinatrice afin qu'elle reçoive la notification :
    [defaultCenter addObserver:self selector:... name:PHRClickNotification object:..];
    


    et l'application source poste la notification
    [defaultCenter postNotificationName:PHRClickNotification object:@"une chaà®ne ici" userInfo:nil deliverImmediately:YES];
    

  • 23:36 modifié #7
    Juste pour info, cet éditeur de texte pris en exemple, c'est le tiens, ou bien tu cherches vraiment à  communiquer avec TOUT, et te faire passer pour un vrai clavier virtuel?
  • chevalhackchevalhack Membre
    septembre 2009 modifié #8
    avec tout (clavier virtuel mais bon je ne veux pas reproduire un clavier complet ^^)

    Donc le message de Philippe49 n'est pas ce qu'il faut je suppose.
  • Philippe49Philippe49 Membre
    septembre 2009 modifié #9
    dans 1252417103:

    Donc le message de Philippe49 n'est pas ce qu'il faut je suppose.

    Ben oui, ce n'est pas ce que tu veux. Si tu veux que l'Appli A fasse faire telle chose à  l'appli B sans qu'elle soit au courant, il faut que le destinataire B ait du code à  appliquer lors de la réception du message.Or c'est le fonctionnement normal d'une application que de décider elle-même ce qu'elle veut recevoir et ce qu'elle en fera ... mises à  part les messages du system. Même quand on utilise Apple Script., c'est comme cela. Autrement, ce serait une violation  ... 

    Si il s'agit de lettres comme dans les caractères spéciaux, c'est le code de l'implémentation standard de NSTextView qui réagit dans certaines conditions (si le NSTextView a le focus dans ton appli, si l'appli est active en premier plan).
  • chevalhackchevalhack Membre
    23:36 modifié #10
    Oui c'est pour ça que je me suis tourner vers les quartz event donc j'ai fait un autre poste à  moins que l'on peux en discuter ici car je ne connais pas du tout le fonctionnement des quartz event et comment les intégrer dans une app (quel projet ? etc.)
Connectez-vous ou Inscrivez-vous pour répondre.