![]() |
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
|
|||
|
|||
![]()
I want to compare two objects. The objects type is MS Outlook inspectors.
Here is the code. struct Outlook::_Inspector* activeIn; m_spApp-ActiveInspector(&activeIn); if(NULL == activeIn) continue; CComPtrIUnknown activeUnk; activeIn-QueryInterface(IID_IUnknown, (void**)&activeUnk); struct Outlook::_Inspector* inspector; CComPtrIUnknown spInspectUnk; //IUnknown* spInspectUnk; ///* for(long i=1;i=nNowNum;i++) { inspectors-Item(CComVariant(i),&inspector); if(NULL == inspector || 0xcccccccc == (long)inspector) continue; inspector-IsWordMail(&bWordMail); if(!bWordMail) continue; inspector-QueryInterface(IID_IUnknown, (void**)&spInspectUnk); if(spInspectUnk.IsEqualObject(activeUnk)) { //dosomething //how to come in this block } } I set a timer to check inspectors collection! But every time the value of spInspectUnk changes. Would you like to tell me how to compare them? |
Ads |
#2
|
|||
|
|||
![]()
Hi
As a quick thought, are your Inspector objects marshalled to different threads / appartments? If so, you'll not be able to check the addresses of the functions / objects. "xwjbs" wrote in message ... I want to compare two objects. The objects type is MS Outlook inspectors. Here is the code. struct Outlook::_Inspector* activeIn; m_spApp-ActiveInspector(&activeIn); if(NULL == activeIn) continue; CComPtrIUnknown activeUnk; activeIn-QueryInterface(IID_IUnknown, (void**)&activeUnk); struct Outlook::_Inspector* inspector; CComPtrIUnknown spInspectUnk; //IUnknown* spInspectUnk; ///* for(long i=1;i=nNowNum;i++) { inspectors-Item(CComVariant(i),&inspector); if(NULL == inspector || 0xcccccccc == (long)inspector) continue; inspector-IsWordMail(&bWordMail); if(!bWordMail) continue; inspector-QueryInterface(IID_IUnknown, (void**)&spInspectUnk); if(spInspectUnk.IsEqualObject(activeUnk)) { //dosomething //how to come in this block } } I set a timer to check inspectors collection! But every time the value of spInspectUnk changes. Would you like to tell me how to compare them? |
#3
|
|||
|
|||
![]()
OutlookSpy has some built in compare functions. It might help.
|
#4
|
|||
|
|||
![]()
yes,the code here is put in a single thread,not in the main thread. And the
application object is a varaible which comes from the main thread. I use the function sleep() so it works just like a timer. As you know ,there is no newinspector event can be fired in ol2000! I want to use this to find the newinspector,and then put it into a collection. If i can't comare two objects, it will replicate inspector. A function that processes message will not be seemed another thread? And it will work? I try it ! Thank you! "Jeff" wrote: Hi As a quick thought, are your Inspector objects marshalled to different threads / appartments? If so, you'll not be able to check the addresses of the functions / objects. "xwjbs" wrote in message ... I want to compare two objects. The objects type is MS Outlook inspectors. Here is the code. struct Outlook::_Inspector* activeIn; m_spApp-ActiveInspector(&activeIn); if(NULL == activeIn) continue; CComPtrIUnknown activeUnk; activeIn-QueryInterface(IID_IUnknown, (void**)&activeUnk); struct Outlook::_Inspector* inspector; CComPtrIUnknown spInspectUnk; //IUnknown* spInspectUnk; ///* for(long i=1;i=nNowNum;i++) { inspectors-Item(CComVariant(i),&inspector); if(NULL == inspector || 0xcccccccc == (long)inspector) continue; inspector-IsWordMail(&bWordMail); if(!bWordMail) continue; inspector-QueryInterface(IID_IUnknown, (void**)&spInspectUnk); if(spInspectUnk.IsEqualObject(activeUnk)) { //dosomething //how to come in this block } } I set a timer to check inspectors collection! But every time the value of spInspectUnk changes. Would you like to tell me how to compare them? |
#5
|
|||
|
|||
![]()
I try to use settimer(),but it can't work either. I find that the __vfptr
member stay same all the time. Can i use it(i can't get it)? Would you like to give me other advice? How to check it in a one thread? Thank you! "Jeff" wrote: Hi As a quick thought, are your Inspector objects marshalled to different threads / appartments? If so, you'll not be able to check the addresses of the functions / objects. "xwjbs" wrote in message ... I want to compare two objects. The objects type is MS Outlook inspectors. Here is the code. struct Outlook::_Inspector* activeIn; m_spApp-ActiveInspector(&activeIn); if(NULL == activeIn) continue; CComPtrIUnknown activeUnk; activeIn-QueryInterface(IID_IUnknown, (void**)&activeUnk); struct Outlook::_Inspector* inspector; CComPtrIUnknown spInspectUnk; //IUnknown* spInspectUnk; ///* for(long i=1;i=nNowNum;i++) { inspectors-Item(CComVariant(i),&inspector); if(NULL == inspector || 0xcccccccc == (long)inspector) continue; inspector-IsWordMail(&bWordMail); if(!bWordMail) continue; inspector-QueryInterface(IID_IUnknown, (void**)&spInspectUnk); if(spInspectUnk.IsEqualObject(activeUnk)) { //dosomething //how to come in this block } } I set a timer to check inspectors collection! But every time the value of spInspectUnk changes. Would you like to tell me how to compare them? |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to compare 2 contacts with VBA? | Chris S[_2_] | Outlook and VBA | 10 | December 19th 07 04:02 AM |
How to uniquely identify explorer / inspector objects in Outlook 2007 | gernot | Add-ins for Outlook | 5 | September 11th 07 10:11 PM |
How do I compare two contact files | Jaron | Outlook - Using Contacts | 1 | August 30th 06 02:50 PM |
compare multiple contact lists | Tish | Outlook - Using Contacts | 1 | April 29th 06 04:07 PM |
Help! Inspector.Close is fired before Inspector.Activate handler finishes | Sergey Anchipolevsky | Add-ins for Outlook | 8 | February 9th 06 10:51 AM |