PDA

View Full Version : Messenger Wont Exit


Leo Havmøller
April 29th 04, 02:02 PM
If I have used the IMessenger API, Messenger wont exit (shows that pesky
"There are other applications currently using features" dialog).

I have boiled it down to the following console sample, which only calls
CoCreateInstance() and Release().

AFAIK everything is released and cleaned up, but the application must be
closed before messenger will exit.

What am I missing?


#include <windows.h>
#include <objbase.h>
#include <stdio.h>
#include <conio.h>

const GUID IID_IMessenger =
{0xd50c3186,0x0f89,0x48f8,{0xb2,0x04,0x36,0x04,0x6 2,0x9d,0xee,0x10}};

const GUID CLSID_Messenger =
{0xb69003b3,0xc55e,0x4b48,{0x83,0x6c,0xbc,0x59,0x4 6,0xfc,0x3b,0x28}};

int main(int argc, char* argv[])
{
HRESULT hr;
IUnknown* pMsgr;

CoInitialize(0);
hr = CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger,
(void**)&pMsgr);
printf("CreateInstance=%u=0x%X\n", hr, hr);
if (pMsgr)
{
pMsgr->Release();
}
CoUninitialize();

printf("Try to exit messenger now.\n");
_getch();

return 0;
}


Leo Havmøller.

Leo Havmøller
May 3rd 04, 01:44 PM
> hr = CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger,

It seems that using CLSCTX_LOCAL_SERVER instead of CLSCTX_ALL solves the
problem.

Leo Havmøller.

Leo Havmøller
May 3rd 04, 01:44 PM
> hr = CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger,

It seems that using CLSCTX_LOCAL_SERVER instead of CLSCTX_ALL solves the
problem.

Leo Havmøller.

Leo Havmøller
May 3rd 04, 01:44 PM
> hr = CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger,

It seems that using CLSCTX_LOCAL_SERVER instead of CLSCTX_ALL solves the
problem.

Leo Havmøller.

Leo Havmøller
May 3rd 04, 01:44 PM
> hr = CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger,

It seems that using CLSCTX_LOCAL_SERVER instead of CLSCTX_ALL solves the
problem.

Leo Havmøller.

Leo Havmøller
May 3rd 04, 01:44 PM
> hr = CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger,

It seems that using CLSCTX_LOCAL_SERVER instead of CLSCTX_ALL solves the
problem.

Leo Havmøller.

Leo Havmøller
May 3rd 04, 01:44 PM
> hr = CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger,

It seems that using CLSCTX_LOCAL_SERVER instead of CLSCTX_ALL solves the
problem.

Leo Havmøller.

Leo Havmøller
May 3rd 04, 01:44 PM
> hr = CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger,

It seems that using CLSCTX_LOCAL_SERVER instead of CLSCTX_ALL solves the
problem.

Leo Havmøller.

Leo Havmøller
May 3rd 04, 01:44 PM
> hr = CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger,

It seems that using CLSCTX_LOCAL_SERVER instead of CLSCTX_ALL solves the
problem.

Leo Havmøller.

Google