Re: COM Interface definition
 
This is a multi-part message in MIME format.
--------------080601070908070307090409
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Hi,
Thanks for your response. I am have already gone through Dimstry's 
article and I have already discussed the topic with him. I know the 
interfaces to be used. But what I want to know is that "do I need to 
create a .idl file or just a .h file with the interface definitions".
I have created the attached .h file, AccountManager.h (its not complete 
  thought but the interface  IOlkAccountManager is complete) and trying 
to create and object of IOlkAccountManager, by these lines
    IOlkAccountManager * ppv;
    CoCreateInstance(CLSID_OlkAccountManager,NULL, 0, 
IID_IOlkAccountManager, (void**)&ppv);
For this I get Linker error,
    MAPI1Dlg.obj : error LNK2001: unresolved external symbol 
_CLSID_OlkAccountManager
    MAPI1Dlg.obj : error LNK2001: unresolved external symbol 
_IID_IOlkAccountManager
What should I do?? If I have to create a library for these, what will be 
the Library's GUID? I didn't find any thing mentioned in the MSDN for 
the library. Only Interfaces are mentioned.
Regards,
Ashutosh
Charles Wang[MSFT] wrote:
Hi Ashutosh,
Unfortunately the current release of Outlook Integration API does not 
include any headers and DLLs that can be imported. If you want to use it, 
you may have to create the header file by yourself and then use 
CoCreateInstance() to create an instance. I think that you are on the right 
way by creating your own IDL file for the API now.
You may refer to:
Introducing the Outlook Integration API 
http://blogs.msdn.com/stephen_griffin/archive/2004/12/16/introducing-the-out
look-integration-api.aspx
Need help with IOlkAccount 
http://groups.google.com/group/microsoft.public.office.developer.outlook.vba
/browse_thread/thread/933ab390f56aa206/3c28e2f44ac12dc1?hl=en&lnk=st&q=IOlkA
ccount+mapi#3c28e2f44ac12dc1
Regarding the error "statements outside library block are illegal in 
mktyplib compatibility mode" in your second response, per my experiences, 
you should be able to resolve it according to either of the following two 
methods:
1. Put all the definitions of  interfaces, coclasses and enums etc inside a 
library block like this:
[ 
    uuid(<library guid>), 
    version(<library version>), 
    helpstring(<library description>) 
] 
library MyLib 
{ 
    // interfaces, coclasses, enums etc
} 
2. Configure the MIDL not to be mktyblib-compatible. In Visual Studio, 
right-click the IDL file, click Properties, expand MIDL->General and set 
"MkTypLib compatible" to No. 
Hope this helps. If you have any other questions or concerns, please feel 
free to let me know.
Best regards,
Charles Wang
Microsoft Online Community Support
===========================================================
Delighting our customers is our #1 priority. We welcome your 
comments and suggestions about how we can improve the 
support we provide to you. Please feel free to let my manager 
know what you think of the level of service provided. You can 
send feedback directly to my manager at: msdnmg@microsoft.com.
===========================================================
Get notification to my posts through email? Please refer to 
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.
Note: The MSDN Managed Newsgroup support offering is for 
non-urgent issues where an initial response from the community 
or a Microsoft Support Engineer within 1 business day is acceptable. 
Please note that each follow up response may take approximately 
2 business days as the support professional working with you may 
need further investigation to reach the most efficient resolution. 
The offering is not appropriate for situations 
that require urgent, real-time or phone-based interactions or complex 
project analysis and dump analysis issues. Issues of this nature are best 
handled working with a dedicated Microsoft Support Engineer by 
contacting Microsoft Customer Support Services (CSS) at 
http://msdn.microsoft.com/subscriptions/support/default.aspx.
============================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
=========================================================
--------------080601070908070307090409
Content-Type: text/plain;
 name="AccountManager.h"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="AccountManager.h"
