📄 exchext.h
字号:
#ifndef EXCHEXT_H
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define EXCHEXT_H
/*
* E X C H E X T . H
*
* Declarations of interfaces for providers of Microsoft Exchange
* client extensions.
*
* Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
*/
#ifndef BEGIN_INTERFACE
#define BEGIN_INTERFACE
#endif
/*
* C o n s t a n t s
*/
// SCODEs
#define EXCHEXT_S_NOCRITERIA MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 1)
#define EXCHEXT_S_NOCHANGE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 2)
// Flag for Unicode strings
#define EXCHEXT_UNICODE (0x80000000)
// Flag values for IExchExtCallback::GetVersion
#define EECBGV_GETBUILDVERSION (0x00000001)
#define EECBGV_GETACTUALVERSION (0x00000002)
#define EECBGV_GETVIRTUALVERSION (0x00000004)
// Build version value for IExchExtCallback::GetVersion
#define EECBGV_BUILDVERSION_MAJOR (0x000d0000)
#define EECBGV_BUILDVERSION_MAJOR_MASK (0xFFFF0000)
#define EECBGV_BUILDVERSION_MINOR_MASK (0x0000FFFF)
// Actual/Virtual version values for IExchExtCallback::GetVersion
#define EECBGV_MSEXCHANGE_WIN31 (0x01010000)
#define EECBGV_MSEXCHANGE_WIN95 (0x01020000)
#define EECBGV_MSEXCHANGE_WINNT (0x01030000)
#define EECBGV_MSEXCHANGE_MAC (0x01040000)
#define EECBGV_VERSION_PRODUCT_MASK (0xFF000000)
#define EECBGV_VERSION_PLATFORM_MASK (0x00FF0000)
#define EECBGV_VERSION_MAJOR_MASK (0x0000FF00)
#define EECBGV_VERSION_MINOR_MASK (0x000000FF)
// Flag values for IExchExtCallback::GetMenuPos
#define EECBGMP_RANGE (0x00000001)
// Flag values for IExchExtCallback::GetNewMessageSite
#define EECBGNMS_MODAL (0x00000001)
// Flag values for IExchExtCallback::ChooseFolder
#define EECBCF_GETNAME (0x00000001)
#define EECBCF_HIDENEW (0x00000002)
#define EECBCF_PREVENTROOT (0x00000004)
// Extensibility contexts used with IExchExt::Install
#define EECONTEXT_SESSION (0x00000001)
#define EECONTEXT_VIEWER (0x00000002)
#define EECONTEXT_REMOTEVIEWER (0x00000003)
#define EECONTEXT_SEARCHVIEWER (0x00000004)
#define EECONTEXT_ADDRBOOK (0x00000005)
#define EECONTEXT_SENDNOTEMESSAGE (0x00000006)
#define EECONTEXT_READNOTEMESSAGE (0x00000007)
#define EECONTEXT_SENDPOSTMESSAGE (0x00000008)
#define EECONTEXT_READPOSTMESSAGE (0x00000009)
#define EECONTEXT_READREPORTMESSAGE (0x0000000A)
#define EECONTEXT_SENDRESENDMESSAGE (0x0000000B)
#define EECONTEXT_PROPERTYSHEETS (0x0000000C)
#define EECONTEXT_ADVANCEDCRITERIA (0x0000000D)
#define EECONTEXT_TASK (0x0000000E)
// Flag values for IExchExt::Install
#define EE_MODAL (0x00000001)
// Toolbar ids used with IExchExtCommands::InstallCommands
#define EETBID_STANDARD (0x00000001)
// Flag values for IExchExtCommands::QueryHelpText
#define EECQHT_STATUS (0x00000001)
#define EECQHT_TOOLTIP (0x00000002)
// Flag values for IExchExtMessageEvents::OnXComplete
#define EEME_FAILED (0x00000001)
#define EEME_COMPLETE_FAILED (0x00000002)
// Flag values for IExchExtAttachedFileEvents::OpenSzFile
#define EEAFE_OPEN (0x00000001)
#define EEAFE_PRINT (0x00000002)
#define EEAFE_QUICKVIEW (0x00000003)
// Flag values for IExchExtPropertySheets methods
#define EEPS_MESSAGE (0x00000001)
#define EEPS_FOLDER (0x00000002)
#define EEPS_STORE (0x00000003)
#define EEPS_TOOLSOPTIONS (0x00000004)
// Flag values for IExchExtAdvancedCriteria::Install and ::SetFolder
#define EEAC_INCLUDESUBFOLDERS (0x00000001)
/*
* S t r u c t u r e s
*/
// Hook procedure for IExchExtCallback::ChooseFolder
typedef UINT (STDAPICALLTYPE FAR * LPEECFHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
// Dialog information for IExchExtCallback::ChooseFolder
typedef struct
{
UINT cbLength;
HWND hwnd;
LPTSTR szCaption;
LPTSTR szLabel;
LPTSTR szHelpFile;
ULONG ulHelpID;
HINSTANCE hinst;
UINT uiDlgID;
LPEECFHOOKPROC lpeecfhp;
DWORD dwHookData;
ULONG ulFlags;
LPMDB pmdb;
LPMAPIFOLDER pfld;
LPTSTR szName;
DWORD dwReserved1;
DWORD dwReserved2;
DWORD dwReserved3;
}
EXCHEXTCHOOSEFOLDER, FAR * LPEXCHEXTCHOOSEFOLDER;
// Toolbar list entries for IExchExtCommands::InstallCommands
typedef struct
{
HWND hwnd;
ULONG tbid;
ULONG ulFlags;
UINT itbbBase;
}
TBENTRY, FAR * LPTBENTRY;
/*
* E x t e r n a l T y p e s
*/
// Property sheet pages from Windows 95 prsht.h
#ifndef _PRSHT_H_
typedef struct _PROPSHEETPAGE;
typedef struct _PROPSHEETPAGE FAR * LPPROPSHEETPAGE;
#endif
// Toolbar adjust info from Windows 95 commctrl.h
#ifndef _INC_COMMCTRL
typedef struct _TBBUTTON;
typedef struct _TBBUTTON FAR * LPTBBUTTON;
#endif
/*
* S u p p o r t I n t e r f a c e s
*/
// Forward reference
#ifdef __cplusplus
interface IExchExtModeless;
#else
typedef interface IExchExtModeless IExchExtModeless;
#endif
typedef IExchExtModeless FAR* LPEXCHEXTMODELESS;
/*
* IExchExtModelessCallback
*
* Purpose:
* Interface which may be used by Exchange client
* extensions that create modeless UI.
*/
#undef INTERFACE
#define INTERFACE IExchExtModelessCallback
DECLARE_INTERFACE_(IExchExtModelessCallback, IUnknown)
{
BEGIN_INTERFACE
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IExchExtModelessCallback methods ***
STDMETHOD(EnableModeless) (THIS_ HWND hwnd, BOOL fEnable) PURE;
STDMETHOD(AddWindow) (THIS) PURE;
STDMETHOD(ReleaseWindow) (THIS) PURE;
};
typedef IExchExtModelessCallback FAR * LPEXCHEXTMODELESSCALLBACK;
/*
* IExchExtCallback
*
* Purpose:
* Resource interface that may be used by Exchange client extensions.
*/
#undef INTERFACE
#define INTERFACE IExchExtCallback
DECLARE_INTERFACE_(IExchExtCallback, IUnknown)
{
BEGIN_INTERFACE
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IExchExtCallback methods ***
STDMETHOD(GetVersion) (THIS_ ULONG FAR * lpulVersion, ULONG ulFlags) PURE;
STDMETHOD(GetWindow) (THIS_ HWND FAR * lphwnd) PURE;
STDMETHOD(GetMenu) (THIS_ HMENU FAR * lphmenu) PURE;
STDMETHOD(GetToolbar) (THIS_ ULONG tbid, HWND FAR * lphwndTb) PURE;
STDMETHOD(GetSession) (THIS_ LPMAPISESSION FAR * lppses,
LPADRBOOK FAR * lppab) PURE;
STDMETHOD(GetObject) (THIS_ LPMDB FAR * lppmdb,
LPMAPIPROP FAR * lppmp) PURE;
STDMETHOD(GetSelectionCount) (THIS_ ULONG FAR * lpceid) PURE;
STDMETHOD(GetSelectionItem) (THIS_ ULONG ieid, ULONG FAR * lpcbEid,
LPENTRYID FAR * lppeid, ULONG FAR * lpulType,
LPTSTR lpszMsgClass, ULONG cbMsgClass,
ULONG FAR * lpulMsgFlags, ULONG ulFlags) PURE;
STDMETHOD(GetMenuPos) (THIS_ ULONG cmdid, HMENU FAR * lphmenu,
ULONG FAR * lpmposMin, ULONG FAR * lpmposMax,
ULONG ulFlags) PURE;
STDMETHOD(GetSharedExtsDir) (THIS_ LPTSTR lpszDir, ULONG cchDir,
ULONG ulFlags) PURE;
STDMETHOD(GetRecipients) (THIS_ LPADRLIST FAR * lppal) PURE;
STDMETHOD(SetRecipients) (THIS_ LPADRLIST lpal) PURE;
STDMETHOD(GetNewMessageSite) (THIS_ ULONG fComposeInFolder,
LPMAPIFOLDER pfldFocus,
LPPERSISTMESSAGE ppermsg,
LPMESSAGE FAR * ppmsg,
LPMAPIMESSAGESITE FAR * ppmms,
LPMAPIVIEWCONTEXT FAR * ppmvc,
ULONG ulFlags) PURE;
STDMETHOD(RegisterModeless) (THIS_ LPEXCHEXTMODELESS peem,
LPEXCHEXTMODELESSCALLBACK FAR * ppeemcb) PURE;
STDMETHOD(ChooseFolder) (THIS_ LPEXCHEXTCHOOSEFOLDER peecf) PURE;
};
typedef IExchExtCallback FAR * LPEXCHEXTCALLBACK;
/*
* E x t e n s i o n I n t e r f a c e s
*/
/*
* IExchExt
*
* Purpose:
* Central interface implemented by Exchange client extensions.
*/
#undef INTERFACE
#define INTERFACE IExchExt
DECLARE_INTERFACE_(IExchExt, IUnknown)
{
BEGIN_INTERFACE
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IExchExt methods ***
STDMETHOD(Install) (THIS_ LPEXCHEXTCALLBACK lpeecb,
ULONG mecontext, ULONG ulFlags) PURE;
};
typedef IExchExt FAR * LPEXCHEXT;
// Type of function called by the client to load an extension
typedef LPEXCHEXT (CALLBACK * LPFNEXCHEXTENTRY)(VOID);
/*
* IExchExtCommands
*
* Purpose:
* Interface implemented by Exchange client extensions that wish to
* add additional commands to the client's menus.
*/
#undef INTERFACE
#define INTERFACE IExchExtCommands
DECLARE_INTERFACE_(IExchExtCommands, IUnknown)
{
BEGIN_INTERFACE
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IExchExtCommands methods ***
STDMETHOD(InstallCommands) (THIS_ LPEXCHEXTCALLBACK lpeecb, HWND hwnd,
HMENU hmenu, UINT FAR * lpcmdidBase,
LPTBENTRY lptbeArray, UINT ctbe,
ULONG ulFlags) PURE;
STDMETHOD_(VOID,InitMenu) (THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
STDMETHOD(DoCommand) (THIS_ LPEXCHEXTCALLBACK lpeecb, UINT cmdid) PURE;
STDMETHOD(Help) (THIS_ LPEXCHEXTCALLBACK lpeecb, UINT cmdid) PURE;
STDMETHOD(QueryHelpText) (THIS_ UINT cmdid, ULONG ulFlags,
LPTSTR lpsz, UINT cch) PURE;
STDMETHOD(QueryButtonInfo) (THIS_ ULONG tbid, UINT itbb, LPTBBUTTON ptbb,
LPTSTR lpsz, UINT cch, ULONG ulFlags) PURE;
STDMETHOD(ResetToolbar) (THIS_ ULONG tbid, ULONG ulFlags) PURE;
};
typedef IExchExtCommands FAR * LPEXCHEXTCOMMANDS;
/*
* IExchExtUserEvents
*
* Purpose:
* Interface implemented by Exchange client extensions that wish to
* take special action when the user does certain actions.
*/
#undef INTERFACE
#define INTERFACE IExchExtUserEvents
DECLARE_INTERFACE_(IExchExtUserEvents, IUnknown)
{
BEGIN_INTERFACE
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IExchExtUserEvents methods ***
STDMETHOD_(VOID,OnSelectionChange) (THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
STDMETHOD_(VOID,OnObjectChange) (THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
};
typedef IExchExtUserEvents FAR * LPEXCHEXTUSEREVENTS;
/*
* IExchExtSessionEvents
*
* Purpose:
* Interface implemented by Exchange client extensions that wish to
* take special action when certain events happen in the session.
*/
#undef INTERFACE
#define INTERFACE IExchExtSessionEvents
DECLARE_INTERFACE_(IExchExtSessionEvents, IUnknown)
{
BEGIN_INTERFACE
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IExchExtEvents methods ***
STDMETHOD(OnDelivery)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
};
typedef IExchExtSessionEvents FAR * LPEXCHEXTSESSIONEVENTS;
/*
* IExchExtMessageEvents
*
* Purpose:
* Interface implemented by Exchange client extensions that wish to
* take special action when certain events happen to messages.
*/
#undef INTERFACE
#define INTERFACE IExchExtMessageEvents
DECLARE_INTERFACE_(IExchExtMessageEvents, IUnknown)
{
BEGIN_INTERFACE
// *** IUnknown methods ***
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -