mapix.i 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. %module mapix
  2. %include "typemaps.i"
  3. %{
  4. #include <mapix.h>
  5. %}
  6. /*** FROM mapix.h ***/
  7. /* Forward interface declarations */
  8. /*class IProfAdmin;
  9. class IMsgServiceAdmin;
  10. class IMAPISession;*/
  11. typedef IProfAdmin* LPPROFADMIN;
  12. typedef IMsgServiceAdmin* LPSERVICEADMIN;
  13. typedef IMAPISession* LPMAPISESSION;
  14. /* uhhh... already in mapi.h ? */
  15. /* MAPILogon() flags. */
  16. //#define MAPI_LOGON_UI 0x00000001 /* Display logon UI */
  17. //#define MAPI_NEW_SESSION 0x00000002 /* Don't use shared session */
  18. #define MAPI_ALLOW_OTHERS 0x00000008 /* Make this a shared session */
  19. #define MAPI_EXPLICIT_PROFILE 0x00000010 /* Don't use default profile */
  20. //#define MAPI_EXTENDED 0x00000020 /* Extended MAPI Logon */
  21. //#define MAPI_FORCE_DOWNLOAD 0x00001000 /* Get new mail before return */
  22. #define MAPI_SERVICE_UI_ALWAYS 0x00002000 /* Do logon UI in all providers */
  23. #define MAPI_NO_MAIL 0x00008000 /* Do not activate transports */
  24. #define MAPI_NT_SERVICE 0x00010000 /* Allow logon from an NT service */
  25. /* #ifndef MAPI_PASSWORD_UI */
  26. /* #define MAPI_PASSWORD_UI 0x00020000 /\* Display password UI only *\/ */
  27. /* #endif */
  28. #define MAPI_TIMEOUT_SHORT 0x00100000 /* Minimal wait for logon resources */
  29. #define MAPI_SIMPLE_DEFAULT (MAPI_LOGON_UI | MAPI_FORCE_DOWNLOAD | MAPI_ALLOW_OTHERS)
  30. #define MAPI_SIMPLE_EXPLICIT (MAPI_NEW_SESSION | MAPI_FORCE_DOWNLOAD | MAPI_EXPLICIT_PROFILE)
  31. /* Structure passed to MAPIInitialize(), and its ulFlags values */
  32. struct MAPIINIT_0 {
  33. ULONG ulVersion;
  34. ULONG ulFlags;
  35. };
  36. typedef struct MAPIINIT_0 *LPMAPIINIT_0;
  37. typedef MAPIINIT_0 MAPIINIT;
  38. typedef MAPIINIT *LPMAPIINIT;
  39. #define MAPI_INIT_VERSION 0
  40. #define MAPI_MULTITHREAD_NOTIFICATIONS 0x00000001
  41. /* Reserved for MAPI 0x40000000 */
  42. /* #define MAPI_NT_SERVICE 0x00010000 Use from NT service */
  43. /* Extended MAPI Logon function */
  44. HRESULT MAPILogonEx(
  45. ULONG ulUIParam,
  46. LPTSTR lpszProfileName,
  47. LPTSTR lpszPassword,
  48. ULONG ulFlags,
  49. IMAPISession** OUTPUT
  50. );
  51. HRESULT MAPIAdminProfiles(
  52. ULONG ulFlags,
  53. IProfAdmin** OUTPUT
  54. );
  55. /*
  56. * IMAPISession Interface
  57. */
  58. /* Flags for OpenEntry and others */
  59. /*#define MAPI_MODIFY ((ULONG) 0x00000001) */
  60. /* Flags for Logoff */
  61. #define MAPI_LOGOFF_SHARED 0x00000001 /* Close all shared sessions */
  62. #define MAPI_LOGOFF_UI 0x00000002 /* It's OK to present UI */
  63. /* Flags for SetDefaultStore. They are mutually exclusive. */
  64. #define MAPI_DEFAULT_STORE 0x00000001 /* for incoming messages */
  65. #define MAPI_SIMPLE_STORE_TEMPORARY 0x00000002 /* for simple MAPI and CMC */
  66. #define MAPI_SIMPLE_STORE_PERMANENT 0x00000003 /* for simple MAPI and CMC */
  67. #define MAPI_PRIMARY_STORE 0x00000004 /* Used by some clients */
  68. #define MAPI_SECONDARY_STORE 0x00000005 /* Used by some clients */
  69. /* Flags for ShowForm. */
  70. #define MAPI_POST_MESSAGE 0x00000001 /* Selects post/send semantics */
  71. #define MAPI_NEW_MESSAGE 0x00000002 /* Governs copying during submission */
  72. class IMAPISession : public IUnknown {
  73. public:
  74. // virtual ~IMAPISession() = 0;
  75. virtual HRESULT GetLastError(HRESULT hResult, ULONG ulFlags, MAPIERROR** OUTPUT /*lppMAPIError*/) = 0;
  76. virtual HRESULT GetMsgStoresTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  77. virtual HRESULT OpenMsgStore(ULONG ulUIParam, ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, IMsgStore ** OUTPUT /*lppMDB*/) = 0;
  78. virtual HRESULT OpenAddressBook(ULONG ulUIParam, LPCIID lpInterface, ULONG ulFlags, IAddrBook ** OUTPUT /*lppAdrBook*/) = 0;
  79. virtual HRESULT OpenProfileSection(LPMAPIUID lpUID, LPCIID lpInterface, ULONG ulFlags, IProfSect ** OUTPUT /*lppProfSect*/) = 0;
  80. virtual HRESULT GetStatusTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  81. virtual HRESULT OpenEntry(ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, ULONG* OUTPUT /*lpulObjType*/,
  82. IUnknown ** OUTPUT /*lppUnk*/) = 0;
  83. virtual HRESULT CompareEntryIDs(ULONG cbEntryID1, LPENTRYID lpEntryID1, ULONG cbEntryID2, LPENTRYID lpEntryID2, ULONG ulFlags,
  84. ULONG* OUTPUT /*lpulResult*/) = 0;
  85. virtual HRESULT Advise(ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulEventMask, LPMAPIADVISESINK lpAdviseSink, ULONG* OUTPUT /*lpulConnection*/) = 0;
  86. virtual HRESULT Unadvise(ULONG ulConnection) = 0;
  87. virtual HRESULT MessageOptions(ULONG ulUIParam, ULONG ulFlags, LPTSTR lpszAdrType, LPMESSAGE lpMessage) = 0;
  88. virtual HRESULT QueryDefaultMessageOpt(LPTSTR lpszAdrType, ULONG ulFlags, ULONG* lpcValues, LPSPropValue* lppOptions) = 0;
  89. virtual HRESULT EnumAdrTypes(ULONG ulFlags, ULONG* OUTPUT /*lpcAdrTypes*/, LPTSTR** OUTPUT /*lpppszAdrTypes*/) = 0;
  90. virtual HRESULT QueryIdentity(ULONG* OUTPUT /*lpcbEntryID*/, LPENTRYID* OUTPUT /*lppEntryID*/) = 0;
  91. virtual HRESULT Logoff(ULONG ulUIParam, ULONG ulFlags, ULONG ulReserved) = 0;
  92. virtual HRESULT SetDefaultStore(ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) = 0;
  93. virtual HRESULT AdminServices(ULONG ulFlags, IMsgServiceAdmin ** OUTPUT /*lppServiceAdmin*/) = 0;
  94. virtual HRESULT ShowForm(ULONG ulUIParam, LPMDB lpMsgStore, LPMAPIFOLDER lpParentFolder, LPCIID lpInterface, ULONG ulMessageToken, LPMESSAGE lpMessageSent, ULONG ulFlags, ULONG ulMessageStatus, ULONG ulMessageFlags, ULONG ulAccess, LPSTR lpszMessageClass) = 0;
  95. virtual HRESULT PrepareForm(LPCIID lpInterface, LPMESSAGE lpMessage, ULONG* OUTPUT /*lpulMessageToken*/) = 0;
  96. %extend {
  97. ~IMAPISession() { self->Release(); }
  98. }
  99. };
  100. /*DECLARE_MAPI_INTERFACE_PTR(IMAPISession, LPMAPISESSION);*/
  101. /* IAddrBook Interface ----------------------------------------------------- */
  102. class IAddrBook : public IMAPIProp {
  103. public:
  104. // virtual ~IAddrBook() = 0;
  105. virtual HRESULT OpenEntry(ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, ULONG* OUTPUT /*lpulObjType*/,
  106. IUnknown** OUTPUT /*lppUnk*/) = 0;
  107. virtual HRESULT CompareEntryIDs(ULONG cbEntryID1, LPENTRYID lpEntryID1, ULONG cbEntryID2, LPENTRYID lpEntryID2, ULONG ulFlags,
  108. ULONG* OUTPUT /*lpulResult*/) = 0;
  109. virtual HRESULT Advise(ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulEventMask, LPMAPIADVISESINK lpAdviseSink, ULONG* OUTPUT /*lpulConnection*/) = 0;
  110. virtual HRESULT Unadvise(ULONG ulConnection) = 0;
  111. virtual HRESULT CreateOneOff(LPTSTR lpszName, LPTSTR lpszAdrType, LPTSTR lpszAddress, ULONG ulFlags, ULONG* OUTPUT /*lpcbEntryID*/,
  112. LPENTRYID* OUTPUT /*lppEntryID*/) = 0;
  113. virtual HRESULT NewEntry(ULONG ulUIParam, ULONG ulFlags, ULONG cbEIDContainer, LPENTRYID lpEIDContainer, ULONG cbEIDNewEntryTpl,
  114. LPENTRYID lpEIDNewEntryTpl, ULONG* OUTPUT /*lpcbEIDNewEntry*/, LPENTRYID* OUTPUT /*lppEIDNewEntry*/) = 0;
  115. virtual HRESULT ResolveName(ULONG ulUIParam, ULONG ulFlags, LPTSTR lpszNewEntryTitle, LPADRLIST INOUT /*lpAdrList*/) = 0;
  116. virtual HRESULT Address(ULONG* lpulUIParam, LPADRPARM lpAdrParms, LPADRLIST* OUTPUT /*lppAdrList*/) = 0;
  117. virtual HRESULT Details(ULONG* lpulUIParam, LPFNDISMISS lpfnDismiss, LPVOID lpvDismissContext, ULONG cbEntryID, LPENTRYID lpEntryID, LPFNBUTTON lpfButtonCallback, LPVOID lpvButtonContext, LPTSTR lpszButtonText, ULONG ulFlags) = 0;
  118. virtual HRESULT RecipOptions(ULONG ulUIParam, ULONG ulFlags, LPADRENTRY lpRecip) = 0;
  119. virtual HRESULT QueryDefaultRecipOpt(LPTSTR lpszAdrType, ULONG ulFlags, ULONG* OUTPUT /*lpcValues*/, LPSPropValue* OUTPUT /*lppOptions*/) = 0;
  120. virtual HRESULT GetPAB(ULONG* OUTPUT /*lpcbEntryID*/, LPENTRYID* OUTPUT /*lppEntryID*/) = 0;
  121. virtual HRESULT SetPAB(ULONG cbEntryID, LPENTRYID lpEntryID) = 0;
  122. virtual HRESULT GetDefaultDir(ULONG* OUTPUT /*lpcbEntryID*/, LPENTRYID* OUTPUT /*lppEntryID*/) = 0;
  123. virtual HRESULT SetDefaultDir(ULONG cbEntryID, LPENTRYID lpEntryID) = 0;
  124. virtual HRESULT GetSearchPath(ULONG ulFlags, LPSRowSet* OUTPUT /*lppSearchPath*/) = 0;
  125. virtual HRESULT SetSearchPath(ULONG ulFlags, LPSRowSet INPUT /*lpSearchPath*/) = 0;
  126. virtual HRESULT PrepareRecips(ULONG ulFlags, const SPropTagArray *lpPropTagArray, LPADRLIST INOUT /*lpRecipList*/) = 0;
  127. %extend {
  128. ~IAddrBook() { self->Release(); }
  129. }
  130. };
  131. typedef IAddrBook* LPADRBOOK;
  132. /*
  133. * IProfAdmin Interface
  134. */
  135. #define MAPI_DEFAULT_SERVICES 0x00000001
  136. class IProfAdmin : public IUnknown {
  137. public:
  138. // virtual ~IProfAdmin() = 0;
  139. virtual HRESULT GetLastError(HRESULT hResult, ULONG ulFlags, LPMAPIERROR* OUTPUT /*lppMAPIError*/) = 0;
  140. virtual HRESULT GetProfileTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  141. virtual HRESULT CreateProfile(LPTSTR lpszProfileName, LPTSTR lpszPassword, ULONG ulUIParam, ULONG ulFlags) = 0;
  142. virtual HRESULT DeleteProfile(LPTSTR lpszProfileName, ULONG ulFlags) = 0;
  143. virtual HRESULT ChangeProfilePassword(LPTSTR lpszProfileName, LPTSTR lpszOldPassword, LPTSTR lpszNewPassword, ULONG ulFlags) = 0;
  144. virtual HRESULT CopyProfile(LPTSTR lpszOldProfileName, LPTSTR lpszOldPassword, LPTSTR lpszNewProfileName, ULONG ulUIParam,
  145. ULONG ulFlags) = 0;
  146. virtual HRESULT RenameProfile(LPTSTR lpszOldProfileName, LPTSTR lpszOldPassword, LPTSTR lpszNewProfileName, ULONG ulUIParam,
  147. ULONG ulFlags) = 0;
  148. virtual HRESULT SetDefaultProfile(LPTSTR lpszProfileName, ULONG ulFlags) = 0;
  149. virtual HRESULT AdminServices(LPTSTR lpszProfileName, LPTSTR lpszPassword, ULONG ulUIParam, ULONG ulFlags,
  150. IMsgServiceAdmin ** OUTPUT /*lppServiceAdmin*/) = 0;
  151. %extend {
  152. ~IProfAdmin() { self->Release(); }
  153. }
  154. };
  155. /*
  156. * IMsgServiceAdmin Interface
  157. */
  158. /* Values for PR_RESOURCE_FLAGS in message service table */
  159. #define SERVICE_DEFAULT_STORE 0x00000001
  160. #define SERVICE_SINGLE_COPY 0x00000002
  161. #define SERVICE_CREATE_WITH_STORE 0x00000004
  162. #define SERVICE_PRIMARY_IDENTITY 0x00000008
  163. #define SERVICE_NO_PRIMARY_IDENTITY 0x00000020
  164. class IMsgServiceAdmin : public IUnknown {
  165. public:
  166. // virtual ~IMsgServiceAdmin() = 0;
  167. virtual HRESULT GetLastError(HRESULT hResult, ULONG ulFlags, LPMAPIERROR* OUTPUT /*lppMAPIError*/) = 0;
  168. virtual HRESULT GetMsgServiceTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  169. virtual HRESULT CreateMsgService(LPTSTR lpszService, LPTSTR lpszDisplayName, ULONG ulUIParam, ULONG ulFlags) = 0;
  170. virtual HRESULT DeleteMsgService(LPMAPIUID lpUID) = 0;
  171. virtual HRESULT CopyMsgService(LPMAPIUID lpUID, LPTSTR lpszDisplayName, LPCIID lpInterfaceToCopy, LPCIID lpInterfaceDst, LPVOID lpObjectDst, ULONG ulUIParam, ULONG ulFlags) = 0;
  172. virtual HRESULT RenameMsgService(LPMAPIUID lpUID, ULONG ulFlags, LPTSTR lpszDisplayName) = 0;
  173. virtual HRESULT ConfigureMsgService(LPMAPIUID lpUID, ULONG ulUIParam, ULONG ulFlags, ULONG cValues, LPSPropValue lpProps) = 0;
  174. virtual HRESULT OpenProfileSection(LPMAPIUID lpUID, LPCIID lpInterface, ULONG ulFlags, IProfSect ** OUTPUT /*lppProfSect*/) = 0;
  175. virtual HRESULT MsgServiceTransportOrder(ULONG cUID, LPMAPIUID lpUIDList, ULONG ulFlags) = 0;
  176. virtual HRESULT AdminProviders(LPMAPIUID lpUID, ULONG ulFlags, IProviderAdmin ** OUTPUT /*lppProviderAdmin*/) = 0;
  177. virtual HRESULT SetPrimaryIdentity(LPMAPIUID lpUID, ULONG ulFlags) = 0;
  178. virtual HRESULT GetProviderTable(ULONG ulFlags, IMAPITable ** OUTPUT /*lppTable*/) = 0;
  179. %extend {
  180. ~IMsgServiceAdmin() { self->Release(); }
  181. }
  182. };