![]() |
If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
![]()
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: ![]() AppEvents: ![]() return S_OK; } |
#2
|
|||
|
|||
![]()
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: ![]() AppEvents: ![]() return S_OK; } |
#3
|
|||
|
|||
![]()
"Ken Slovak - [MVP - Outlook]" wrote:
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. That's one of the problems I'm looking for help on - how to "release" the objects... In my OnConnection I'm saving a pointer to the Application and ActiveExplorer objects - I haven't yet figured out why my NewExplorer callback hasn't been triggered but since in my testing I only have the one instance of outlook running I figured that wasn't too surprising - anyway, in my OnClose() I'm calling Release() on the application object (m_spApp-GetApplication()-Release() ![]() explorer object (m_spExplorer-Release() ![]() member declared in class ... error from the compiler. I got the same error from the release of the application before I found the GetApplication() method. What's the correct way to "release" the objects? |
#4
|
|||
|
|||
![]()
I found the problem - I created another app instance in my
OnStartupComplete, once I removed that I'm now getting the OnDisconnect. |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
How do I add 10 attendees in outlook ? | manatee | Outlook - Calandaring | 2 | May 23rd 06 06:16 PM |
How to add dynamically add controls in Outlook 2003 | Rahul | Outlook and VBA | 5 | May 8th 06 03:38 PM |
How to add dynamically add controls in Outlook 2003 | Sue Mosher [MVP-Outlook] | Outlook - Using Forms | 4 | May 8th 06 03:38 PM |
Uninstall Outlook add-in | KPowell | Add-ins for Outlook | 1 | February 15th 06 10:55 PM |