A code monkey in Research

One developer's view of (a little bit of) Microsoft Research, Cambridge

When is an Explorer not an Explorer?

RJGray found another error in the NoReplyAll add-in: basically, visiting the Today Page causes the add-in to throw a bunch of exceptions which seem to be triggered by accessing the Explorer Selection when that page is showing instead of an Explorer – the lazy instinct is to add a try…catch block, which does indeed make the error messages go away. While that’s not particularly satisfactory, a web search for the message “The Explorer has been closed and cannot be used for further operations” unfortunately produces no better solution. I did think of trying to identify the Today page but couldn’t come up with a obvious and reliable way to do it (one thought was a string match on the name, but how then would I deal with localization, which tripped me up in the past).

In an earlier post I showed some code to get hold of the current MailItem from the Outlook main window: my fix is to replace that with:

Outlook.MailItem item = null;
var explorer = control.Context as Outlook.Explorer;
if (explorer != null)
Outlook.Selection selection = null;
selection = explorer.Selection;
if (selection.Count == 1)
item = selection[1] as Outlook.MailItem;
catch(COMException ex)
if (selection != null)

That does seem to do the trick – it did briefly cross my mind to wrap all of the ribbon invokes methods in try…catch blocks, to ensure that no errors make it to the user, and maybe I should do that for a more robust release, but I want to see what new things break, so that I can learn more about how to fix them!

New release of the add-in coming soon…