WabApi.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:12k
- #ifndef _WABAPI_H_
- #define _WABAPI_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifdef WIN16
- #ifdef GetLastError
- #undef GetLastError
- #endif // GetLastError
- #endif // WIN16
- typedef struct _WABACTIONITEM * LPWABACTIONITEM;
- /* IWABObject Interface ---------------------------------------------------- */
- #define CBIWABOBJECT sizeof(IWABOBJECT)
- #define WAB_IWABOBJECT_METHODS(IPURE)
- MAPIMETHOD(GetLastError)
- (THIS_ HRESULT hResult,
- ULONG ulFlags,
- LPMAPIERROR FAR * lppMAPIError) IPURE;
- MAPIMETHOD(AllocateBuffer)
- (THIS_ ULONG cbSize,
- LPVOID FAR * lppBuffer) IPURE;
- MAPIMETHOD(AllocateMore)
- (THIS_ ULONG cbSize,
- LPVOID lpObject,
- LPVOID FAR * lppBuffer) IPURE;
- MAPIMETHOD(FreeBuffer)
- (THIS_ LPVOID lpBuffer) IPURE;
- MAPIMETHOD(Backup)
- (THIS_ LPSTR lpFileName) IPURE;
- MAPIMETHOD(Import)
- (THIS_ LPSTR lpImportParam) IPURE;
- MAPIMETHOD(Find)
- (THIS_ LPADRBOOK lpIAB,
- HWND hWnd) IPURE;
- MAPIMETHOD(VCardDisplay)
- (THIS_ LPADRBOOK lpIAB,
- HWND hWnd,
- LPSTR lpszFileName) IPURE;
- MAPIMETHOD(LDAPUrl)
- (THIS_ LPADRBOOK lpIAB,
- HWND hWnd,
- ULONG ulFlags,
- LPSTR lpszURL,
- LPMAILUSER *lppMailUser) IPURE;
- MAPIMETHOD(VCardCreate)
- (THIS_ LPADRBOOK lpIAB,
- ULONG ulFlags,
- LPSTR lpszVCard,
- LPMAILUSER lpMailUser) IPURE;
- MAPIMETHOD(VCardRetrieve)
- (THIS_ LPADRBOOK lpIAB,
- ULONG ulFlags,
- LPSTR lpszVCard,
- LPMAILUSER *lppMailUser) IPURE;
- MAPIMETHOD(GetMe)
- (THIS_ LPADRBOOK lpIAB,
- ULONG ulFlags,
- DWORD * lpdwAction,
- SBinary * lpsbEID,
- ULONG ulParam) IPURE;
- MAPIMETHOD(SetMe)
- (THIS_ LPADRBOOK lpIAB,
- ULONG ulFlags,
- SBinary sbEID,
- ULONG ulParam) IPURE;
- #undef INTERFACE
- #define INTERFACE IWABObject
- DECLARE_MAPI_INTERFACE_(IWABObject, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- WAB_IWABOBJECT_METHODS(PURE)
- };
- DECLARE_MAPI_INTERFACE_PTR(IWABObject, LPWABOBJECT);
- #undef INTERFACE
- #define INTERFACE struct _IWABOBJECT
- #undef METHOD_PREFIX
- #define METHOD_PREFIX IWABOBJECT_
- #undef LPVTBL_ELEM
- #define LPVTBL_ELEM lpvtbl
- #undef MAPIMETHOD_
- #define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, IWABOBJECT_)
- MAPI_IUNKNOWN_METHODS(IMPL)
- WAB_IWABOBJECT_METHODS(IMPL)
- #undef MAPIMETHOD_
- #define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, IWABOBJECT_)
- MAPI_IUNKNOWN_METHODS(IMPL)
- WAB_IWABOBJECT_METHODS(IMPL)
- #undef MAPIMETHOD_
- #define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
- DECLARE_MAPI_INTERFACE(IWABOBJECT_)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(IMPL)
- WAB_IWABOBJECT_METHODS(IMPL)
- };
- /*** WABObject_LDAPUrl flags ***/
- // If this flag is specified and the LDAPUrl returns a single
- // query result, instructs the WAB to return the result in the
- // form of a MailUser object instead of displaying Details on it
- // If there are multiple results to the query, fail ..
- #define WABOBJECT_LDAPURL_RETURN_MAILUSER 0x00000001
- // WAB 5.0x and higher:
- // If your application supports Unicode and wants to pass ina Unicode
- // URL to the WAB, you can cast the Unicode URL to an LPSTR and pass it
- // to the LDAPUrl API, *also* setting ulFlags to MAPI_UNICODE to mark the URL
- // as such. Casting is prefered to converting the string because
- // (a) Converting the string may result in loss of data (b) since this is an
- // already published interface we can't modify the interface.
- // MAPI_UNICODE 0x80000000
- /*** WABObject_GetMe returned parameter ***/
- // If the GetMe call results in the creation of a new 'Me' contact,
- // the lpdwAction returned parameter will contain this value
- // indicating to the caller that the object is freshly created and
- // does not have any properties in it
- #define WABOBJECT_ME_NEW 0x00000001
- /*** WABObject_GetMe flags ***/
- // WABObject_GetMe will create a new ME object by default, if
- // none already exists. To force the call to not-create an object, if
- // one doesn't already exist, specify the WABOBJECT_ME_NOCREATE flag.
- // If no me is found, the call fails with MAPI_E_NOT_FOUND.
- // Other flag for WABObject_GetMe is AB_NO_DIALOG defined in wabdefs.h
- #define WABOBJECT_ME_NOCREATE 0x00000002
- /*** IWABObject_VCard Create/Retrieve ***/
- // Flags the WAB whether the lpszVCard parameter is a filename or if
- // it is a NULL terminated string containing the compelte VCard contents
- //
- #define WAB_VCARD_FILE 0x00000000
- #define WAB_VCARD_STREAM 0x00000001
- #ifdef WIN16
- BOOL WINAPI WABInitThread();
- #endif
- //
- // Input information to pass to WABOpen
- //
- typedef struct _tagWAB_PARAM
- {
- ULONG cbSize; // sizeof(WAB_PARAM).
- HWND hwnd; // hWnd of calling client Application. Can be NULL
- LPSTR szFileName; // WAB File name to open. if NULL, opens default.
- ULONG ulFlags; // See below
- GUID guidPSExt; // A GUID that identifies the calling application's Property Sheet extensions
- // The GUID can be used to determine whether the extension prop sheets are displayed or not.
- } WAB_PARAM, * LPWAB_PARAM;
- //flags for WAB_PARAM
- #define WAB_USE_OE_SENDMAIL 0x00000001 // Tells WAB to use Outlook Express for e-mail before checking for a
- // default Simple MAPI client. Default behaviour is to check for the
- // Simple MAPI client first
- #define WAB_ENABLE_PROFILES 0x00400000 // Invokes WAB in a Identity-aware session using Identity-Manager
- // based profiles
- //
- // Root public entry points for WAB API
- //
- STDMETHODIMP WABOpen(LPADRBOOK FAR * lppAdrBook, LPWABOBJECT FAR * lppWABObject,
- LPWAB_PARAM lpWP, DWORD Reserved2);
- typedef HRESULT (STDMETHODCALLTYPE WABOPEN)(
- LPADRBOOK FAR * lppAdrBook,
- LPWABOBJECT FAR * lppWABObject,
- LPWAB_PARAM lpWP,
- DWORD Reserved2
- );
- typedef WABOPEN FAR * LPWABOPEN;
- STDMETHODIMP WABOpenEx(LPADRBOOK FAR * lppAdrBook,
- LPWABOBJECT FAR * lppWABObject,
- LPWAB_PARAM lpWP,
- DWORD Reserved,
- ALLOCATEBUFFER * fnAllocateBuffer,
- ALLOCATEMORE * fnAllocateMore,
- FREEBUFFER * fnFreeBuffer);
- typedef HRESULT (STDMETHODCALLTYPE WABOPENEX)(
- LPADRBOOK FAR * lppAdrBook,
- LPWABOBJECT FAR * lppWABObject,
- LPWAB_PARAM lpWP,
- DWORD Reserved,
- ALLOCATEBUFFER * fnAllocateBuffer,
- ALLOCATEMORE * fnAllocateMore,
- FREEBUFFER * fnFreeBuffer
- );
- typedef WABOPENEX FAR * LPWABOPENEX;
- /* --------------------- */
- typedef struct _WABIMPORTPARAM
- {
- ULONG cbSize; // sizeof(WABIMPORTPARAM)
- LPADRBOOK lpAdrBook;// ptr to the IAdrBook object (required)
- HWND hWnd; // Parent HWND for any dialogs
- ULONG ulFlags; // 0 or MAPI_DIALOG to show progress dialog and messages
- LPSTR lpszFileName; // FileName to import or NULL .. if NULL will show FileOpen dialog
- } WABIMPORTPARAM, FAR * LPWABIMPORTPARAM;
- /* ---- WABEXTDISPLAY ----------------- */
- /* WABEXTDISPLAY Structure used in extending the WAB Details Property Dialogs
- and for doing WAB Context Menu verb extensions.
- The structure is passed into the IWABExtInit::Initialize method
- of the implementor */
- // Flags
- #define WAB_DISPLAY_LDAPURL 0x00000001 // The object being displayed is an LDAP URL
- // The URL can be found in the lpsz struct member
- #define WAB_CONTEXT_ADRLIST 0x00000002 // THe lpv parameter contains a pointer to an
- // AdrList structure corresponding to selected items
- // on which to display a context menu
- #define WAB_DISPLAY_ISNTDS 0x00000004 // Identifies that the entry being displayed originated
- // on the NT Directory Service, for clients that use ADSI and
- // retrieve additional information from the service.
- // MAPI_UNICODE 0x80000000 // Indicates that the WED.lpsz string is actually a UNICODE
- // string and should be cast to a (LPWSTR) before using it
- // If this flag is not present then the WED.lpsz is a DBCS string
- // and should be cast to an LPSTR before using.
- // Struct
- typedef struct _WABEXTDISPLAY
- {
- ULONG cbSize;
- LPWABOBJECT lpWABObject; // pointer to IWABObject
- LPADRBOOK lpAdrBook; // pointer to IAdrBook object
- LPMAPIPROP lpPropObj; // Object being displayed
- BOOL fReadOnly; // Indicates if this is a ReadOnly mode
- BOOL fDataChanged; // Set by extension sheet to signal data change
- ULONG ulFlags; // See above
- LPVOID lpv; // Used for passing in specific data
- LPTSTR lpsz; // Used for passing in specific data
- } WABEXTDISPLAY, FAR * LPWABEXTDISPLAY;
- /* --------------------- */
- #define WAB_IWABEXTINIT_METHODS(IPURE)
- MAPIMETHOD(Initialize)
- (THIS_ LPWABEXTDISPLAY lpWABExtDisplay) IPURE;
- #undef INTERFACE
- #define INTERFACE IWABExtInit
- DECLARE_MAPI_INTERFACE_(IWABExtInit, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- WAB_IWABEXTINIT_METHODS(PURE)
- };
- DECLARE_MAPI_INTERFACE_PTR(IWABExtInit, LPWABEXTINIT);
- DEFINE_GUID(IID_IWABExtInit,
- 0xea22ebf0, 0x87a4, 0x11d1, 0x9a, 0xcf, 0x0, 0xa0, 0xc9, 0x1f, 0x9c, 0x8b);
- /* --------------------- */
- #ifndef WIN16
- #define WAB_DLL_NAME TEXT("WAB32.DLL")
- #else
- #define WAB_DLL_NAME "WAB16.DLL"
- #endif
- #define WAB_DLL_PATH_KEY TEXT("Software\Microsoft\WAB\DLLPath")
- #ifdef __cplusplus
- }
- #endif
- #endif /* _WABAPI_H */