2010-09-01 3 views
0

J'ai un gestionnaire de protocole associé à mon application Cocoa.Est-il possible de connaître le référent pour les appels GURL reçus via un événement AppleScript?

[[NSAppleEventManager sharedAppleEventManager] 
    setEventHandler:self 
    andSelector:@selector(getUrl:withReplyEvent:) 
    forEventClass:kInternetEventClass andEventID:kAEGetURL];  

...

- (void)getUrl:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent 
{ 
#ifdef DEBUG 
    NSLog(@"%s: %@",__PRETTY_FUNCTION__,event); 
#endif 
    NSURL *url = [NSURL URLWithString:[[event paramDescriptorForKeyword:keyDirectObject] stringValue]]; 
... 
} 

Qui est referrer? (s'il a été appelé à partir d'une machine locale, je pense qu'il peut être indéfini, mais si j'appelle ce protocole à partir d'un site Web ... Je voudrais savoir le domaine à partir duquel la demande est reçue

Est-ce possible? ?

est une solution là pour résoudre cette tâche par une autre façon?

Répondre

1

De: http://www.cocoabuilder.com/archive/cocoa/125741-finding-the-sender-of-an-appleevent-in-cocoa-app-on-10-2-8-or-greater.html

NSAppleEventDescriptor *addrDesc = [event 
attributeDescriptorForKeyword:keyAddressAttr]; 
NSData *psnData = [[addrDesc 
coerceToDescriptorType:typeProcessSerialNumber] data]; 

if (psnData) 
{ 
ProcessSerialNumber psn = *(ProcessSerialNumber *) [psnData bytes]; 
... 
} 
+0

comme une semi-solution - nous pouvons obtenir le nom de processus de psn, et appliquer notre propre politique alors ... – UncleMiF

0

Essayez d'inspecter la cible de l'événement de réponse. cet événement sera renvoyé à quelle application vous a envoyé l'événement d'origine, où que ce soit.

Si vous voulez dire que l'utilisateur clique sur un lien que votre application gère, et que vous voulez t pour connaître l'URL de la page qui contenait le lien: Il n'y a aucun moyen de le faire.

+0

merci pour la réponse. oui, idéalement, je voulais l'URL de la page de l'appelant. mais je ne peux même pas séparer la demande locale de la demande à distance. Malheureusement, replyEvent est toujours nul. il y a plus « qtnd » clé avec la valeur (3C3F786D6 $ ... mais il semble identique aussi bien que tous les appels . alors peut-être la réponse est « rien du tout »: - ( – UncleMiF

Questions connexes