Bonsoir
J'ai un soucis avec la méthode GetActiveObject, sensé me renvoyer une instance d'application (outlook dans mon cas) mais me renvoit une exception.
Le truc un peu funky, c'est que je fais appel à cette méthode dans du code qui est exécuté depuis outlook, donc après qu'outlook soit lancé, donc je suis certain qu'il y a une instance d'outlook qui tourne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.Runtime.InteropServices.Marshal.GetActiveObject
Dès qu'outlook perd le focus et que je lui redonne le focus, en revanche ça marche.
Au début j'ai été assez surpris de ce comportement, puis je suis tombé sur cette technote qui explique bien les raisons de mon problème:
l'application n'est pas enregistrée dans le Running Object Table (ROT), et donc je ne peux pas la récupérer et donc je ne peux pas exécuter mon code correctement
Pour préciser un peu mon contexte, car je pense que ça peut être utile pour mieux visualiser, je développe un add-in sur un produit qui agit comme un plug-in dans outlook, donc ce n'est pas du tout du code outlook que je manipule. En revanche, j'aimerais sur certaines actions de l'utilisateur que je peux détecter dans mon add-on, pouvoir agir sur l'instance outlook ouverte via OLE automation.
Et c'est rageant, car ça fonctionne nickel en fait, sauf que, au lancement d'outlook, mon code marchera pas parce que je ne peux pas récupérer l'instance d'outlook tant qu'outlook a le focus.
D'après la technote, le seul moyen pour qu'outlook s'enregistre dans le ROT, c'est de lui faire perdre le focus, seulement ce n'est pas possible dans mon cas car je suis dans un contexte purement outlook.
[edit] je veux dire par là que je n'ai aucune autre application ou fenêtre à qui donner le focus, et puis de toutes façons c'est crade comme solution et j'aimerais l'éviter
Et je suis complètement bloqué là-dessus.
Je ne vois pas comment faire. En gros s'il y avait un autre moyen de récupérer l'application outlook dans mon code sans passer par getActiveObject, ou alors s'il y avait moyen de "forcer" l'enregistrement de outlook dans la ROT ça serait nickel.
Quelqu'un a-t-il une petite idée ou une orientation à me donner?
Merci bcp d'avance
Partager