DEFINE_GUID(IID_IOlkErrorUnknown, 0x9240a6c0, 0xaf41, 0x11d2, 0x8c, 0x3b, 0x0, 0x10, 0x4b, 0x2a, 0x66, 0x76);
//[
//	uuid(9240a6c0-af41-11d2-8C3B-00104B2A6676)
//]
MIDL_INTERFACE("9240a6c0-af41-11d2-8C3B-00104B2A6676") 
IOlkErrorUnknown: public IUnknown
{
    HRESULT GetLastError( HRESULT hr, LPWSTR *ppwszError);
};
DEFINE_GUID(IID_IOlkAccountHelper, 0x9240a6cb, 0xaf41, 0x11d2, 0x8c, 0x3b, 0x0, 0x10, 0x4b, 0x2a, 0x66, 0x76);
MIDL_INTERFACE("9240a6cb-af41-11d2-8C3B-00104B2A6676")
IOlkAccountHelper: public IUnknown
{
    HRESULT Placeholder1 (void*);
    HRESULT GetIdentity ( LPWSTR pwszIdentity,DWORD *pcch);
    HRESULT GetMapiSession(LPUNKNOWN *ppmsess);	
    HRESULT HandsOffSession( );
};
DEFINE_GUID(IID_IOlkEnum, 0x9240a6c0, 0xaf41, 0x11d2, 0x8c, 0x3b, 0x0, 0x10, 0x4b, 0x2a, 0x66, 0x76);
MIDL_INTERFACE("9240a6c0-af41-11d2-8C3B-00104B2A6676")
IOlkEnum : IUnknown
{
    HRESULT GetCount (DWORD *pulCount);
    HRESULT Reset ();
    HRESULT GetNext(LPUNKNOWN *ppunk);
    HRESULT Skip( DWORD cSkip);
};
DEFINE_GUID(IID_IOlkAccountNotify, 0x9240a6c3, 0xaf41, 0x11d2, 0x8c, 0x3b, 0x0, 0x10, 0x4b, 0x2a, 0x66, 0x76);
MIDL_INTERFACE("9240a6c3-af41-11d2-8C3B-00104B2A6676")
 IOlkAccountNotify : IUnknown
{
    HRESULT Notify( DWORD dwNotify,	DWORD dwAcctID,	DWORD dwFlags);
};
typedef struct 
{
    DWORD	cb;
    BYTE * pb;
} ACCT_BIN;
typedef struct
{
        DWORD dwType;
        union 
            {
            DWORD dw;
            WCHAR *pwsz;
            ACCT_BIN bin;
            } Val;
} ACCT_VARIANT;
DEFINE_GUID(IID_IOlkAccount, 0x9240a6d2, 0xaf41, 0x11d2, 0x8c, 0x3b, 0x0, 0x10, 0x4b, 0x2a, 0x66, 0x76); DEFINE_GUID(IID_IOlkAccount, 0x9240a6d2, 0xaf41, 0x11d2, 0x8c, 0x3b, 0x0, 0x10, 0x4b, 0x2a, 0x66, 0x76); 
MIDL_INTERFACE("9240a6d2-af41-11d2-8C3B-00104B2A6676")
 IOlkAccount : IOlkErrorUnknown
{
    void IOlkAccount_Placeholder1();
    void IOlkAccount_Placeholder2();
    void IOlkAccount_Placeholder3();
    void IOlkAccount_Placeholder4();
    void IOlkAccount_Placeholder5();
    void IOlkAccount_Placeholder6();
    HRESULT GetAccountInfo( CLSID *pclsidType,DWORD *pcCategories,CLSID **prgclsidCategory);
    HRESULT GetProp( DWORD dwProp,ACCT_VARIANT *pVar);
    HRESULT SetProp( DWORD dwProp,ACCT_VARIANT *pVar);
    void IOlkAccount_Placeholder7();
    void IOlkAccount_Placeholder8();
    void IOlkAccount_Placeholder9();
    HRESULT FreeMemory ( BYTE *pv);
    void IOlkAccount_Placeholder10();
    HRESULT SaveChanges ( DWORD dwFlags);
};
DEFINE_GUID(IID_IOlkAccountManager, 0x9240a6cd, 0xaf41, 0x11d2, 0x8c, 0x3b, 0x0, 0x10, 0x4b, 0x2a, 0x66, 0x76);
MIDL_INTERFACE("9240a6cd-af41-11D2-8C3B-00104B2A6676")
 IOlkAccountManager : IOlkErrorUnknown
{
    HRESULT Init (IOlkAccountHelper *pAcctHelper, DWORD dwFlags);
    void IOlkAccountManager_Placeholder1();
    void IOlkAccountManager_Placeholder2();
    void IOlkAccountManager_Placeholder3();
    void IOlkAccountManager_Placeholder4();
    void IOlkAccountManager_Placeholder5();
    void IOlkAccountManager_Placeholder6();
    HRESULT FindAccount ( DWORD dwProp,	ACCT_VARIANT *pVar,	IOlkAccount **ppAccount);
    void IOlkAccountManager_Placeholder7();
    void IOlkAccountManager_Placeholder8();
    void IOlkAccountManager_Placeholder9();
    HRESULT DeleteAccount ( DWORD dwAcctID);
    void IOlkAccountManager_Placeholder10();
    HRESULT SaveChanges (DWORD dwAcctID, DWORD dwFlags );
    HRESULT GetOrder (const CLSID *pclsidCategory, DWORD *pcAccts, DWORD *prgAccts[]);
    HRESULT SetOrder (const CLSID *pclsidCategory, DWORD *pcAccts, DWORD *prgAccts[]);
    HRESULT EnumerateAccounts (const CLSID *pclsidCategory, const CLSID *pclsidType, DWORD dwFlags, IOlkEnum **ppEnum);
    void IOlkAccountManager_Placeholder11();
    void IOlkAccountManager_Placeholder12();
    HRESULT FreeMemory (BYTE *pv);
    HRESULT Advise ( IOlkAccountNotify *pNotify, DWORD *pdwCookie);
    HRESULT Unadvise ( DWORD *pdwCookie);
    void IOlkAccountManager_Placeholder13();
    void IOlkAccountManager_Placeholder14();
    void IOlkAccountManager_Placeholder15();
};
--------------080601070908070307090409--