Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

handleGetURLEvent_withReplyEvent(event, replyEvent)

4 réponses
Avatar
pere.noel
bon, j'ai lu la doc (pas toute) sur Apple Event Manager.

je résume mon cas :

j'utilise donc :

handleGetURLEvent_withReplyEvent(event, replyEvent)

de event j'extrais le paramDescriptorForKeyword correspondant à '----'

j'en prend la string, ce qui me donne qqc comme :

"bmkm:toto" (ce que l'utilisateur a tapé dans le champ url du
navigateur.

pour moi la partie après les : est une commande (comme quand on fait
man:plutil avec Sogudi)

donc là je dois répondre par une url représentant le résultat de la
commande "toto" par exemple :
"http://www.rubycocoa.com/"


d'après ce que j'ai compris, j'utilise event tel quel et je lui change
juste le paramDescriptorForKeyword, supposons que c'est bien ça.

je fais donc un set qqc...

et je retourne replyEvent

il suffit donc de faire qqc dans le genre :

replyEvent=event.setParam... c'est ça ?

là, premier problème, quand je regarde avec Appkido j'ai la méhtode :
- (void)setParamDescriptor:(NSAppleEventDescriptor *)descriptor
forKeyword:(AEKeyword)keyword

normalement, je n'en ai pas besoin, car event a le bon keyword, je dois
juste changer la valeur pour ce keyword, c'est bien ça ?

ou je n'ai rien pigé ?

je ne vois pas, dans la liste des méthodes d'instances de quoi faire ça.

car je suppose que dans event (donc le NSAppleEventDescriptor entrant)
tout est ok excepté la chaine que j'ai extraite.

autrement dit, je n'ai pas à aller chercher le psn, puisque c'est
nécessairement le bon dans mon cas.

cependant j'aimerais bien comprendre comment on le lit.

à la page "Data Structures Within Apple Events"
<http://developer.apple.com/documentation/mac/IAC/IAC-98.html>

j'ai :
typeProcessSerialNumber 'psn ' Process serial number
pour un :
TYPE AEAddressDesc = AEDesc; {address descriptor record}

là le "AEDesc" je l'obtiens par :

aeDesc=event.aeDesc

mais comment à partir de cet AEDesc j'obtiens la valeur associée à 'psn
' ?
--
une bévue

4 réponses

Avatar
luc
Une bévue wrote:

donc là je dois répondre par une url représentant le résultat de la
commande "toto" par exemple :
"http://www.rubycocoa.com/"


Non, je ne crois pas que GURL attende une réponse particulière puisque
c'est l'application appelée qui est censée se charger de l'URL passée en
paramètre.

Donc un simple openURLs:withAppBundleIdentifier... au NSWorkspace et le
tour est joué.

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:

Non, je ne crois pas que GURL attende une réponse particulière puisque
c'est l'application appelée qui est censée se charger de l'URL passée en
paramètre.


mais alors pourquoi l'argument "replyEvent" s'il ne sert pas ?
dans ce cas il doit y avoir un "handleGetURLEvent" tout court ? (ie sans
le withReply )

curiosité si je cherche l'un comme l'autre je ne trouve pas ces méthodes
dans AppKido.

Donc un simple openURLs:withAppBundleIdentifier... au NSWorkspace et le
tour est joué.


bon, ça je vois.

du coup, il me faut détéecter quel navigateur a envoyé l'event.
--
une bévue

Avatar
luc
Une bévue wrote:

mais alors pourquoi l'argument "replyEvent" s'il ne sert pas ?


Il ne sert pas *dans ce cas précis*, il sert dans un tas d'autres.

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:


Il ne sert pas *dans ce cas précis*, il sert dans un tas d'autres.


oui, d'accord, il sert dans d'autres cas où on chaine des events entre
différentes applications...

je n'ai toujours pas trouvé comment soustirer à event le
typeApplSignature (keyword = 'sign'.unpack('N').first) afin de retrouver
l'Application signature.

je suppose que c'est dans les records descriptor, je vois bien comment
les "setter" mais pas comment les lire.
--
une bévue