View Single Post
  #2  
Old May 16th 06, 03:26 PM posted to microsoft.public.outlook.program_addins
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default my first outlook add-in, in c++...

In On_Connection you first need to check if there are any Explorers at all,
Outlook can be started using automation with no UI (think ActiveSynch). You
need to maintain a count or collection of Explorers and Inspectors and
handle the Inspector.Close and Explorer.Close events. In those events if the
counts of the collections is = 1 you know Outlook wants to close down. At
that point you need to release all objects that are being retained so the
On_Disconnection event will fire.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003
Reminder Manager, Extended Reminders, Attachment Options
http://www.slovaktech.com/products.htm


"optimist" wrote in message
...
And I'm apparently suffering from a common problem - how to get Outlook to
shutdown after my add-in is installed. I've flailed for a couple of
days,
now it's time to ask for help. I've gleaned that I need to somehow close
or
release or free something in the OnClose event for the Explorer, but what
and
how is that done? I've tried doing
appPtr-GetApplication()-Release()...which doesn't seem to have any
effect.
Here's the OnConnection() code where some of the initialization code
lives,
if it helps to point out my failures...

STDMETHODIMP CConnect::OnConnection(IDispatch *pApplication,
AddInDesignerObjects::ext_ConnectMode ConnectMode, IDispatch *pAddInInst,
SAFEARRAY ** /*custom*/ )
{
pApplication-QueryInterface(__uuidof(IDispatch),
(LPVOID*)&m_pApplication);

CComQIPtr Outlook::_Application spApp(pApplication);
ATLASSERT(spApp);
m_spApp = spApp;

CComPtrOutlook::_Explorer spExplorer;

spExplorer = spApp-ActiveExplorer();
m_spExplorer = spExplorer;

ExpEvents:ispEventAdvise((IDispatch*)m_spExplore r,&__uuidof(Outlook::ExplorerEvents));

AppEvents:ispEventAdvise((IDispatch*)m_spApp,&__ uuidof(Outlook::ApplicationEvents));

return S_OK;
}


Ads