WabDefs.pas 92 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829
  1. {******************************************************************}
  2. { }
  3. { Borland Delphi Runtime Library }
  4. { Windows Address Book (WAB) functions interface unit }
  5. { }
  6. { Portions created by Microsoft are }
  7. { Copyright (C) 1995-2000 Microsoft Corporation. }
  8. { All Rights Reserved. }
  9. { }
  10. { The original file is: wabdefs.h, released 31 Jan 2000. }
  11. { The original Pascal code is: WabDefs.pas, released 15 Mar 2000. }
  12. { The initial developer of the Pascal code is Petr Vones }
  13. { (petr.v@mujmail.cz). }
  14. { }
  15. { Portions created by Petr Vones are }
  16. { Copyright (C) 2000 Petr Vones }
  17. { }
  18. { Obtained through: }
  19. { }
  20. { Joint Endeavour of Delphi Innovators (Project JEDI) }
  21. { }
  22. { You may retrieve the latest version of this file at the Project }
  23. { JEDI home page, located at http://delphi-jedi.org }
  24. { }
  25. { The contents of this file are used with permission, subject to }
  26. { the Mozilla Public License Version 1.1 (the "License"); you may }
  27. { not use this file except in compliance with the License. You may }
  28. { obtain a copy of the License at }
  29. { http://www.mozilla.org/MPL/MPL-1.1.html }
  30. { }
  31. { Software distributed under the License is distributed on an }
  32. { "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
  33. { implied. See the License for the specific language governing }
  34. { rights and limitations under the License. }
  35. { }
  36. {******************************************************************}
  37. unit WabDefs;
  38. interface
  39. uses
  40. Windows, ActiveX;
  41. {$I WAB.INC}
  42. {$ALIGN ON}
  43. {$MINENUMSIZE 4}
  44. {$WEAKPACKAGEUNIT}
  45. (*$HPPEMIT '#include <wabdefs.h>'*)
  46. (*$HPPEMIT '#include <windows.h>'*)
  47. (*$HPPEMIT '#include <objerror.h>'*)
  48. (*$HPPEMIT '#include <objbase.h>'*)
  49. (*$HPPEMIT '#include <stddef.h>'*)
  50. { Array dimension for structures with variable-sized arrays at the end. }
  51. const
  52. MAPI_DIM = 1;
  53. {$EXTERNALSYM MAPI_DIM}
  54. {* This flag is used in many different MAPI calls to signify that
  55. * the object opened by the call should be modifiable (MAPI_MODIFY).
  56. * If the flag MAPI_MAX_ACCESS is set, the object returned should be
  57. * returned at the maximum access level allowed. An additional
  58. * property available on the object (PR_ACCESS_LEVEL) uses the same
  59. * MAPI_MODIFY flag to say just what this new access level is.
  60. }
  61. MAPI_MODIFY = ULONG($00000001);
  62. {$EXTERNALSYM MAPI_MODIFY}
  63. {* The following flags are used to indicate to the client what access
  64. * level is permissible in the object. They appear in PR_ACCESS in
  65. * message and folder objects as well as in contents and associated
  66. * contents tables
  67. }
  68. MAPI_ACCESS_MODIFY = ULONG($00000001);
  69. {$EXTERNALSYM MAPI_ACCESS_MODIFY}
  70. MAPI_ACCESS_READ = ULONG($00000002);
  71. {$EXTERNALSYM MAPI_ACCESS_READ}
  72. MAPI_ACCESS_DELETE = ULONG($00000004);
  73. {$EXTERNALSYM MAPI_ACCESS_DELETE}
  74. MAPI_ACCESS_CREATE_HIERARCHY = ULONG($00000008);
  75. {$EXTERNALSYM MAPI_ACCESS_CREATE_HIERARCHY}
  76. MAPI_ACCESS_CREATE_CONTENTS = ULONG($00000010);
  77. {$EXTERNALSYM MAPI_ACCESS_CREATE_CONTENTS}
  78. MAPI_ACCESS_CREATE_ASSOCIATED = ULONG($00000020);
  79. {$EXTERNALSYM MAPI_ACCESS_CREATE_ASSOCIATED}
  80. {* The MAPI_UNICODE flag is used in many different MAPI calls to signify
  81. * that strings passed through the interface are in Unicode (a 16-bit
  82. * character set). The default is an 8-bit character set.
  83. *
  84. * The value fMapiUnicode can be used as the 'normal' value for
  85. * that bit, given the application's default character set.
  86. }
  87. MAPI_UNICODE = ULONG($80000000);
  88. {$EXTERNALSYM MAPI_UNICODE}
  89. hrSuccess = 0;
  90. {$EXTERNALSYM hrSuccess}
  91. { Recipient types }
  92. MAPI_ORIG = 0; // Recipient is message originator
  93. {$EXTERNALSYM MAPI_ORIG}
  94. MAPI_TO = 1; // Recipient is a primary recipient
  95. {$EXTERNALSYM MAPI_TO}
  96. MAPI_CC = 2; // Recipient is a copy recipient
  97. {$EXTERNALSYM MAPI_CC}
  98. MAPI_BCC = 3; // Recipient is blind copy recipient
  99. {$EXTERNALSYM MAPI_BCC}
  100. MAPI_P1 = $10000000; // Recipient is a P1 resend recipient
  101. {$EXTERNALSYM MAPI_P1}
  102. MAPI_SUBMITTED = $80000000; // Recipient is already processed
  103. {$EXTERNALSYM MAPI_SUBMITTED}
  104. MAPI_AUTHORIZE = 4; // Recipient is a CMC authorizing user
  105. {$EXTERNALSYM MAPI_AUTHORIZE}
  106. MAPI_DISCRETE = $10000000; // Recipient is a P1 resend recipient
  107. {$EXTERNALSYM MAPI_DISCRETE}
  108. { Bit definitions for abFlags[0] of ENTRYID }
  109. MAPI_SHORTTERM = $80;
  110. {$EXTERNALSYM MAPI_SHORTTERM}
  111. MAPI_NOTRECIP = $40;
  112. {$EXTERNALSYM MAPI_NOTRECIP}
  113. MAPI_THISSESSION = $20;
  114. {$EXTERNALSYM MAPI_THISSESSION}
  115. MAPI_NOW = $10;
  116. {$EXTERNALSYM MAPI_NOW}
  117. MAPI_NOTRESERVED = $08;
  118. {$EXTERNALSYM MAPI_NOTRESERVED}
  119. { Bit definitions for abFlags[1] of ENTRYID }
  120. MAPI_COMPOUND = $80;
  121. {$EXTERNALSYM MAPI_COMPOUND}
  122. type
  123. PEntryID = ^TEntryID;
  124. _ENTRYID = record
  125. abFlags: array[0..3] of Byte;
  126. ab: array[0..MAPI_DIM-1] of Byte;
  127. end;
  128. {$EXTERNALSYM _ENTRYID}
  129. TEntryID = _ENTRYID;
  130. ENTRYID = _ENTRYID;
  131. {$EXTERNALSYM ENTRYID}
  132. (*!!!
  133. #define CbNewENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb))
  134. #define CbENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb))
  135. #define SizedENTRYID(_cb, _name) \
  136. struct _ENTRYID_ ## _name \
  137. { \
  138. BYTE abFlags[4]; \
  139. BYTE ab[_cb]; \
  140. } _name
  141. *)
  142. { Byte-order-independent version of GUID (world-unique identifier) }
  143. PMapiUID = ^TMapiUID;
  144. _MAPIUID = record
  145. ab: array[0..15] of Byte;
  146. end;
  147. {$EXTERNALSYM _MAPIUID}
  148. TMapiUID = _MAPIUID;
  149. MAPIUID = _MAPIUID;
  150. {$EXTERNALSYM MAPIUID}
  151. function IsEqualMAPIUID(lpuid1, lpuid2: TMapiUID): Boolean;
  152. {$EXTERNALSYM IsEqualMAPIUID}
  153. const
  154. MAPI_STORE = ULONG($00000001); // Message Store
  155. {$EXTERNALSYM MAPI_STORE}
  156. MAPI_ADDRBOOK = ULONG($00000002); // Address Book
  157. {$EXTERNALSYM MAPI_ADDRBOOK}
  158. MAPI_FOLDER = ULONG($00000003); // Folder
  159. {$EXTERNALSYM MAPI_FOLDER}
  160. MAPI_ABCONT = ULONG($00000004); // Address Book Container
  161. {$EXTERNALSYM MAPI_ABCONT}
  162. MAPI_MESSAGE = ULONG($00000005); // Message
  163. {$EXTERNALSYM MAPI_MESSAGE}
  164. MAPI_MAILUSER = ULONG($00000006); // Individual Recipient
  165. {$EXTERNALSYM MAPI_MAILUSER}
  166. MAPI_ATTACH = ULONG($00000007); // Attachment
  167. {$EXTERNALSYM MAPI_ATTACH}
  168. MAPI_DISTLIST = ULONG($00000008); // Distribution List Recipient
  169. {$EXTERNALSYM MAPI_DISTLIST}
  170. MAPI_PROFSECT = ULONG($00000009); // Profile Section
  171. {$EXTERNALSYM MAPI_PROFSECT}
  172. MAPI_STATUS = ULONG($0000000A); // Status Object
  173. {$EXTERNALSYM MAPI_STATUS}
  174. MAPI_SESSION = ULONG($0000000B); // Session
  175. {$EXTERNALSYM MAPI_SESSION}
  176. MAPI_FORMINFO = ULONG($0000000C); // Form Information
  177. {$EXTERNALSYM MAPI_FORMINFO}
  178. { Maximum length of profile names and passwords, not including the null termination character. }
  179. cchProfileNameMax = 64;
  180. {$EXTERNALSYM cchProfileNameMax}
  181. cchProfilePassMax = 64;
  182. {$EXTERNALSYM cchProfilePassMax}
  183. { Property Types }
  184. MV_FLAG = $1000; // Multi-value flag
  185. {$EXTERNALSYM MV_FLAG}
  186. PT_UNSPECIFIED = ULONG(0); // (Reserved for interface use) type doesn't matter to caller
  187. {$EXTERNALSYM PT_UNSPECIFIED}
  188. PT_NULL = ULONG(1); // NULL property value
  189. {$EXTERNALSYM PT_NULL}
  190. PT_I2 = ULONG(2); // Signed 16-bit value
  191. {$EXTERNALSYM PT_I2}
  192. PT_LONG = ULONG(3); // Signed 32-bit value
  193. {$EXTERNALSYM PT_LONG}
  194. PT_R4 = ULONG(4); // 4-byte floating point
  195. {$EXTERNALSYM PT_R4}
  196. PT_DOUBLE = ULONG(5); // Floating point double
  197. {$EXTERNALSYM PT_DOUBLE}
  198. PT_CURRENCY = ULONG(6); // Signed 64-bit int (decimal w/ 4 digits right of decimal pt)
  199. {$EXTERNALSYM PT_CURRENCY}
  200. PT_APPTIME = ULONG(7); // Application time
  201. {$EXTERNALSYM PT_APPTIME}
  202. PT_ERROR = ULONG(10); // 32-bit error value
  203. {$EXTERNALSYM PT_ERROR}
  204. PT_BOOLEAN = ULONG(11); // 16-bit boolean (non-zero true)
  205. {$EXTERNALSYM PT_BOOLEAN}
  206. PT_OBJECT = ULONG(13); // Embedded object in a property
  207. {$EXTERNALSYM PT_OBJECT}
  208. PT_I8 = ULONG(20); // 8-byte signed integer
  209. {$EXTERNALSYM PT_I8}
  210. PT_STRING8 = ULONG(30); // Null terminated 8-bit character string
  211. {$EXTERNALSYM PT_STRING8}
  212. PT_UNICODE = ULONG(31); // Null terminated Unicode string
  213. {$EXTERNALSYM PT_UNICODE}
  214. PT_SYSTIME = ULONG(64); // FILETIME 64-bit int w/ number of 100ns periods since Jan 1,1601
  215. {$EXTERNALSYM PT_SYSTIME}
  216. PT_CLSID = ULONG(72); // OLE GUID
  217. {$EXTERNALSYM PT_CLSID}
  218. PT_BINARY = ULONG(258); // Uninterpreted (counted byte array)
  219. {$EXTERNALSYM PT_BINARY}
  220. { Alternate property type names for ease of use }
  221. PT_SHORT = PT_I2;
  222. {$EXTERNALSYM PT_SHORT}
  223. PT_I4 = PT_LONG;
  224. {$EXTERNALSYM PT_I4}
  225. PT_FLOAT = PT_R4;
  226. {$EXTERNALSYM PT_FLOAT}
  227. PT_R8 = PT_DOUBLE;
  228. {$EXTERNALSYM PT_R8}
  229. PT_LONGLONG = PT_I8;
  230. {$EXTERNALSYM PT_LONGLONG}
  231. {* The type of a MAPI-defined string property is indirected, so
  232. * that it defaults to Unicode string on a Unicode platform and to
  233. * String8 on an ANSI or DBCS platform.
  234. *
  235. * Macros are defined here both for the property type, and for the
  236. * field of the property value structure which should be
  237. * dereferenced to obtain the string pointer.
  238. }
  239. {$IFDEF UNICODE}
  240. PT_TSTRING = PT_UNICODE;
  241. {$EXTERNALSYM PT_TSTRING}
  242. PT_MV_TSTRING = MV_FLAG or PT_UNICODE;
  243. {$EXTERNALSYM PT_MV_TSTRING}
  244. {$ELSE}
  245. PT_TSTRING = PT_STRING8;
  246. {$EXTERNALSYM PT_TSTRING}
  247. PT_MV_TSTRING = MV_FLAG or PT_STRING8;
  248. {$EXTERNALSYM PT_MV_TSTRING}
  249. {$ENDIF}
  250. {* Property Tags
  251. *
  252. * By convention, MAPI never uses 0 or FFFF as a property ID.
  253. * Use as null values, initializers, sentinels, or what have you.
  254. }
  255. PROP_TYPE_MASK = ULONG($0000FFFF); // Mask for Property type
  256. {$EXTERNALSYM PROP_TYPE_MASK}
  257. PROP_ID_NULL = 0;
  258. {$EXTERNALSYM PROP_ID_NULL}
  259. PROP_ID_INVALID = $FFFF;
  260. {$EXTERNALSYM PROP_ID_INVALID}
  261. PR_NULL = PT_NULL shl 16 or PROP_ID_NULL;
  262. {$EXTERNALSYM PR_NULL}
  263. function PROP_TYPE(ulPropTag: ULONG): ULONG;
  264. {$EXTERNALSYM PROP_TYPE}
  265. function PROP_ID(ulPropTag: ULONG): ULONG;
  266. {$EXTERNALSYM PROP_ID}
  267. function PROP_TAG(ulPropType, ulPropID: ULONG): ULONG;
  268. {$EXTERNALSYM PROP_TAG}
  269. function CHANGE_PROP_TYPE(ulPropTag, ulPropType: ULONG): ULONG;
  270. {$EXTERNALSYM CHANGE_PROP_TYPE}
  271. const
  272. { Multi-valued Property Types }
  273. PT_MV_I2 = (MV_FLAG or PT_I2);
  274. {$EXTERNALSYM PT_MV_I2}
  275. PT_MV_LONG = (MV_FLAG or PT_LONG);
  276. {$EXTERNALSYM PT_MV_LONG}
  277. PT_MV_R4 = (MV_FLAG or PT_R4);
  278. {$EXTERNALSYM PT_MV_R4}
  279. PT_MV_DOUBLE = (MV_FLAG or PT_DOUBLE);
  280. {$EXTERNALSYM PT_MV_DOUBLE}
  281. PT_MV_CURRENCY = (MV_FLAG or PT_CURRENCY);
  282. {$EXTERNALSYM PT_MV_CURRENCY}
  283. PT_MV_APPTIME = (MV_FLAG or PT_APPTIME);
  284. {$EXTERNALSYM PT_MV_APPTIME}
  285. PT_MV_SYSTIME = (MV_FLAG or PT_SYSTIME);
  286. {$EXTERNALSYM PT_MV_SYSTIME}
  287. PT_MV_STRING8 = (MV_FLAG or PT_STRING8);
  288. {$EXTERNALSYM PT_MV_STRING8}
  289. PT_MV_BINARY = (MV_FLAG or PT_BINARY);
  290. {$EXTERNALSYM PT_MV_BINARY}
  291. PT_MV_UNICODE = (MV_FLAG or PT_UNICODE);
  292. {$EXTERNALSYM PT_MV_UNICODE}
  293. PT_MV_CLSID = (MV_FLAG or PT_CLSID);
  294. {$EXTERNALSYM PT_MV_CLSID}
  295. PT_MV_I8 = (MV_FLAG or PT_I8);
  296. {$EXTERNALSYM PT_MV_I8}
  297. { Alternate property type names for ease of use }
  298. PT_MV_SHORT = PT_MV_I2;
  299. {$EXTERNALSYM PT_MV_SHORT}
  300. PT_MV_I4 = PT_MV_LONG;
  301. {$EXTERNALSYM PT_MV_I4}
  302. PT_MV_FLOAT = PT_MV_R4;
  303. {$EXTERNALSYM PT_MV_FLOAT}
  304. PT_MV_R8 = PT_MV_DOUBLE;
  305. {$EXTERNALSYM PT_MV_R8}
  306. PT_MV_LONGLONG = PT_MV_I8;
  307. {$EXTERNALSYM PT_MV_LONGLONG}
  308. {* Property type reserved bits
  309. *
  310. * MV_INSTANCE is used as a flag in table operations to request
  311. * that a multi-valued property be presented as a single-valued
  312. * property appearing in multiple rows.
  313. }
  314. MV_INSTANCE = $2000;
  315. {$EXTERNALSYM MV_INSTANCE}
  316. MVI_FLAG = (MV_FLAG or MV_INSTANCE);
  317. {$EXTERNALSYM MVI_FLAG}
  318. function MVI_PROP(tag: ULONG): ULONG;
  319. {$EXTERNALSYM MVI_PROP}
  320. { Data Structures }
  321. { Property Tag Array }
  322. type
  323. PSPropTagArray = ^TSPropTagArray;
  324. _SPropTagArray = record
  325. cValues: ULONG;
  326. aulPropTag: array[0..MAPI_DIM-1] of ULONG;
  327. end;
  328. {$EXTERNALSYM _SPropTagArray}
  329. TSPropTagArray = _SPropTagArray;
  330. SPropTagArray = _SPropTagArray;
  331. {$EXTERNALSYM SPropTagArray}
  332. (*!!!
  333. #define CbNewSPropTagArray(_ctag) \
  334. (offsetof(SPropTagArray,aulPropTag) + (_ctag)*sizeof(ULONG))
  335. #define CbSPropTagArray(_lparray) \
  336. (offsetof(SPropTagArray,aulPropTag) + \
  337. (UINT)((_lparray)->cValues)*sizeof(ULONG))
  338. /* SPropTagArray
  339. #define SizedSPropTagArray(_ctag, _name) \
  340. struct _SPropTagArray_ ## _name \
  341. { \
  342. ULONG cValues; \
  343. ULONG aulPropTag[_ctag]; \
  344. } _name
  345. *)
  346. { 32-bit CURRENCY definition stolen from oaidl.h }
  347. { real definition that makes the C++ compiler happy }
  348. type
  349. PCY = ^TCY;
  350. tagCY = record
  351. case Integer of
  352. 1: (
  353. {$IFDEF _MAC}
  354. Hi : Longint;
  355. Lo : Longint;
  356. {$ELSE}
  357. Lo : Longint;
  358. Hi : Longint;
  359. {$ENDIF}
  360. );
  361. 2: (
  362. int64: LONGLONG;
  363. );
  364. end;
  365. {$EXTERNALSYM tagCY}
  366. TCY = tagCY;
  367. CY = tagCY;
  368. {$EXTERNALSYM CY}
  369. TCURRENCY = TCY;
  370. PSBinary = ^TSBinary;
  371. _SBinary = record
  372. cb: ULONG;
  373. lpb: Pointer;
  374. end;
  375. {$EXTERNALSYM _SBinary}
  376. TSBinary = _SBinary;
  377. SBinary = _SBinary;
  378. {$EXTERNALSYM SBinary}
  379. PSShortArray = ^TSShortArray;
  380. _SShortArray = record
  381. cValues: ULONG;
  382. lpi: ^SmallInt;
  383. end;
  384. {$EXTERNALSYM _SShortArray}
  385. TSShortArray = _SShortArray;
  386. SShortArray = _SShortArray;
  387. {$EXTERNALSYM SShortArray}
  388. PSGuidArray = ^TSGuidArray;
  389. _SGuidArray = record
  390. cValues: ULONG;
  391. lpguid: ^TGUID;
  392. end;
  393. {$EXTERNALSYM _SGuidArray}
  394. TSGuidArray = _SGuidArray;
  395. SGuidArray = _SGuidArray;
  396. {$EXTERNALSYM SGuidArray}
  397. PSRealArray = ^TSRealArray;
  398. _SRealArray = record
  399. cValues: ULONG;
  400. lpflt: ^Single;
  401. end;
  402. {$EXTERNALSYM _SRealArray}
  403. TSRealArray = _SRealArray;
  404. SRealArray = _SRealArray;
  405. {$EXTERNALSYM SRealArray}
  406. PSLongArray = ^TSLongArray;
  407. _SLongArray = record
  408. cValues: ULONG;
  409. lpl: ^LongInt;
  410. end;
  411. {$EXTERNALSYM _SLongArray}
  412. TSLongArray = _SLongArray;
  413. SLongArray = _SLongArray;
  414. {$EXTERNALSYM SLongArray}
  415. PSLargeIntegerArray = ^TSLargeIntegerArray;
  416. _SLargeIntegerArray = record
  417. cValues: ULONG;
  418. lpli: ^TLargeInteger;
  419. end;
  420. {$EXTERNALSYM _SLargeIntegerArray}
  421. TSLargeIntegerArray = _SLargeIntegerArray;
  422. SLargeIntegerArray = _SLargeIntegerArray;
  423. {$EXTERNALSYM SLargeIntegerArray}
  424. PSDateTimeArray = ^TSDateTimeArray;
  425. _SDateTimeArray = record
  426. cValues: ULONG;
  427. lpft: ^TFileTime;
  428. end;
  429. {$EXTERNALSYM _SDateTimeArray}
  430. TSDateTimeArray = _SDateTimeArray;
  431. SDateTimeArray = _SDateTimeArray;
  432. {$EXTERNALSYM SDateTimeArray}
  433. PSAppTimeArray = ^TSAppTimeArray;
  434. _SAppTimeArray = record
  435. cValues: ULONG;
  436. lpat: ^Double;
  437. end;
  438. {$EXTERNALSYM _SAppTimeArray}
  439. TSAppTimeArray = _SAppTimeArray;
  440. SAppTimeArray = _SAppTimeArray;
  441. {$EXTERNALSYM SAppTimeArray}
  442. PSCurrencyArray = ^TSCurrencyArray;
  443. _SCurrencyArray = record
  444. cValues: ULONG;
  445. lpcur: ^Currency;
  446. end;
  447. {$EXTERNALSYM _SCurrencyArray}
  448. TSCurrencyArray = _SCurrencyArray;
  449. SCurrencyArray = _SCurrencyArray;
  450. {$EXTERNALSYM SCurrencyArray}
  451. PSBinaryArray = ^TSBinaryArray;
  452. _SBinaryArray = record
  453. cValues: ULONG;
  454. lpbin: PSBinary;
  455. end;
  456. {$EXTERNALSYM _SBinaryArray}
  457. TSBinaryArray = _SBinaryArray;
  458. SBinaryArray = _SBinaryArray;
  459. {$EXTERNALSYM SBinaryArray}
  460. PSDoubleArray = ^TSDoubleArray;
  461. _SDoubleArray = record
  462. cValues: ULONG;
  463. lpdbl: ^Double;
  464. end;
  465. {$EXTERNALSYM _SDoubleArray}
  466. TSDoubleArray = _SDoubleArray;
  467. SDoubleArray = _SDoubleArray;
  468. {$EXTERNALSYM SDoubleArray}
  469. PSWStringArray = ^TSWStringArray;
  470. _SWStringArray = record
  471. cValues: ULONG;
  472. lppszW: ^LPWSTR;
  473. end;
  474. {$EXTERNALSYM _SWStringArray}
  475. TSWStringArray = _SWStringArray;
  476. SWStringArray = _SWStringArray;
  477. {$EXTERNALSYM SWStringArray}
  478. PSLPSTRArray = ^TSLPSTRArray;
  479. _SLPSTRArray = record
  480. cValues: ULONG;
  481. lppszA: ^LPSTR;
  482. end;
  483. {$EXTERNALSYM _SLPSTRArray}
  484. TSLPSTRArray = _SLPSTRArray;
  485. SLPSTRArray = _SLPSTRArray;
  486. {$EXTERNALSYM SLPSTRArray}
  487. __UPV = record
  488. case Integer of
  489. 0: (i: SmallInt;); // case PT_I2
  490. 1: (l: LongInt;); // case PT_LONG
  491. 2: (ul: ULONG;); // alias for PT_LONG
  492. 3: (flt: Single;); // case PT_R4
  493. 4: (dbl: Double;); // case PT_DOUBLE
  494. 5: (b: Word;); // case PT_BOOLEAN
  495. 6: (cur: Currency;); // case PT_CURRENCY
  496. 7: (at: Double;); // case PT_APPTIME
  497. 8: (ft: TFileTime;); // case PT_SYSTIME
  498. 9: (lpszA: LPSTR;); // case PT_STRING8
  499. 10: (bin: TSBinary;); // case PT_BINARY
  500. 11: (lpszW: LPWSTR;); // case PT_UNICODE
  501. 12: (lpguid: PGUID;); // case PT_CLSID
  502. 13: (li: TLargeInteger;); // case PT_I8
  503. 14: (MVi: TSShortArray;); // case PT_MV_I2
  504. 15: (MVl: TSLongArray;); // case PT_MV_LONG
  505. 16: (MVflt: TSRealArray;); // case PT_MV_R4
  506. 17: (MVdbl: TSDoubleArray;); // case PT_MV_DOUBLE
  507. 18: (MVcur: TSCurrencyArray;); // case PT_MV_CURRENCY
  508. 19: (MVat: TSAppTimeArray;); // case PT_MV_APPTIME
  509. 20: (MVft: TSDateTimeArray;); // case PT_MV_SYSTIME
  510. 21: (MVbin: TSBinaryArray;); // case PT_MV_BINARY
  511. 22: (MVszA: TSLPSTRArray;); // case PT_MV_STRING8
  512. 23: (MVszW: TSWStringArray;); // case PT_MV_UNICODE
  513. 24: (MVguid: TSGuidArray;); // case PT_MV_CLSID
  514. 25: (MVli: TSLargeIntegerArray;); // case PT_MV_I8
  515. 26: (err: SCODE;); // case PT_ERROR
  516. 27: (x: LongInt;); // case PT_NULL, PT_OBJECT (no usable value) *
  517. end;
  518. {$EXTERNALSYM __UPV}
  519. _PV = __UPV;
  520. {$EXTERNALSYM _PV}
  521. PSPropValue = ^TSPropValue;
  522. _SPropValue = record
  523. ulPropTag: ULONG;
  524. dwAlignPad: ULONG;
  525. Value: _PV;
  526. end;
  527. {$EXTERNALSYM _SPropValue}
  528. TSPropValue = _SPropValue;
  529. SPropValue = _SPropValue;
  530. {$EXTERNALSYM SPropValue}
  531. { Property Problem and Property Problem Arrays }
  532. PSPropProblem = ^TSPropProblem;
  533. _SPropProblem = record
  534. ulIndex: ULONG;
  535. ulPropTag: ULONG;
  536. _scode: SCODE;
  537. end;
  538. {$EXTERNALSYM _SPropProblem}
  539. TSPropProblem = _SPropProblem;
  540. SPropProblem = _SPropProblem;
  541. {$EXTERNALSYM SPropProblem}
  542. PSPropProblemArray = ^TSPropProblemArray;
  543. _SPropProblemArray = record
  544. cProblem: ULONG;
  545. aProblem: array[0..MAPI_DIM-1] of TSPropProblem;
  546. end;
  547. {$EXTERNALSYM _SPropProblemArray}
  548. TSPropProblemArray = _SPropProblemArray;
  549. SPropProblemArray = _SPropProblemArray;
  550. {$EXTERNALSYM SPropProblemArray}
  551. (*!!!
  552. #define CbNewSPropProblemArray(_cprob) \
  553. (offsetof(SPropProblemArray,aProblem) + (_cprob)*sizeof(SPropProblem))
  554. #define CbSPropProblemArray(_lparray) \
  555. (offsetof(SPropProblemArray,aProblem) + \
  556. (UINT) ((_lparray)->cProblem*sizeof(SPropProblem)))
  557. #define SizedSPropProblemArray(_cprob, _name) \
  558. struct _SPropProblemArray_ ## _name \
  559. { \
  560. ULONG cProblem; \
  561. SPropProblem aProblem[_cprob]; \
  562. } _name
  563. *)
  564. { ENTRYLIST }
  565. PEntryList = ^TEntryList;
  566. ENTRYLIST = TSBinaryArray;
  567. {$EXTERNALSYM ENTRYLIST}
  568. TEntryList = ENTRYLIST;
  569. { FLATENTRYLIST }
  570. { MTSID }
  571. { FLATMTSIDLIST }
  572. PFlatEntry = ^TFlatEntry;
  573. FLATENTRY = record
  574. cb: ULONG;
  575. abEntry: array[0..MAPI_DIM-1] of Byte;
  576. end;
  577. {$EXTERNALSYM FLATENTRY}
  578. TFlatEntry = FLATENTRY;
  579. PFlatEntryList = ^TFlatEntryList;
  580. FLATENTRYLIST = record
  581. cEntries: ULONG;
  582. cbEntries: ULONG;
  583. abEntries: array[0..MAPI_DIM-1] of Byte;
  584. end;
  585. {$EXTERNALSYM FLATENTRYLIST}
  586. TFlatEntryList = FLATENTRYLIST;
  587. PMTSID = ^TMTSID;
  588. TMTSID = record
  589. cb: ULONG;
  590. ab: array[0..MAPI_DIM-1] of Byte;
  591. end;
  592. {$EXTERNALSYM TMTSID}
  593. PFlatMtsIdList = ^TFlatMtsIdList;
  594. FLATMTSIDLIST = record
  595. cMTSIDs: ULONG;
  596. cbMTSIDs: ULONG;
  597. abMTSIDs: array[0..MAPI_DIM-1] of Byte;
  598. end;
  599. {$EXTERNALSYM FLATMTSIDLIST}
  600. TFlatMtsIdList = FLATMTSIDLIST;
  601. (*!!!
  602. #define CbNewFLATENTRY(_cb) (offsetof(FLATENTRY,abEntry) + (_cb))
  603. #define CbFLATENTRY(_lpentry) (offsetof(FLATENTRY,abEntry) + (_lpentry)->cb)
  604. #define CbNewFLATENTRYLIST(_cb) (offsetof(FLATENTRYLIST,abEntries) + (_cb))
  605. #define CbFLATENTRYLIST(_lplist) (offsetof(FLATENTRYLIST,abEntries) + (_lplist)->cbEntries)
  606. #define CbNewMTSID(_cb) (offsetof(MTSID,ab) + (_cb))
  607. #define CbMTSID(_lpentry) (offsetof(MTSID,ab) + (_lpentry)->cb)
  608. #define CbNewFLATMTSIDLIST(_cb) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_cb))
  609. #define CbFLATMTSIDLIST(_lplist) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_lplist)->cbMTSIDs)
  610. /* No SizedXXX macros for these types.
  611. *)
  612. PAdrEntry = ^TAdrEntry;
  613. _ADRENTRY = record
  614. ulReserved1: ULONG; // Never used
  615. cValues: ULONG;
  616. rgPropVals: PSPropValue;
  617. end;
  618. {$EXTERNALSYM _ADRENTRY}
  619. TAdrEntry = _ADRENTRY;
  620. ADRENTRY = _ADRENTRY;
  621. {$EXTERNALSYM ADRENTRY}
  622. PAdrList = ^TAdrList;
  623. _ADRLIST = record
  624. cEntries: ULONG;
  625. aEntries: array[0..MAPI_DIM-1] of TAdrEntry;
  626. end;
  627. {$EXTERNALSYM _ADRLIST}
  628. TAdrList = _ADRLIST;
  629. ADRLIST = _ADRLIST;
  630. {$EXTERNALSYM ADRLIST}
  631. (*!!!
  632. #define CbNewADRLIST(_centries) \
  633. (offsetof(ADRLIST,aEntries) + (_centries)*sizeof(ADRENTRY))
  634. #define CbADRLIST(_lpadrlist) \
  635. (offsetof(ADRLIST,aEntries) + (UINT)(_lpadrlist)->cEntries*sizeof(ADRENTRY))
  636. #define SizedADRLIST(_centries, _name) \
  637. struct _ADRLIST_ ## _name \
  638. { \
  639. ULONG cEntries; \
  640. ADRENTRY aEntries[_centries]; \
  641. } _name
  642. *)
  643. PSPropsArray = ^TSPropsArray;
  644. TSPropsArray = array[Byte] of TSPropValue;
  645. {$NODEFINE TSPropsArray}
  646. PSRow = ^TSRow;
  647. _SRow = record
  648. ulAdrEntryPad: ULONG; // Pad so SRow's can map to ADRENTRY's
  649. cValues: ULONG; // Count of property values
  650. lpProps: PSPropsArray ; // Property value array
  651. end;
  652. {$EXTERNALSYM _SRow}
  653. TSRow = _SRow;
  654. SRow = _SRow;
  655. {$EXTERNALSYM SRow}
  656. PSRowSet = ^TSRowSet;
  657. _SRowSet = record
  658. cRows: ULONG; // Count of rows
  659. aRow: array[0..MAPI_DIM-1] of TSRow; // Array of rows
  660. end;
  661. {$EXTERNALSYM _SRowSet}
  662. TSRowSet = _SRowSet;
  663. SRowSet = _SRowSet;
  664. {$EXTERNALSYM SRowSet}
  665. (*!!!
  666. #define CbNewSRowSet(_crow) (offsetof(SRowSet,aRow) + (_crow)*sizeof(SRow))
  667. #define CbSRowSet(_lprowset) (offsetof(SRowSet,aRow) + \
  668. (UINT)((_lprowset)->cRows*sizeof(SRow)))
  669. #define SizedSRowSet(_crow, _name) \
  670. struct _SRowSet_ ## _name \
  671. { \
  672. ULONG cRows; \
  673. SRow aRow[_crow]; \
  674. } _name
  675. *)
  676. { MAPI Allocation Routines ------------------------------------------------ }
  677. type
  678. PAllocateBuffer = ^TAllocateBuffer;
  679. ALLOCATEBUFFER = function (cbSize: ULONG; var lppBuffer: Pointer): SCODE; stdcall;
  680. {$EXTERNALSYM ALLOCATEBUFFER}
  681. TAllocateBuffer = ALLOCATEBUFFER;
  682. PAllocateMore = ^TAllocateMore;
  683. ALLOCATEMORE = function (cbSize: ULONG; lpObject: Pointer; var lppBuffer: Pointer): SCODE; stdcall;
  684. {$EXTERNALSYM ALLOCATEMORE}
  685. TAllocateMore = ALLOCATEMORE;
  686. PFreeBuffer = ^TFreeBuffer;
  687. FREEBUFFER = function (lpBuffer: Pointer): ULONG; stdcall;
  688. {$EXTERNALSYM FREEBUFFER}
  689. TFreeBuffer = FREEBUFFER;
  690. { Pointers to MAPI Interfaces --------------------------------------------- }
  691. PCIID = ^TIID;
  692. { Extended MAPI Error Information ----------------------------------------- }
  693. PMapiError = ^TMapiError;
  694. _MAPIERROR = record
  695. ulVersion: ULONG;
  696. lpszError: LPTSTR;
  697. lpszComponent: LPTSTR;
  698. ulLowLevelError: ULONG;
  699. ulContext: ULONG;
  700. end;
  701. {$EXTERNALSYM _MAPIERROR}
  702. TMapiError = _MAPIERROR;
  703. MAPIERROR = _MAPIERROR;
  704. {$EXTERNALSYM MAPIERROR}
  705. { IMAPIAdviseSink Interface ----------------------------------------------- }
  706. {*
  707. * Notification event types. The event types can be combined in a bitmask
  708. * for filtering. Each one has a parameter structure associated with it:
  709. *
  710. * fnevCriticalError ERROR_NOTIFICATION
  711. * fnevNewMail NEWMAIL_NOTIFICATION
  712. * fnevObjectCreated OBJECT_NOTIFICATION
  713. * fnevObjectDeleted OBJECT_NOTIFICATION
  714. * fnevObjectModified OBJECT_NOTIFICATION
  715. * fnevObjectCopied OBJECT_NOTIFICATION
  716. * fnevSearchComplete OBJECT_NOTIFICATION
  717. * fnevTableModified TABLE_NOTIFICATION
  718. * fnevStatusObjectModified OBJECT_NOTIFICATION
  719. *
  720. * fnevExtended EXTENDED_NOTIFICATION
  721. }
  722. const
  723. fnevCriticalError = ULONG($00000001);
  724. {$EXTERNALSYM fnevCriticalError}
  725. fnevNewMail = ULONG($00000002);
  726. {$EXTERNALSYM fnevNewMail}
  727. fnevObjectCreated = ULONG($00000004);
  728. {$EXTERNALSYM fnevObjectCreated}
  729. fnevObjectDeleted = ULONG($00000008);
  730. {$EXTERNALSYM fnevObjectDeleted}
  731. fnevObjectModified = ULONG($00000010);
  732. {$EXTERNALSYM fnevObjectModified}
  733. fnevObjectMoved = ULONG($00000020);
  734. {$EXTERNALSYM fnevObjectMoved}
  735. fnevObjectCopied = ULONG($00000040);
  736. {$EXTERNALSYM fnevObjectCopied}
  737. fnevSearchComplete = ULONG($00000080);
  738. {$EXTERNALSYM fnevSearchComplete}
  739. fnevTableModified = ULONG($00000100);
  740. {$EXTERNALSYM fnevTableModified}
  741. fnevStatusObjectModified = ULONG($00000200);
  742. {$EXTERNALSYM fnevStatusObjectModified}
  743. fnevReservedForMapi = ULONG($40000000);
  744. {$EXTERNALSYM fnevReservedForMapi}
  745. fnevExtended = ULONG($80000000);
  746. {$EXTERNALSYM fnevExtended}
  747. { TABLE_NOTIFICATION event types passed in ulTableEvent }
  748. TABLE_CHANGED = 1;
  749. {$EXTERNALSYM TABLE_CHANGED}
  750. TABLE_ERROR = 2;
  751. {$EXTERNALSYM TABLE_ERROR}
  752. TABLE_ROW_ADDED = 3;
  753. {$EXTERNALSYM TABLE_ROW_ADDED}
  754. TABLE_ROW_DELETED = 4;
  755. {$EXTERNALSYM TABLE_ROW_DELETED}
  756. TABLE_ROW_MODIFIED = 5;
  757. {$EXTERNALSYM TABLE_ROW_MODIFIED}
  758. TABLE_SORT_DONE = 6;
  759. {$EXTERNALSYM TABLE_SORT_DONE}
  760. TABLE_RESTRICT_DONE = 7;
  761. {$EXTERNALSYM TABLE_RESTRICT_DONE}
  762. TABLE_SETCOL_DONE = 8;
  763. {$EXTERNALSYM TABLE_SETCOL_DONE}
  764. TABLE_RELOAD = 9;
  765. {$EXTERNALSYM TABLE_RELOAD}
  766. { Event Structures }
  767. type
  768. PErrorNotification = ^TErrorNotification;
  769. _ERROR_NOTIFICATION = record
  770. cbEntryID: ULONG;
  771. lpEntryID: PEntryID;
  772. scode: SCODE;
  773. ulFlags: ULONG; // 0 or MAPI_UNICODE
  774. lpMAPIError: PMapiError; // Detailed error information
  775. end;
  776. {$EXTERNALSYM _ERROR_NOTIFICATION}
  777. TErrorNotification = _ERROR_NOTIFICATION;
  778. ERROR_NOTIFICATION = _ERROR_NOTIFICATION;
  779. {$EXTERNALSYM ERROR_NOTIFICATION}
  780. PNewMailNotification = ^TNewMailNotification;
  781. _NEWMAIL_NOTIFICATION = record
  782. cbEntryID: ULONG;
  783. lpEntryID: PEntryID; // identifies the new message
  784. cbParentID: ULONG;
  785. lpParentID: PEntryID; // identifies the folder it lives in
  786. ulFlags: ULONG; // 0 or MAPI_UNICODE
  787. lpszMessageClass: LPTSTR; // message class (UNICODE or string8)
  788. ulMessageFlags: ULONG; // copy of PR_MESSAGE_FLAGS
  789. end;
  790. {$EXTERNALSYM _NEWMAIL_NOTIFICATION}
  791. TNewMailNotification = _NEWMAIL_NOTIFICATION;
  792. NEWMAIL_NOTIFICATION = _NEWMAIL_NOTIFICATION;
  793. {$EXTERNALSYM NEWMAIL_NOTIFICATION}
  794. PObjectNotification = ^TObjectNotification;
  795. _OBJECT_NOTIFICATION = record
  796. cbEntryID: ULONG;
  797. lpEntryID: PEntryID; // EntryID of object
  798. ulObjType: ULONG; // Type of object
  799. cbParentID: ULONG;
  800. lpParentID: PEntryID; // EntryID of parent object
  801. cbOldID: ULONG;
  802. lpOldID: PEntryID; // EntryID of old object
  803. cbOldParentID: ULONG;
  804. lpOldParentID: PEntryID; // EntryID of old parent
  805. lpPropTagArray: PSPropTagArray;
  806. end;
  807. {$EXTERNALSYM _OBJECT_NOTIFICATION}
  808. TObjectNotification = _OBJECT_NOTIFICATION;
  809. OBJECT_NOTIFICATION = _OBJECT_NOTIFICATION;
  810. {$EXTERNALSYM OBJECT_NOTIFICATION}
  811. PTableNotification = ^TTableNotification;
  812. _TABLE_NOTIFICATION = record
  813. ulTableEvent: ULONG; // Identifies WHICH table event
  814. hResult: HRESULT; // Value for TABLE_ERROR
  815. propIndex: TSPropValue; // This row's "index property"
  816. propPrior: TSPropValue; // Preceding row's "index property"
  817. row: TSRow; // New data of added/modified row
  818. ulPad: ULONG; // Force to 8-byte boundary
  819. end;
  820. {$EXTERNALSYM _TABLE_NOTIFICATION}
  821. TTableNotification = _TABLE_NOTIFICATION;
  822. TABLE_NOTIFICATION = _TABLE_NOTIFICATION;
  823. {$EXTERNALSYM TABLE_NOTIFICATION}
  824. PExtendedNotification = ^TExtendedNotification;
  825. _EXTENDED_NOTIFICATION = record
  826. ulEvent: ULONG; // extended event code
  827. cb: ULONG; // size of event parameters
  828. pbEventParameters: Pointer; // event parameters
  829. end;
  830. {$EXTERNALSYM _EXTENDED_NOTIFICATION}
  831. TExtendedNotification = _EXTENDED_NOTIFICATION;
  832. EXTENDED_NOTIFICATION = _EXTENDED_NOTIFICATION;
  833. {$EXTERNALSYM EXTENDED_NOTIFICATION}
  834. PStatusObjectNotification = ^TStatusObjectNotification;
  835. STATUS_OBJECT_NOTIFICATION = record
  836. cbEntryID: ULONG;
  837. lpEntryID: PEntryID;
  838. cValues: ULONG;
  839. lpPropVals: PSPropValue;
  840. end;
  841. TStatusObjectNotification = STATUS_OBJECT_NOTIFICATION;
  842. {$EXTERNALSYM STATUS_OBJECT_NOTIFICATION}
  843. PNotification = ^TNotification;
  844. _NOTIFICATION = record
  845. ulEventType: ULONG; // notification type, i.e. fnevSomething
  846. ulAlignPad: ULONG; // Force to 8-byte boundary
  847. case Integer of
  848. 1: (err: TErrorNotification;);
  849. 2: (newmail: TNewMailNotification;);
  850. 3: (obj: TObjectNotification;);
  851. 4: (tab: TTableNotification;);
  852. 5: (ext: TExtendedNotification;);
  853. 6: (statobj: TStatusObjectNotification;);
  854. end;
  855. {$EXTERNALSYM _NOTIFICATION}
  856. TNotification = _NOTIFICATION;
  857. NOTIFICATION = _NOTIFICATION;
  858. {$EXTERNALSYM NOTIFICATION}
  859. { Interface used for registering and issuing notification callbacks. }
  860. IMAPIAdviseSink = interface(IUnknown)
  861. function OnNotify(cNotif: ULONG; lpNotifications: PNotification): ULONG; stdcall;
  862. end;
  863. {$EXTERNALSYM IMAPIAdviseSink}
  864. { Callback function type for MAPIAllocAdviseSink }
  865. PNotifyCallback = ^TNotifyCallback;
  866. NOTIFCALLBACK = function (lpvContext: Pointer; cNotification: ULONG;
  867. lpNotifications: PNotification): Integer; stdcall;
  868. {$EXTERNALSYM NOTIFCALLBACK}
  869. TNotifyCallback = NOTIFCALLBACK;
  870. { IMAPIProgress Interface ------------------------------------------------- }
  871. { Flag values for the progress indicator }
  872. const
  873. MAPI_TOP_LEVEL = ULONG($00000001);
  874. {$EXTERNALSYM MAPI_TOP_LEVEL}
  875. type
  876. IMAPIProgress = interface(IUnknown)
  877. function Progress(ulValue, ulCount, ulTotal: ULONG): HResult; stdcall;
  878. function GetFlags(var lpulFlags: ULONG): HResult; stdcall;
  879. function GetMax(var lpulMax: ULONG): HResult; stdcall;
  880. function GetMin(var lpulMin: ULONG): HResult; stdcall;
  881. function SetLimits(lpulMin, lpulMax, lpulFlags: PULONG): HResult; stdcall;
  882. end;
  883. {$EXTERNALSYM IMAPIProgress}
  884. { IMAPIProp Interface ----------------------------------------------------- }
  885. const
  886. MAPI_ERROR_VERSION = $00000000;
  887. {$EXTERNALSYM MAPI_ERROR_VERSION}
  888. { SaveChanges }
  889. KEEP_OPEN_READONLY = ULONG($00000001);
  890. {$EXTERNALSYM KEEP_OPEN_READONLY}
  891. KEEP_OPEN_READWRITE = ULONG($00000002);
  892. {$EXTERNALSYM KEEP_OPEN_READWRITE}
  893. FORCE_SAVE = ULONG($00000004);
  894. {$EXTERNALSYM FORCE_SAVE}
  895. // define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  896. { OpenProperty - ulFlags }
  897. //***** MAPI_MODIFY ((ULONG) 0x00000001) above
  898. MAPI_CREATE = ULONG($00000002);
  899. {$EXTERNALSYM MAPI_CREATE}
  900. STREAM_APPEND = ULONG($00000004);
  901. {$EXTERNALSYM STREAM_APPEND}
  902. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  903. { OpenProperty - ulInterfaceOptions, IID_IMAPITable }
  904. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  905. { CopyTo, CopyProps }
  906. MAPI_MOVE = ULONG($00000001);
  907. {$EXTERNALSYM MAPI_MOVE}
  908. MAPI_NOREPLACE = ULONG($00000002);
  909. {$EXTERNALSYM MAPI_NOREPLACE}
  910. MAPI_DECLINE_OK = ULONG($00000004);
  911. {$EXTERNALSYM MAPI_DECLINE_OK}
  912. MAPI_DIALOG = ULONG($00000008);
  913. {$EXTERNALSYM MAPI_DIALOG}
  914. MAPI_USE_DEFAULT = $00000040; // Use default profile in logon
  915. {$EXTERNALSYM MAPI_USE_DEFAULT}
  916. { Flags used in GetIDsFromNames }
  917. //***** MAPI_CREATE ((ULONG) 0x00000002) above
  918. { Flags used in GetNamesFromIDs (bit fields) }
  919. MAPI_NO_STRINGS = ULONG($00000001);
  920. {$EXTERNALSYM MAPI_NO_STRINGS}
  921. MAPI_NO_IDS = ULONG($00000002);
  922. {$EXTERNALSYM MAPI_NO_IDS}
  923. { Union discriminator }
  924. MNID_ID = 0;
  925. {$EXTERNALSYM MNID_ID}
  926. MNID_STRING = 1;
  927. {$EXTERNALSYM MNID_STRING}
  928. type
  929. PMapiNameID = ^TMapiNameID;
  930. _MAPINAMEID = record
  931. lpguid: PGUID;
  932. ulKind: ULONG;
  933. case Integer of
  934. MNID_ID: (lID: LongInt;);
  935. MNID_STRING: (lpwstrName: LPWSTR;);
  936. end;
  937. {$EXTERNALSYM _MAPINAMEID}
  938. TMapiNameID = _MAPINAMEID;
  939. MAPINAMEID = _MAPINAMEID;
  940. {$EXTERNALSYM MAPINAMEID}
  941. IMAPIProp = interface(IUnknown)
  942. function GetLastError(hResult: HRESULT; ulFlags: ULONG;
  943. var lppMAPIError: TMapiError): HResult; stdcall;
  944. function SaveChanges(ulFlags: ULONG): HResult; stdcall;
  945. function GetProps(lpPropTagArray: PSPropTagArray; ulFlags: ULONG;
  946. lpcValues: PULONG; var lppPropArray: PSPropValue): HResult; stdcall;
  947. function GetPropList(ulFlags: ULONG; var lppPropTagArray: PSPropTagArray): HResult; stdcall;
  948. function OpenProperty(ulPropTag: ULONG; const lpiid: TIID;
  949. ulInterfaceOptions, ulFlags: ULONG; out lppUnk: IUnknown): HResult; stdcall;
  950. function SetProps(cValues: ULONG; lpPropArray: PSPropValue;
  951. lppProblems: PSPropProblemArray): HResult; stdcall;
  952. function DeleteProps(lpPropTagArray: PSPropTagArray;
  953. lppProblems: PSPropProblemArray): HResult; stdcall;
  954. function CopyTo(ciidExclude: ULONG; rgiidExclude: PCIID;
  955. lpExcludeProps: PSPropTagArray; ulUIParam: ULONG; lpProgress: IMAPIProgress;
  956. lpInterface: PIID; lpDestObj: Pointer; ulFlags: ULONG;
  957. lppProblems: PSPropProblemArray): HResult; stdcall;
  958. function CopyProps(lpIncludeProps: PSPropTagArray; ulUIParam: ULONG;
  959. lpProgress: IMAPIProgress; lpInterface: PIID; lpDestObj: Pointer;
  960. ulFlags: ULONG; lppProblems: PSPropProblemArray): HResult; stdcall;
  961. function GetNamesFromIDs(lppPropTags: PSPropTagArray; lpPropSetGuid: PGUID;
  962. ulFlags: ULONG; var lpcPropNames: ULONG; var lpppPropNames: TMapiNameID): HResult; stdcall;
  963. function GetIDsFromNames(cPropNames: ULONG; lppPropNames: PMapiNameID;
  964. ulFlags: ULONG; var lppPropTags: PSPropTagArray): HResult; stdcall;
  965. end;
  966. {$EXTERNALSYM IMAPIProp}
  967. { IMAPITable Interface ---------------------------------------------------- }
  968. { Table status }
  969. const
  970. TBLSTAT_COMPLETE = ULONG(0);
  971. {$EXTERNALSYM TBLSTAT_COMPLETE}
  972. TBLSTAT_QCHANGED = ULONG(7);
  973. {$EXTERNALSYM TBLSTAT_QCHANGED}
  974. TBLSTAT_SORTING = ULONG(9);
  975. {$EXTERNALSYM TBLSTAT_SORTING}
  976. TBLSTAT_SORT_ERROR = ULONG(10);
  977. {$EXTERNALSYM TBLSTAT_SORT_ERROR}
  978. TBLSTAT_SETTING_COLS = ULONG(11);
  979. {$EXTERNALSYM TBLSTAT_SETTING_COLS}
  980. TBLSTAT_SETCOL_ERROR = ULONG(13);
  981. {$EXTERNALSYM TBLSTAT_SETCOL_ERROR}
  982. TBLSTAT_RESTRICTING = ULONG(14);
  983. {$EXTERNALSYM TBLSTAT_RESTRICTING}
  984. TBLSTAT_RESTRICT_ERROR = ULONG(15);
  985. {$EXTERNALSYM TBLSTAT_RESTRICT_ERROR}
  986. { Table Type }
  987. TBLTYPE_SNAPSHOT = ULONG(0);
  988. {$EXTERNALSYM TBLTYPE_SNAPSHOT}
  989. TBLTYPE_KEYSET = ULONG(1);
  990. {$EXTERNALSYM TBLTYPE_KEYSET}
  991. TBLTYPE_DYNAMIC = ULONG(2);
  992. {$EXTERNALSYM TBLTYPE_DYNAMIC}
  993. { Sort order }
  994. { bit 0: set if descending, clear if ascending }
  995. TABLE_SORT_ASCEND = ULONG($00000000);
  996. {$EXTERNALSYM TABLE_SORT_ASCEND}
  997. TABLE_SORT_DESCEND = ULONG($00000001);
  998. {$EXTERNALSYM TABLE_SORT_DESCEND}
  999. TABLE_SORT_COMBINE = ULONG($00000002);
  1000. {$EXTERNALSYM TABLE_SORT_COMBINE}
  1001. { Data structures }
  1002. type
  1003. PSSortOrder = ^TSSortOrder;
  1004. _SSortOrder = record
  1005. ulPropTag: ULONG; // Column to sort on
  1006. ulOrder: ULONG; // Ascending, descending, combine to left
  1007. end;
  1008. {$EXTERNALSYM _SSortOrder}
  1009. TSSortOrder = _SSortOrder;
  1010. SSortOrder = _SSortOrder;
  1011. {$EXTERNALSYM SSortOrder}
  1012. PSSortOrderSet = ^TSSortOrderSet;
  1013. _SSortOrderSet = record
  1014. cSorts: ULONG; // Number of sort columns in aSort below
  1015. cCategories: ULONG; // 0 for non-categorized, up to cSorts
  1016. cExpanded: ULONG; // 0 if no categories start expanded,
  1017. // up to cExpanded
  1018. aSort: array[0..MAPI_DIM-1] of TSSortOrder; // The sort orders
  1019. end;
  1020. {$EXTERNALSYM _SSortOrderSet}
  1021. TSSortOrderSet = _SSortOrderSet;
  1022. SSortOrderSet = _SSortOrderSet;
  1023. {$EXTERNALSYM SSortOrderSet}
  1024. (*!!!
  1025. #define CbNewSSortOrderSet(_csort) \
  1026. (offsetof(SSortOrderSet,aSort) + (_csort)*sizeof(SSortOrder))
  1027. #define CbSSortOrderSet(_lpset) \
  1028. (offsetof(SSortOrderSet,aSort) + \
  1029. (UINT)((_lpset)->cSorts*sizeof(SSortOrder)))
  1030. #define SizedSSortOrderSet(_csort, _name) \
  1031. struct _SSortOrderSet_ ## _name \
  1032. { \
  1033. ULONG cSorts; \
  1034. ULONG cCategories; \
  1035. ULONG cExpanded; \
  1036. SSortOrder aSort[_csort]; \
  1037. } _name
  1038. *)
  1039. PBookMark = ^TBookMark;
  1040. BOOKMARK = ULONG;
  1041. {$EXTERNALSYM BOOKMARK}
  1042. TBookMark = BOOKMARK;
  1043. const
  1044. BOOKMARK_BEGINNING = TBookMark(0); // Before first row
  1045. {$EXTERNALSYM BOOKMARK_BEGINNING}
  1046. BOOKMARK_CURRENT = TBookMark(1); // Before current row
  1047. {$EXTERNALSYM BOOKMARK_CURRENT}
  1048. BOOKMARK_END = TBookMark(2); // After last row
  1049. {$EXTERNALSYM BOOKMARK_END}
  1050. { Fuzzy Level }
  1051. FL_FULLSTRING = ULONG($00000000);
  1052. {$EXTERNALSYM FL_FULLSTRING}
  1053. FL_SUBSTRING = ULONG($00000001);
  1054. {$EXTERNALSYM FL_SUBSTRING}
  1055. FL_PREFIX = ULONG($00000002);
  1056. {$EXTERNALSYM FL_PREFIX}
  1057. FL_IGNORECASE = ULONG($00010000);
  1058. {$EXTERNALSYM FL_IGNORECASE}
  1059. FL_IGNORENONSPACE = ULONG($00020000);
  1060. {$EXTERNALSYM FL_IGNORENONSPACE}
  1061. FL_LOOSE = ULONG($00040000);
  1062. {$EXTERNALSYM FL_LOOSE}
  1063. { Restrictions }
  1064. { Restriction types }
  1065. const
  1066. RES_AND = ULONG($00000000);
  1067. {$EXTERNALSYM RES_AND}
  1068. RES_OR = ULONG($00000001);
  1069. {$EXTERNALSYM RES_OR}
  1070. RES_NOT = ULONG($00000002);
  1071. {$EXTERNALSYM RES_NOT}
  1072. RES_CONTENT = ULONG($00000003);
  1073. {$EXTERNALSYM RES_CONTENT}
  1074. RES_PROPERTY = ULONG($00000004);
  1075. {$EXTERNALSYM RES_PROPERTY}
  1076. RES_COMPAREPROPS = ULONG($00000005);
  1077. {$EXTERNALSYM RES_COMPAREPROPS}
  1078. RES_BITMASK = ULONG($00000006);
  1079. {$EXTERNALSYM RES_BITMASK}
  1080. RES_SIZE = ULONG($00000007);
  1081. {$EXTERNALSYM RES_SIZE}
  1082. RES_EXIST = ULONG($00000008);
  1083. {$EXTERNALSYM RES_EXIST}
  1084. RES_SUBRESTRICTION = ULONG($00000009);
  1085. {$EXTERNALSYM RES_SUBRESTRICTION}
  1086. RES_COMMENT = ULONG($0000000A);
  1087. {$EXTERNALSYM RES_COMMENT}
  1088. { Relational operators. These apply to all property comparison restrictions. }
  1089. RELOP_LT = ULONG(0); // <
  1090. {$EXTERNALSYM RELOP_LT}
  1091. RELOP_LE = ULONG(1); // <=
  1092. {$EXTERNALSYM RELOP_LE}
  1093. RELOP_GT = ULONG(2); // >
  1094. {$EXTERNALSYM RELOP_GT}
  1095. RELOP_GE = ULONG(3); // >=
  1096. {$EXTERNALSYM RELOP_GE}
  1097. RELOP_EQ = ULONG(4); // ==
  1098. {$EXTERNALSYM RELOP_EQ}
  1099. RELOP_NE = ULONG(5); // !=
  1100. {$EXTERNALSYM RELOP_NE}
  1101. RELOP_RE = ULONG(6); // LIKE (Regular expression)
  1102. {$EXTERNALSYM RELOP_RE}
  1103. { Bitmask operators, for RES_BITMASK only. }
  1104. BMR_EQZ = ULONG(0); // ==0
  1105. {$EXTERNALSYM BMR_EQZ}
  1106. BMR_NEZ = ULONG(1); // !=0
  1107. {$EXTERNALSYM BMR_NEZ}
  1108. { Subobject identifiers for RES_SUBRESTRICTION only. See MAPITAGS.H. }
  1109. // #define PR_MESSAGE_RECIPIENTS PROP_TAG(PT_OBJECT,0x0E12)
  1110. // #define PR_MESSAGE_ATTACHMENTS PROP_TAG(PT_OBJECT,0x0E13)
  1111. type
  1112. PSRestriction = ^TSRestriction;
  1113. PSAndRestriction = ^TSAndRestriction;
  1114. _SAndRestriction = record
  1115. cRes: ULONG;
  1116. lpRes: PSRestriction;
  1117. end;
  1118. {$EXTERNALSYM _SAndRestriction}
  1119. TSAndRestriction = _SAndRestriction;
  1120. SAndRestriction = _SAndRestriction;
  1121. {$EXTERNALSYM SAndRestriction}
  1122. PSOrRestriction = ^TSOrRestriction;
  1123. _SOrRestriction = record
  1124. cRes: ULONG;
  1125. lpRes: PSRestriction;
  1126. end;
  1127. {$EXTERNALSYM _SOrRestriction}
  1128. TSOrRestriction = _SOrRestriction;
  1129. SOrRestriction = _SOrRestriction;
  1130. {$EXTERNALSYM SOrRestriction}
  1131. PSNotRestriction = ^TSNotRestriction;
  1132. _SNotRestriction = record
  1133. ulReserved: ULONG;
  1134. lpRes: PSRestriction;
  1135. end;
  1136. {$EXTERNALSYM _SNotRestriction}
  1137. TSNotRestriction = _SNotRestriction;
  1138. SNotRestriction = _SNotRestriction;
  1139. {$EXTERNALSYM SNotRestriction}
  1140. PSContentRestriction = ^TSContentRestriction;
  1141. _SContentRestriction = record
  1142. ulFuzzyLevel: ULONG;
  1143. ulPropTag: ULONG;
  1144. lpProp: PSPropValue;
  1145. end;
  1146. {$EXTERNALSYM _SContentRestriction}
  1147. TSContentRestriction = _SContentRestriction;
  1148. SContentRestriction = _SContentRestriction;
  1149. {$EXTERNALSYM SContentRestriction}
  1150. PSBitMaskRestriction = ^TSBitMaskRestriction;
  1151. _SBitMaskRestriction = record
  1152. relBMR: ULONG;
  1153. ulPropTag: ULONG;
  1154. ulMask: ULONG;
  1155. end;
  1156. {$EXTERNALSYM _SBitMaskRestriction}
  1157. TSBitMaskRestriction = _SBitMaskRestriction;
  1158. SBitMaskRestriction = _SBitMaskRestriction;
  1159. {$EXTERNALSYM SBitMaskRestriction}
  1160. PSPropertyRestriction = ^TSPropertyRestriction;
  1161. _SPropertyRestriction = record
  1162. relop: ULONG;
  1163. ulPropTag: ULONG;
  1164. lpProp: PSPropValue;
  1165. end;
  1166. {$EXTERNALSYM _SPropertyRestriction}
  1167. TSPropertyRestriction = _SPropertyRestriction;
  1168. SPropertyRestriction = _SPropertyRestriction;
  1169. {$EXTERNALSYM SPropertyRestriction}
  1170. PSComparePropsRestriction = ^TSComparePropsRestriction;
  1171. _SComparePropsRestriction = record
  1172. relop: ULONG;
  1173. ulPropTag1: ULONG;
  1174. ulPropTag2: ULONG;
  1175. end;
  1176. {$EXTERNALSYM _SComparePropsRestriction}
  1177. TSComparePropsRestriction = _SComparePropsRestriction;
  1178. SComparePropsRestriction = _SComparePropsRestriction;
  1179. {$EXTERNALSYM SComparePropsRestriction}
  1180. PSSizeRestriction = ^TSSizeRestriction;
  1181. _SSizeRestriction = record
  1182. relop: ULONG;
  1183. ulPropTag: ULONG;
  1184. cb: ULONG;
  1185. end;
  1186. {$EXTERNALSYM _SSizeRestriction}
  1187. TSSizeRestriction = _SSizeRestriction;
  1188. SSizeRestriction = _SSizeRestriction;
  1189. {$EXTERNALSYM SSizeRestriction}
  1190. PSExistRestriction = ^TSExistRestriction;
  1191. _SExistRestriction = record
  1192. ulReserved1: ULONG;
  1193. ulPropTag: ULONG;
  1194. ulReserved2: ULONG;
  1195. end;
  1196. {$EXTERNALSYM _SExistRestriction}
  1197. TSExistRestriction = _SExistRestriction;
  1198. SExistRestriction = _SExistRestriction;
  1199. {$EXTERNALSYM SExistRestriction}
  1200. PSSubRestriction = ^TSSubRestriction;
  1201. _SSubRestriction = record
  1202. ulSubObject: ULONG;
  1203. lpRes: PSRestriction;
  1204. end;
  1205. {$EXTERNALSYM _SSubRestriction}
  1206. TSSubRestriction = _SSubRestriction;
  1207. SSubRestriction = _SSubRestriction;
  1208. {$EXTERNALSYM SSubRestriction}
  1209. PSCommentRestriction = ^TSCommentRestriction;
  1210. _SCommentRestriction = record
  1211. cValues: ULONG; // # of properties in lpProp *:
  1212. lpRes: PSRestriction;
  1213. lpProp: PSPropValue;
  1214. end;
  1215. {$EXTERNALSYM _SCommentRestriction}
  1216. TSCommentRestriction = _SCommentRestriction;
  1217. SCommentRestriction = _SCommentRestriction;
  1218. {$EXTERNALSYM SCommentRestriction}
  1219. _SRestriction = record
  1220. rt: ULONG; // Restriction type
  1221. case Integer of
  1222. 1: (resCompareProps: SComparePropsRestriction;); // first
  1223. 2: (resAnd: TSAndRestriction;);
  1224. 3: (resOr: TSOrRestriction;);
  1225. 4: (resNot: TSNotRestriction;);
  1226. 5: (resContent: TSContentRestriction;);
  1227. 6: (resProperty: TSPropertyRestriction;);
  1228. 7: (resBitMask: TSBitMaskRestriction;);
  1229. 8: (resSize: TSSizeRestriction;);
  1230. 9: (resExist: TSExistRestriction;);
  1231. 10: (resSub: TSSubRestriction;);
  1232. 11: (resComment: TSCommentRestriction;);
  1233. end;
  1234. {$EXTERNALSYM _SRestriction}
  1235. TSRestriction = _SRestriction;
  1236. { SComparePropsRestriction is first in the union so that static initializations }
  1237. { of 3-value restriction work }
  1238. { Flags of the methods of IMAPITable }
  1239. { QueryColumn }
  1240. const
  1241. TBL_ALL_COLUMNS = ULONG($00000001);
  1242. {$EXTERNALSYM TBL_ALL_COLUMNS}
  1243. { QueryRows }
  1244. { Possible values for PR_ROW_TYPE (for categorization) }
  1245. TBL_LEAF_ROW = ULONG(1);
  1246. {$EXTERNALSYM TBL_LEAF_ROW}
  1247. TBL_EMPTY_CATEGORY = ULONG(2);
  1248. {$EXTERNALSYM TBL_EMPTY_CATEGORY}
  1249. TBL_EXPANDED_CATEGORY = ULONG(3);
  1250. {$EXTERNALSYM TBL_EXPANDED_CATEGORY}
  1251. TBL_COLLAPSED_CATEGORY = ULONG(4);
  1252. {$EXTERNALSYM TBL_COLLAPSED_CATEGORY}
  1253. { Table wait flag }
  1254. TBL_NOWAIT = ULONG($00000001);
  1255. {$EXTERNALSYM TBL_NOWAIT}
  1256. { alternative name for TBL_NOWAIT }
  1257. TBL_ASYNC = ULONG($00000001);
  1258. {$EXTERNALSYM TBL_ASYNC}
  1259. TBL_BATCH = ULONG($00000002);
  1260. {$EXTERNALSYM TBL_BATCH}
  1261. { FindRow }
  1262. DIR_BACKWARD = ULONG($00000001);
  1263. {$EXTERNALSYM DIR_BACKWARD}
  1264. { Table cursor states }
  1265. TBL_NOADVANCE = ULONG($00000001);
  1266. {$EXTERNALSYM TBL_NOADVANCE}
  1267. type
  1268. IMAPITable = interface(IUnknown)
  1269. function GetLastError(hResult: HRESULT; ulFlags: ULONG;
  1270. var lppMAPIError: TMapiError): HResult; stdcall;
  1271. function Advise(ulEventMask: ULONG; lpAdviseSink: IMAPIAdviseSink;
  1272. var lpulConnection: ULONG): HResult; stdcall;
  1273. function Unadvise(ulConnection: ULONG): HResult; stdcall;
  1274. function GetStatus(var lpulTableStatus, lpulTableType: ULONG): HResult; stdcall;
  1275. function SetColumns(lpPropTagArray: PSPropTagArray; ulFlags: ULONG): HResult; stdcall;
  1276. function QueryColumns(ulFlags: ULONG; var lpPropTagArray: PSPropTagArray): HResult; stdcall;
  1277. function GetRowCount(ulFlags: ULONG; var lpulCount: ULONG): HResult; stdcall;
  1278. function SeekRow(bkOrigin: TBookMark; lRowCount: LongInt; lplRowsSought: PLongInt): HResult; stdcall;
  1279. function SeekRowApprox(ulNumerator, ulDenominator: ULONG): HResult; stdcall;
  1280. function QueryPosition(var lpulRow, lpulNumerator, lpulDenominator: ULONG): HResult; stdcall;
  1281. function FindRow(lpRestriction: PSRestriction; bkOrigin: TBookMark;
  1282. ulFlags: ULONG): HResult; stdcall;
  1283. function Restrict(lpRestriction: PSRestriction; ulFlags: ULONG): HResult; stdcall;
  1284. function CreateBookmark(var lpbkPosition: TBookMark): HResult; stdcall;
  1285. function FreeBookmark(bkPosition: TBookMark): HResult; stdcall;
  1286. function SortTable(lpSortCriteria: PSSortOrderSet; ulFlags: ULONG): HResult; stdcall;
  1287. function QuerySortOrder(var lppSortCriteria: PSSortOrderSet): HResult; stdcall;
  1288. function QueryRows(lRowCount: LongInt; ulFlags: ULONG; var lppRows: PSRowSet): HResult; stdcall;
  1289. function Abort: HResult; stdcall;
  1290. function ExpandRow(cbInstanceKey: ULONG; pbInstanceKey: Pointer;
  1291. ulRowCount, ulFlags: ULONG; lppRows: PSRowSet; var lpulMoreRows: ULONG): HResult; stdcall;
  1292. function CollapseRow(cbInstanceKey: ULONG; pbInstanceKey: Pointer;
  1293. ulFlags: ULONG; var lpulRowCount: ULONG): HResult; stdcall;
  1294. function WaitForCompletion(ulFlags, ulTimeout: ULONG; lpulTableStatus: PULONG): HResult; stdcall;
  1295. function GetCollapseState(ulFlags, cbInstanceKey: ULONG; lpbInstanceKey: Pointer;
  1296. var lpcbCollapseState: ULONG; var lppbCollapseState: Pointer): HResult; stdcall;
  1297. function SetCollapseState(ulFlags, cbCollapseState: ULONG; pbCollapseState: Pointer;
  1298. var lpbkLocation: TBookMark): HResult; stdcall;
  1299. end;
  1300. {$EXTERNALSYM IMAPITable}
  1301. { IProfSect Interface ----------------------------------------------------- }
  1302. { Standard section for public profile properties }
  1303. const
  1304. PS_PROFILE_PROPERTIES_INIT: array[0..15] of Byte =
  1305. ($98, $15, $AC, $08, $AA, $B0, $10, $1A,
  1306. $8C, $93, $08, $00, $2B, $2A, $56, $C2);
  1307. {$EXTERNALSYM PS_PROFILE_PROPERTIES_INIT}
  1308. type
  1309. IProfSect = interface(IMAPIProp)
  1310. end;
  1311. {$EXTERNALSYM IProfSect}
  1312. { IMAPIStatus Interface --------------------------------------------------- }
  1313. { Values for PR_RESOURCE_TYPE, _METHODS, _FLAGS }
  1314. const
  1315. MAPI_STORE_PROVIDER = ULONG(33); // Message Store
  1316. {$EXTERNALSYM MAPI_STORE_PROVIDER}
  1317. MAPI_AB = ULONG(34); // Address Book
  1318. {$EXTERNALSYM MAPI_AB}
  1319. MAPI_AB_PROVIDER = ULONG(35); // Address Book Provider
  1320. {$EXTERNALSYM MAPI_AB_PROVIDER}
  1321. MAPI_TRANSPORT_PROVIDER = ULONG(36); // Transport Provider
  1322. {$EXTERNALSYM MAPI_TRANSPORT_PROVIDER}
  1323. MAPI_SPOOLER = ULONG(37); // Message Spooler
  1324. {$EXTERNALSYM MAPI_SPOOLER}
  1325. MAPI_PROFILE_PROVIDER = ULONG(38); // Profile Provider
  1326. {$EXTERNALSYM MAPI_PROFILE_PROVIDER}
  1327. MAPI_SUBSYSTEM = ULONG(39); // Overall Subsystem Status
  1328. {$EXTERNALSYM MAPI_SUBSYSTEM}
  1329. MAPI_HOOK_PROVIDER = ULONG(40); // Spooler Hook
  1330. {$EXTERNALSYM MAPI_HOOK_PROVIDER}
  1331. STATUS_VALIDATE_STATE = ULONG($00000001);
  1332. {$EXTERNALSYM STATUS_VALIDATE_STATE}
  1333. STATUS_SETTINGS_DIALOG = ULONG($00000002);
  1334. {$EXTERNALSYM STATUS_SETTINGS_DIALOG}
  1335. STATUS_CHANGE_PASSWORD = ULONG($00000004);
  1336. {$EXTERNALSYM STATUS_CHANGE_PASSWORD}
  1337. STATUS_FLUSH_QUEUES = ULONG($00000008);
  1338. {$EXTERNALSYM STATUS_FLUSH_QUEUES}
  1339. STATUS_DEFAULT_OUTBOUND = ULONG($00000001);
  1340. {$EXTERNALSYM STATUS_DEFAULT_OUTBOUND}
  1341. STATUS_DEFAULT_STORE = ULONG($00000002);
  1342. {$EXTERNALSYM STATUS_DEFAULT_STORE}
  1343. STATUS_PRIMARY_IDENTITY = ULONG($00000004);
  1344. {$EXTERNALSYM STATUS_PRIMARY_IDENTITY}
  1345. STATUS_SIMPLE_STORE = ULONG($00000008);
  1346. {$EXTERNALSYM STATUS_SIMPLE_STORE}
  1347. STATUS_XP_PREFER_LAST = ULONG($00000010);
  1348. {$EXTERNALSYM STATUS_XP_PREFER_LAST}
  1349. STATUS_NO_PRIMARY_IDENTITY = ULONG($00000020);
  1350. {$EXTERNALSYM STATUS_NO_PRIMARY_IDENTITY}
  1351. STATUS_NO_DEFAULT_STORE = ULONG($00000040);
  1352. {$EXTERNALSYM STATUS_NO_DEFAULT_STORE}
  1353. STATUS_TEMP_SECTION = ULONG($00000080);
  1354. {$EXTERNALSYM STATUS_TEMP_SECTION}
  1355. STATUS_OWN_STORE = ULONG($00000100);
  1356. {$EXTERNALSYM STATUS_OWN_STORE}
  1357. //***** HOOK_INBOUND ((ULONG) 0x00000200) Defined in MAPIHOOK.H
  1358. //***** HOOK_OUTBOUND ((ULONG) 0x00000400) Defined in MAPIHOOK.H
  1359. STATUS_NEED_IPM_TREE = ULONG($00000800);
  1360. {$EXTERNALSYM STATUS_NEED_IPM_TREE}
  1361. STATUS_PRIMARY_STORE = ULONG($00001000);
  1362. {$EXTERNALSYM STATUS_PRIMARY_STORE}
  1363. STATUS_SECONDARY_STORE = ULONG($00002000);
  1364. {$EXTERNALSYM STATUS_SECONDARY_STORE}
  1365. {* PR_STATUS_CODE bit. Low 16 bits for common values; High 16 bits
  1366. * for provider type-specific values. (DCR 304)
  1367. }
  1368. STATUS_AVAILABLE = ULONG($00000001);
  1369. {$EXTERNALSYM STATUS_AVAILABLE}
  1370. STATUS_OFFLINE = ULONG($00000002);
  1371. {$EXTERNALSYM STATUS_OFFLINE}
  1372. STATUS_FAILURE = ULONG($00000004);
  1373. {$EXTERNALSYM STATUS_FAILURE}
  1374. { Transport values of PR_STATUS_CODE }
  1375. STATUS_INBOUND_ENABLED = ULONG($00010000);
  1376. {$EXTERNALSYM STATUS_INBOUND_ENABLED}
  1377. STATUS_INBOUND_ACTIVE = ULONG($00020000);
  1378. {$EXTERNALSYM STATUS_INBOUND_ACTIVE}
  1379. STATUS_INBOUND_FLUSH = ULONG($00040000);
  1380. {$EXTERNALSYM STATUS_INBOUND_FLUSH}
  1381. STATUS_OUTBOUND_ENABLED = ULONG($00100000);
  1382. {$EXTERNALSYM STATUS_OUTBOUND_ENABLED}
  1383. STATUS_OUTBOUND_ACTIVE = ULONG($00200000);
  1384. {$EXTERNALSYM STATUS_OUTBOUND_ACTIVE}
  1385. STATUS_OUTBOUND_FLUSH = ULONG($00400000);
  1386. {$EXTERNALSYM STATUS_OUTBOUND_FLUSH}
  1387. STATUS_REMOTE_ACCESS = ULONG($00800000);
  1388. {$EXTERNALSYM STATUS_REMOTE_ACCESS}
  1389. { ValidateState flags }
  1390. SUPPRESS_UI = ULONG($00000001);
  1391. {$EXTERNALSYM SUPPRESS_UI}
  1392. REFRESH_XP_HEADER_CACHE = ULONG($00010000);
  1393. {$EXTERNALSYM REFRESH_XP_HEADER_CACHE}
  1394. PROCESS_XP_HEADER_CACHE = ULONG($00020000);
  1395. {$EXTERNALSYM PROCESS_XP_HEADER_CACHE}
  1396. FORCE_XP_CONNECT = ULONG($00040000);
  1397. {$EXTERNALSYM FORCE_XP_CONNECT}
  1398. FORCE_XP_DISCONNECT = ULONG($00080000);
  1399. {$EXTERNALSYM FORCE_XP_DISCONNECT}
  1400. CONFIG_CHANGED = ULONG($00100000);
  1401. {$EXTERNALSYM CONFIG_CHANGED}
  1402. ABORT_XP_HEADER_OPERATION = ULONG($00200000);
  1403. {$EXTERNALSYM ABORT_XP_HEADER_OPERATION}
  1404. SHOW_XP_SESSION_UI = ULONG($00400000);
  1405. {$EXTERNALSYM SHOW_XP_SESSION_UI}
  1406. { SettingsDialog flags }
  1407. UI_READONLY = ULONG($00000001);
  1408. {$EXTERNALSYM UI_READONLY}
  1409. { FlushQueues flags }
  1410. FLUSH_UPLOAD = ULONG($00000002);
  1411. {$EXTERNALSYM FLUSH_UPLOAD}
  1412. FLUSH_DOWNLOAD = ULONG($00000004);
  1413. {$EXTERNALSYM FLUSH_DOWNLOAD}
  1414. FLUSH_FORCE = ULONG($00000008);
  1415. {$EXTERNALSYM FLUSH_FORCE}
  1416. FLUSH_NO_UI = ULONG($00000010);
  1417. {$EXTERNALSYM FLUSH_NO_UI}
  1418. FLUSH_ASYNC_OK = ULONG($00000020);
  1419. {$EXTERNALSYM FLUSH_ASYNC_OK}
  1420. type
  1421. IMAPIStatus = interface(IMAPIProp)
  1422. function ValidateState(ulUIParam, ulFlags: ULONG): HResult; stdcall;
  1423. function SettingsDialog(ulUIParam, ulFlags: ULONG): HResult; stdcall;
  1424. function ChangePassword(lpOldPass, lpNewPass: LPTSTR; ulFlags: ULONG): HResult; stdcall;
  1425. function FlushQueues(ulUIParam, cbTargetTransport: ULONG;
  1426. lpTargetTransport: PEntryID; ulFlags: ULONG): HResult; stdcall;
  1427. end;
  1428. {$EXTERNALSYM IMAPIStatus}
  1429. { IMAPIContainer Interface ------------------------------------------------ }
  1430. { Flags for OpenEntry() }
  1431. const
  1432. //***** MAPI_MODIFY ((ULONG) 0x00000001) above
  1433. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  1434. MAPI_BEST_ACCESS = ULONG($00000010);
  1435. {$EXTERNALSYM MAPI_BEST_ACCESS}
  1436. { GetContentsTable() }
  1437. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1438. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  1439. //***** MAPI_ASSOCIATED ((ULONG) 0x00000040) below
  1440. WAB_LOCAL_CONTAINERS = $00100000;
  1441. {$EXTERNALSYM WAB_LOCAL_CONTAINERS}
  1442. WAB_PROFILE_CONTENTS = $00200000;
  1443. {$EXTERNALSYM WAB_PROFILE_CONTENTS}
  1444. { GetHierarchyTable() }
  1445. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1446. CONVENIENT_DEPTH = ULONG($00000001);
  1447. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  1448. { GetSearchCriteria }
  1449. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1450. SEARCH_RUNNING = ULONG($00000001);
  1451. {$EXTERNALSYM SEARCH_RUNNING}
  1452. SEARCH_REBUILD = ULONG($00000002);
  1453. {$EXTERNALSYM SEARCH_REBUILD}
  1454. SEARCH_RECURSIVE = ULONG($00000004);
  1455. {$EXTERNALSYM SEARCH_RECURSIVE}
  1456. SEARCH_FOREGROUND = ULONG($00000008);
  1457. {$EXTERNALSYM SEARCH_FOREGROUND}
  1458. { SetSearchCriteria }
  1459. STOP_SEARCH = ULONG($00000001);
  1460. {$EXTERNALSYM STOP_SEARCH}
  1461. RESTART_SEARCH = ULONG($00000002);
  1462. {$EXTERNALSYM RESTART_SEARCH}
  1463. RECURSIVE_SEARCH = ULONG($00000004);
  1464. {$EXTERNALSYM RECURSIVE_SEARCH}
  1465. SHALLOW_SEARCH = ULONG($00000008);
  1466. {$EXTERNALSYM SHALLOW_SEARCH}
  1467. FOREGROUND_SEARCH = ULONG($00000010);
  1468. {$EXTERNALSYM FOREGROUND_SEARCH}
  1469. BACKGROUND_SEARCH = ULONG($00000020);
  1470. {$EXTERNALSYM BACKGROUND_SEARCH}
  1471. type
  1472. IMAPIContainer = interface(IMAPIProp)
  1473. function GetContentsTable(ulFlags: ULONG; out lppTable: IMAPITable): HResult; stdcall;
  1474. function GetHierarchyTable(ulFlags: ULONG; out lppTable: IMAPITable): HResult; stdcall;
  1475. function OpenEntry(cbEntryID: ULONG; lpEntryID: PEntryID; lpInterface: PIID;
  1476. ulFlags: ULONG; var lpulObjType: ULONG; out lppUnk: IUnknown): HResult; stdcall;
  1477. function SetSearchCriteria(lpRestriction: PSRestriction;
  1478. lpContainerList: PEntryList; ulSearchFlags: ULONG): HResult; stdcall;
  1479. function GetSearchCriteria(ulFlags: ULONG; var lppRestriction: PSRestriction;
  1480. var lppContainerList: PEntryList; var lpulSearchState: ULONG): HResult; stdcall;
  1481. end;
  1482. {$EXTERNALSYM IMAPIContainer}
  1483. { IABContainer Interface -------------------------------------------------- }
  1484. {* IABContainer PR_CONTAINER_FLAGS values
  1485. * If AB_UNMODIFIABLE and AB_MODIFIABLE are both set, it means the container
  1486. * doesn't know if it's modifiable or not, and the client should
  1487. * try to modify the contents but we won't expect it to work.
  1488. * If the AB_RECIPIENTS flag is set and neither AB_MODIFIABLE or AB_UNMODIFIABLE
  1489. * bits are set, it is an error.
  1490. }
  1491. PFlagList = ^TFlagList;
  1492. _flaglist = record
  1493. cFlags: ULONG;
  1494. ulFlag: array[0..MAPI_DIM-1] of ULONG;
  1495. end;
  1496. {$EXTERNALSYM _flaglist}
  1497. TFlagList = _flaglist;
  1498. { Container flags }
  1499. const
  1500. AB_RECIPIENTS = ULONG($00000001);
  1501. {$EXTERNALSYM AB_RECIPIENTS}
  1502. AB_SUBCONTAINERS = ULONG($00000002);
  1503. {$EXTERNALSYM AB_SUBCONTAINERS}
  1504. AB_MODIFIABLE = ULONG($00000004);
  1505. {$EXTERNALSYM AB_MODIFIABLE}
  1506. AB_UNMODIFIABLE = ULONG($00000008);
  1507. {$EXTERNALSYM AB_UNMODIFIABLE}
  1508. AB_FIND_ON_OPEN = ULONG($00000010);
  1509. {$EXTERNALSYM AB_FIND_ON_OPEN}
  1510. AB_NOT_DEFAULT = ULONG($00000020);
  1511. {$EXTERNALSYM AB_NOT_DEFAULT}
  1512. { CreateEntry() }
  1513. CREATE_CHECK_DUP_STRICT = ULONG($00000001);
  1514. {$EXTERNALSYM CREATE_CHECK_DUP_STRICT}
  1515. CREATE_CHECK_DUP_LOOSE = ULONG($00000002);
  1516. {$EXTERNALSYM CREATE_CHECK_DUP_LOOSE}
  1517. CREATE_REPLACE = ULONG($00000004);
  1518. {$EXTERNALSYM CREATE_REPLACE}
  1519. CREATE_MERGE = ULONG($00000008);
  1520. {$EXTERNALSYM CREATE_MERGE}
  1521. { ResolveNames() - ulFlags }
  1522. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1523. WAB_IGNORE_PROFILES = $00800000;
  1524. {$EXTERNALSYM WAB_IGNORE_PROFILES}
  1525. { ResolveNames() - rgulFlags }
  1526. MAPI_UNRESOLVED = ULONG($00000000);
  1527. {$EXTERNALSYM MAPI_UNRESOLVED}
  1528. MAPI_AMBIGUOUS = ULONG($00000001);
  1529. {$EXTERNALSYM MAPI_AMBIGUOUS}
  1530. MAPI_RESOLVED = ULONG($00000002);
  1531. {$EXTERNALSYM MAPI_RESOLVED}
  1532. type
  1533. IABContainer = interface(IMAPIContainer)
  1534. function CreateEntry(cbEntryID: ULONG; lpEntryID: PEntryID;
  1535. ulCreateFlags: ULONG; out lppMAPIPropEntry: IMAPIProp): HResult; stdcall;
  1536. function CopyEntries(lpEntries: PEntryList; ulUIParam: ULONG;
  1537. lpProgress: IMAPIProgress; ulFlags: ULONG): HResult; stdcall;
  1538. function DeleteEntries(lpEntries: PEntryList; ulFlags: ULONG): HResult; stdcall;
  1539. function ResolveNames(lpPropTagArray: PSPropTagArray; ulFlags: ULONG;
  1540. lpAdrList: PAdrList; lpFlagList: PFlagList): HResult; stdcall;
  1541. end;
  1542. {$EXTERNALSYM IABContainer}
  1543. { IMailUser Interface ----------------------------------------------------- }
  1544. {* Any call which can create a one-off entryID (i.e. MAPISupport::CreateOneOff
  1545. or IAddrBook::CreateOneOff) can encode the value for PR_SEND_RICH_INFO by
  1546. passing in the following flag in the ulFlags parameter. Setting this flag
  1547. indicates that PR_SEND_RICH_INFO will be FALSE.
  1548. *}
  1549. const
  1550. MAPI_SEND_NO_RICH_INFO = ULONG($00010000);
  1551. {$EXTERNALSYM MAPI_SEND_NO_RICH_INFO}
  1552. { Values of PR_NDR_DIAG_CODE }
  1553. MAPI_DIAG_NO_DIAGNOSTIC = -1;
  1554. {$EXTERNALSYM MAPI_DIAG_NO_DIAGNOSTIC}
  1555. MAPI_DIAG_OR_NAME_UNRECOGNIZED = 0;
  1556. {$EXTERNALSYM MAPI_DIAG_OR_NAME_UNRECOGNIZED}
  1557. MAPI_DIAG_OR_NAME_AMBIGUOUS = 1;
  1558. {$EXTERNALSYM MAPI_DIAG_OR_NAME_AMBIGUOUS}
  1559. MAPI_DIAG_MTS_CONGESTED = 2;
  1560. {$EXTERNALSYM MAPI_DIAG_MTS_CONGESTED}
  1561. MAPI_DIAG_LOOP_DETECTED = 3;
  1562. {$EXTERNALSYM MAPI_DIAG_LOOP_DETECTED}
  1563. MAPI_DIAG_RECIPIENT_UNAVAILABLE = 4;
  1564. {$EXTERNALSYM MAPI_DIAG_RECIPIENT_UNAVAILABLE}
  1565. MAPI_DIAG_MAXIMUM_TIME_EXPIRED = 5;
  1566. {$EXTERNALSYM MAPI_DIAG_MAXIMUM_TIME_EXPIRED}
  1567. MAPI_DIAG_EITS_UNSUPPORTED = 6;
  1568. {$EXTERNALSYM MAPI_DIAG_EITS_UNSUPPORTED}
  1569. MAPI_DIAG_CONTENT_TOO_LONG = 7;
  1570. {$EXTERNALSYM MAPI_DIAG_CONTENT_TOO_LONG}
  1571. MAPI_DIAG_IMPRACTICAL_TO_CONVERT = 8;
  1572. {$EXTERNALSYM MAPI_DIAG_IMPRACTICAL_TO_CONVERT}
  1573. MAPI_DIAG_PROHIBITED_TO_CONVERT = 9;
  1574. {$EXTERNALSYM MAPI_DIAG_PROHIBITED_TO_CONVERT}
  1575. MAPI_DIAG_CONVERSION_UNSUBSCRIBED = 10;
  1576. {$EXTERNALSYM MAPI_DIAG_CONVERSION_UNSUBSCRIBED}
  1577. MAPI_DIAG_PARAMETERS_INVALID = 11;
  1578. {$EXTERNALSYM MAPI_DIAG_PARAMETERS_INVALID}
  1579. MAPI_DIAG_CONTENT_SYNTAX_IN_ERROR = 12;
  1580. {$EXTERNALSYM MAPI_DIAG_CONTENT_SYNTAX_IN_ERROR}
  1581. MAPI_DIAG_LENGTH_CONSTRAINT_VIOLATD = 13;
  1582. {$EXTERNALSYM MAPI_DIAG_LENGTH_CONSTRAINT_VIOLATD}
  1583. MAPI_DIAG_NUMBER_CONSTRAINT_VIOLATD = 14;
  1584. {$EXTERNALSYM MAPI_DIAG_NUMBER_CONSTRAINT_VIOLATD}
  1585. MAPI_DIAG_CONTENT_TYPE_UNSUPPORTED = 15;
  1586. {$EXTERNALSYM MAPI_DIAG_CONTENT_TYPE_UNSUPPORTED}
  1587. MAPI_DIAG_TOO_MANY_RECIPIENTS = 16;
  1588. {$EXTERNALSYM MAPI_DIAG_TOO_MANY_RECIPIENTS}
  1589. MAPI_DIAG_NO_BILATERAL_AGREEMENT = 17;
  1590. {$EXTERNALSYM MAPI_DIAG_NO_BILATERAL_AGREEMENT}
  1591. MAPI_DIAG_CRITICAL_FUNC_UNSUPPORTED = 18;
  1592. {$EXTERNALSYM MAPI_DIAG_CRITICAL_FUNC_UNSUPPORTED}
  1593. MAPI_DIAG_CONVERSION_LOSS_PROHIB = 19;
  1594. {$EXTERNALSYM MAPI_DIAG_CONVERSION_LOSS_PROHIB}
  1595. MAPI_DIAG_LINE_TOO_LONG = 20;
  1596. {$EXTERNALSYM MAPI_DIAG_LINE_TOO_LONG}
  1597. MAPI_DIAG_PAGE_TOO_LONG = 21;
  1598. {$EXTERNALSYM MAPI_DIAG_PAGE_TOO_LONG}
  1599. MAPI_DIAG_PICTORIAL_SYMBOL_LOST = 22;
  1600. {$EXTERNALSYM MAPI_DIAG_PICTORIAL_SYMBOL_LOST}
  1601. MAPI_DIAG_PUNCTUATION_SYMBOL_LOST = 23;
  1602. {$EXTERNALSYM MAPI_DIAG_PUNCTUATION_SYMBOL_LOST}
  1603. MAPI_DIAG_ALPHABETIC_CHARACTER_LOST = 24;
  1604. {$EXTERNALSYM MAPI_DIAG_ALPHABETIC_CHARACTER_LOST}
  1605. MAPI_DIAG_MULTIPLE_INFO_LOSSES = 25;
  1606. {$EXTERNALSYM MAPI_DIAG_MULTIPLE_INFO_LOSSES}
  1607. MAPI_DIAG_REASSIGNMENT_PROHIBITED = 26;
  1608. {$EXTERNALSYM MAPI_DIAG_REASSIGNMENT_PROHIBITED}
  1609. MAPI_DIAG_REDIRECTION_LOOP_DETECTED = 27;
  1610. {$EXTERNALSYM MAPI_DIAG_REDIRECTION_LOOP_DETECTED}
  1611. MAPI_DIAG_EXPANSION_PROHIBITED = 28;
  1612. {$EXTERNALSYM MAPI_DIAG_EXPANSION_PROHIBITED}
  1613. MAPI_DIAG_SUBMISSION_PROHIBITED = 29;
  1614. {$EXTERNALSYM MAPI_DIAG_SUBMISSION_PROHIBITED}
  1615. MAPI_DIAG_EXPANSION_FAILED = 30;
  1616. {$EXTERNALSYM MAPI_DIAG_EXPANSION_FAILED}
  1617. MAPI_DIAG_RENDITION_UNSUPPORTED = 31;
  1618. {$EXTERNALSYM MAPI_DIAG_RENDITION_UNSUPPORTED}
  1619. MAPI_DIAG_MAIL_ADDRESS_INCORRECT = 32;
  1620. {$EXTERNALSYM MAPI_DIAG_MAIL_ADDRESS_INCORRECT}
  1621. MAPI_DIAG_MAIL_OFFICE_INCOR_OR_INVD = 33;
  1622. {$EXTERNALSYM MAPI_DIAG_MAIL_OFFICE_INCOR_OR_INVD}
  1623. MAPI_DIAG_MAIL_ADDRESS_INCOMPLETE = 34;
  1624. {$EXTERNALSYM MAPI_DIAG_MAIL_ADDRESS_INCOMPLETE}
  1625. MAPI_DIAG_MAIL_RECIPIENT_UNKNOWN = 35;
  1626. {$EXTERNALSYM MAPI_DIAG_MAIL_RECIPIENT_UNKNOWN}
  1627. MAPI_DIAG_MAIL_RECIPIENT_DECEASED = 36;
  1628. {$EXTERNALSYM MAPI_DIAG_MAIL_RECIPIENT_DECEASED}
  1629. MAPI_DIAG_MAIL_ORGANIZATION_EXPIRED = 37;
  1630. {$EXTERNALSYM MAPI_DIAG_MAIL_ORGANIZATION_EXPIRED}
  1631. MAPI_DIAG_MAIL_REFUSED = 38;
  1632. {$EXTERNALSYM MAPI_DIAG_MAIL_REFUSED}
  1633. MAPI_DIAG_MAIL_UNCLAIMED = 39;
  1634. {$EXTERNALSYM MAPI_DIAG_MAIL_UNCLAIMED}
  1635. MAPI_DIAG_MAIL_RECIPIENT_MOVED = 40;
  1636. {$EXTERNALSYM MAPI_DIAG_MAIL_RECIPIENT_MOVED}
  1637. MAPI_DIAG_MAIL_RECIPIENT_TRAVELLING = 41;
  1638. {$EXTERNALSYM MAPI_DIAG_MAIL_RECIPIENT_TRAVELLING}
  1639. MAPI_DIAG_MAIL_RECIPIENT_DEPARTED = 42;
  1640. {$EXTERNALSYM MAPI_DIAG_MAIL_RECIPIENT_DEPARTED}
  1641. MAPI_DIAG_MAIL_NEW_ADDRESS_UNKNOWN = 43;
  1642. {$EXTERNALSYM MAPI_DIAG_MAIL_NEW_ADDRESS_UNKNOWN}
  1643. MAPI_DIAG_MAIL_FORWARDING_UNWANTED = 44;
  1644. {$EXTERNALSYM MAPI_DIAG_MAIL_FORWARDING_UNWANTED}
  1645. MAPI_DIAG_MAIL_FORWARDING_PROHIB = 45;
  1646. {$EXTERNALSYM MAPI_DIAG_MAIL_FORWARDING_PROHIB}
  1647. MAPI_DIAG_SECURE_MESSAGING_ERROR = 46;
  1648. {$EXTERNALSYM MAPI_DIAG_SECURE_MESSAGING_ERROR}
  1649. MAPI_DIAG_DOWNGRADING_IMPOSSIBLE = 47;
  1650. {$EXTERNALSYM MAPI_DIAG_DOWNGRADING_IMPOSSIBLE}
  1651. type
  1652. IMailUser = interface(IMAPIProp)
  1653. end;
  1654. {$EXTERNALSYM IMailUser}
  1655. { IDistList Interface ----------------------------------------------------- }
  1656. IDistList = interface(IMAPIContainer)
  1657. function CreateEntry(cbEntryID: ULONG; lpEntryID: PEntryID;
  1658. ulCreateFlags: ULONG; out lppMAPIPropEntry: IMAPIProp): HResult; stdcall;
  1659. function CopyEntries(lpEntries: PEntryList; ulUIParam: ULONG;
  1660. lpProgress: IMAPIProgress; ulFlags: ULONG): HResult; stdcall;
  1661. function DeleteEntries(lpEntries: PEntryList; ulFlags: ULONG): HResult; stdcall;
  1662. function ResolveNames(lpPropTagArray: PSPropTagArray; ulFlags: ULONG;
  1663. lpAdrList: PAdrList; lpFlagList: PFlagList): HResult; stdcall;
  1664. end;
  1665. {$EXTERNALSYM IDistList}
  1666. { IMAPIFolder Interface --------------------------------------------------- }
  1667. { IMAPIFolder folder type (enum) }
  1668. const
  1669. FOLDER_ROOT = ULONG($00000000);
  1670. {$EXTERNALSYM FOLDER_ROOT}
  1671. FOLDER_GENERIC = ULONG($00000001);
  1672. {$EXTERNALSYM FOLDER_GENERIC}
  1673. FOLDER_SEARCH = ULONG($00000002);
  1674. {$EXTERNALSYM FOLDER_SEARCH}
  1675. { CreateMessage }
  1676. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  1677. //***** MAPI_ASSOCIATED ((ULONG) 0x00000040) below
  1678. { CopyMessages }
  1679. MESSAGE_MOVE = ULONG($00000001);
  1680. {$EXTERNALSYM MESSAGE_MOVE}
  1681. MESSAGE_DIALOG = ULONG($00000002);
  1682. {$EXTERNALSYM MESSAGE_DIALOG}
  1683. //***** MAPI_DECLINE_OK ((ULONG) 0x00000004) above
  1684. { CreateFolder }
  1685. OPEN_IF_EXISTS = ULONG($00000001);
  1686. {$EXTERNALSYM OPEN_IF_EXISTS}
  1687. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  1688. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1689. { DeleteFolder }
  1690. DEL_MESSAGES = ULONG($00000001);
  1691. {$EXTERNALSYM DEL_MESSAGES}
  1692. FOLDER_DIALOG = ULONG($00000002);
  1693. {$EXTERNALSYM FOLDER_DIALOG}
  1694. DEL_FOLDERS = ULONG($00000004);
  1695. {$EXTERNALSYM DEL_FOLDERS}
  1696. { EmptyFolder }
  1697. DEL_ASSOCIATED = ULONG($00000008);
  1698. {$EXTERNALSYM DEL_ASSOCIATED}
  1699. { CopyFolder }
  1700. FOLDER_MOVE = ULONG($00000001);
  1701. {$EXTERNALSYM FOLDER_MOVE}
  1702. //***** FOLDER_DIALOG ((ULONG) 0x00000002) above
  1703. //***** MAPI_DECLINE_OK ((ULONG) 0x00000004) above
  1704. COPY_SUBFOLDERS = ULONG($00000010);
  1705. {$EXTERNALSYM COPY_SUBFOLDERS}
  1706. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1707. { SetReadFlags }
  1708. //***** SUPPRESS_RECEIPT ((ULONG) 0x00000001) below
  1709. //***** MESSAGE_DIALOG ((ULONG) 0x00000002) above
  1710. //***** CLEAR_READ_FLAG ((ULONG) 0x00000004) below
  1711. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  1712. GENERATE_RECEIPT_ONLY = ULONG($00000010);
  1713. {$EXTERNALSYM GENERATE_RECEIPT_ONLY}
  1714. { GetMessageStatus }
  1715. MSGSTATUS_HIGHLIGHTED = ULONG($00000001);
  1716. {$EXTERNALSYM MSGSTATUS_HIGHLIGHTED}
  1717. MSGSTATUS_TAGGED = ULONG($00000002);
  1718. {$EXTERNALSYM MSGSTATUS_TAGGED}
  1719. MSGSTATUS_HIDDEN = ULONG($00000004);
  1720. {$EXTERNALSYM MSGSTATUS_HIDDEN}
  1721. MSGSTATUS_DELMARKED = ULONG($00000008);
  1722. {$EXTERNALSYM MSGSTATUS_DELMARKED}
  1723. { Bits for remote message status }
  1724. MSGSTATUS_REMOTE_DOWNLOAD = ULONG($00001000);
  1725. {$EXTERNALSYM MSGSTATUS_REMOTE_DOWNLOAD}
  1726. MSGSTATUS_REMOTE_DELETE = ULONG($00002000);
  1727. {$EXTERNALSYM MSGSTATUS_REMOTE_DELETE}
  1728. { SaveContentsSort }
  1729. RECURSIVE_SORT = ULONG($00000002);
  1730. {$EXTERNALSYM RECURSIVE_SORT}
  1731. { PR_STATUS property }
  1732. FLDSTATUS_HIGHLIGHTED = ULONG($00000001);
  1733. {$EXTERNALSYM FLDSTATUS_HIGHLIGHTED}
  1734. FLDSTATUS_TAGGED = ULONG($00000002);
  1735. {$EXTERNALSYM FLDSTATUS_TAGGED}
  1736. FLDSTATUS_HIDDEN = ULONG($00000004);
  1737. {$EXTERNALSYM FLDSTATUS_HIDDEN}
  1738. FLDSTATUS_DELMARKED = ULONG($00000008);
  1739. {$EXTERNALSYM FLDSTATUS_DELMARKED}
  1740. { IMsgStore Interface ----------------------------------------------------- }
  1741. { PR_STORE_SUPPORT_MASK bits }
  1742. const
  1743. STORE_ENTRYID_UNIQUE = ULONG($00000001);
  1744. {$EXTERNALSYM STORE_ENTRYID_UNIQUE}
  1745. STORE_READONLY = ULONG($00000002);
  1746. {$EXTERNALSYM STORE_READONLY}
  1747. STORE_SEARCH_OK = ULONG($00000004);
  1748. {$EXTERNALSYM STORE_SEARCH_OK}
  1749. STORE_MODIFY_OK = ULONG($00000008);
  1750. {$EXTERNALSYM STORE_MODIFY_OK}
  1751. STORE_CREATE_OK = ULONG($00000010);
  1752. {$EXTERNALSYM STORE_CREATE_OK}
  1753. STORE_ATTACH_OK = ULONG($00000020);
  1754. {$EXTERNALSYM STORE_ATTACH_OK}
  1755. STORE_OLE_OK = ULONG($00000040);
  1756. {$EXTERNALSYM STORE_OLE_OK}
  1757. STORE_SUBMIT_OK = ULONG($00000080);
  1758. {$EXTERNALSYM STORE_SUBMIT_OK}
  1759. STORE_NOTIFY_OK = ULONG($00000100);
  1760. {$EXTERNALSYM STORE_NOTIFY_OK}
  1761. STORE_MV_PROPS_OK = ULONG($00000200);
  1762. {$EXTERNALSYM STORE_MV_PROPS_OK}
  1763. STORE_CATEGORIZE_OK = ULONG($00000400);
  1764. {$EXTERNALSYM STORE_CATEGORIZE_OK}
  1765. STORE_RTF_OK = ULONG($00000800);
  1766. {$EXTERNALSYM STORE_RTF_OK}
  1767. STORE_RESTRICTION_OK = ULONG($00001000);
  1768. {$EXTERNALSYM STORE_RESTRICTION_OK}
  1769. STORE_SORT_OK = ULONG($00002000);
  1770. {$EXTERNALSYM STORE_SORT_OK}
  1771. { PR_STORE_STATE bits, try not to collide with PR_STORE_SUPPORT_MASK }
  1772. STORE_HAS_SEARCHES = ULONG($01000000);
  1773. {$EXTERNALSYM STORE_HAS_SEARCHES}
  1774. { OpenEntry() }
  1775. //***** MAPI_MODIFY ((ULONG) 0x00000001) above
  1776. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  1777. //***** MAPI_BEST_ACCESS ((ULONG) 0x00000010) above
  1778. { SetReceiveFolder() }
  1779. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1780. { GetReceiveFolder() }
  1781. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1782. { GetReceiveFolderTable() }
  1783. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  1784. { StoreLogoff() }
  1785. LOGOFF_NO_WAIT = ULONG($00000001);
  1786. {$EXTERNALSYM LOGOFF_NO_WAIT}
  1787. LOGOFF_ORDERLY = ULONG($00000002);
  1788. {$EXTERNALSYM LOGOFF_ORDERLY}
  1789. LOGOFF_PURGE = ULONG($00000004);
  1790. {$EXTERNALSYM LOGOFF_PURGE}
  1791. LOGOFF_ABORT = ULONG($00000008);
  1792. {$EXTERNALSYM LOGOFF_ABORT}
  1793. LOGOFF_QUIET = ULONG($00000010);
  1794. {$EXTERNALSYM LOGOFF_QUIET}
  1795. LOGOFF_COMPLETE = ULONG($00010000);
  1796. {$EXTERNALSYM LOGOFF_COMPLETE}
  1797. LOGOFF_INBOUND = ULONG($00020000);
  1798. {$EXTERNALSYM LOGOFF_INBOUND}
  1799. LOGOFF_OUTBOUND = ULONG($00040000);
  1800. {$EXTERNALSYM LOGOFF_OUTBOUND}
  1801. LOGOFF_OUTBOUND_QUEUE = ULONG($00080000);
  1802. {$EXTERNALSYM LOGOFF_OUTBOUND_QUEUE}
  1803. { SetLockState() }
  1804. MSG_LOCKED = ULONG($00000001);
  1805. {$EXTERNALSYM MSG_LOCKED}
  1806. MSG_UNLOCKED = ULONG($00000000);
  1807. {$EXTERNALSYM MSG_UNLOCKED}
  1808. { Flag bits for PR_VALID_FOLDER_MASK }
  1809. FOLDER_IPM_SUBTREE_VALID = ULONG($00000001);
  1810. {$EXTERNALSYM FOLDER_IPM_SUBTREE_VALID}
  1811. FOLDER_IPM_INBOX_VALID = ULONG($00000002);
  1812. {$EXTERNALSYM FOLDER_IPM_INBOX_VALID}
  1813. FOLDER_IPM_OUTBOX_VALID = ULONG($00000004);
  1814. {$EXTERNALSYM FOLDER_IPM_OUTBOX_VALID}
  1815. FOLDER_IPM_WASTEBASKET_VALID = ULONG($00000008);
  1816. {$EXTERNALSYM FOLDER_IPM_WASTEBASKET_VALID}
  1817. FOLDER_IPM_SENTMAIL_VALID = ULONG($00000010);
  1818. {$EXTERNALSYM FOLDER_IPM_SENTMAIL_VALID}
  1819. FOLDER_VIEWS_VALID = ULONG($00000020);
  1820. {$EXTERNALSYM FOLDER_VIEWS_VALID}
  1821. FOLDER_COMMON_VIEWS_VALID = ULONG($00000040);
  1822. {$EXTERNALSYM FOLDER_COMMON_VIEWS_VALID}
  1823. FOLDER_FINDER_VALID = ULONG($00000080);
  1824. {$EXTERNALSYM FOLDER_FINDER_VALID}
  1825. { IMessage Interface ------------------------------------------------------ }
  1826. { SubmitMessage }
  1827. const
  1828. FORCE_SUBMIT = ULONG($00000001);
  1829. {$EXTERNALSYM FORCE_SUBMIT}
  1830. { Flags defined in PR_MESSAGE_FLAGS }
  1831. MSGFLAG_READ = ULONG($00000001);
  1832. {$EXTERNALSYM MSGFLAG_READ}
  1833. MSGFLAG_UNMODIFIED = ULONG($00000002);
  1834. {$EXTERNALSYM MSGFLAG_UNMODIFIED}
  1835. MSGFLAG_SUBMIT = ULONG($00000004);
  1836. {$EXTERNALSYM MSGFLAG_SUBMIT}
  1837. MSGFLAG_UNSENT = ULONG($00000008);
  1838. {$EXTERNALSYM MSGFLAG_UNSENT}
  1839. MSGFLAG_HASATTACH = ULONG($00000010);
  1840. {$EXTERNALSYM MSGFLAG_HASATTACH}
  1841. MSGFLAG_FROMME = ULONG($00000020);
  1842. {$EXTERNALSYM MSGFLAG_FROMME}
  1843. MSGFLAG_ASSOCIATED = ULONG($00000040);
  1844. {$EXTERNALSYM MSGFLAG_ASSOCIATED}
  1845. MSGFLAG_RESEND = ULONG($00000080);
  1846. {$EXTERNALSYM MSGFLAG_RESEND}
  1847. MSGFLAG_RN_PENDING = ULONG($00000100);
  1848. {$EXTERNALSYM MSGFLAG_RN_PENDING}
  1849. MSGFLAG_NRN_PENDING = ULONG($00000200);
  1850. {$EXTERNALSYM MSGFLAG_NRN_PENDING}
  1851. { Flags defined in PR_SUBMIT_FLAGS }
  1852. SUBMITFLAG_LOCKED = ULONG($00000001);
  1853. {$EXTERNALSYM SUBMITFLAG_LOCKED}
  1854. SUBMITFLAG_PREPROCESS = ULONG($00000002);
  1855. {$EXTERNALSYM SUBMITFLAG_PREPROCESS}
  1856. { GetAttachmentTable() }
  1857. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1858. { GetRecipientTable() }
  1859. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  1860. { ModifyRecipients }
  1861. { ((ULONG) 0x00000001 is not a valid flag on ModifyRecipients. }
  1862. MODRECIP_ADD = ULONG($00000002);
  1863. {$EXTERNALSYM MODRECIP_ADD}
  1864. MODRECIP_MODIFY = ULONG($00000004);
  1865. {$EXTERNALSYM MODRECIP_MODIFY}
  1866. MODRECIP_REMOVE = ULONG($00000008);
  1867. {$EXTERNALSYM MODRECIP_REMOVE}
  1868. { SetReadFlag }
  1869. SUPPRESS_RECEIPT = ULONG($00000001);
  1870. {$EXTERNALSYM SUPPRESS_RECEIPT}
  1871. CLEAR_READ_FLAG = ULONG($00000004);
  1872. {$EXTERNALSYM CLEAR_READ_FLAG}
  1873. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below
  1874. //***** GENERATE_RECEIPT_ONLY ((ULONG) 0x00000010) above
  1875. CLEAR_RN_PENDING = ULONG($00000020);
  1876. {$EXTERNALSYM CLEAR_RN_PENDING}
  1877. CLEAR_NRN_PENDING = ULONG($00000040);
  1878. {$EXTERNALSYM CLEAR_NRN_PENDING}
  1879. { DeleteAttach }
  1880. ATTACH_DIALOG = ULONG($00000001);
  1881. {$EXTERNALSYM ATTACH_DIALOG}
  1882. { PR_SECURITY values }
  1883. SECURITY_SIGNED = ULONG($00000001);
  1884. {$EXTERNALSYM SECURITY_SIGNED}
  1885. SECURITY_ENCRYPTED = ULONG($00000002);
  1886. {$EXTERNALSYM SECURITY_ENCRYPTED}
  1887. { PR_PRIORITY values }
  1888. PRIO_URGENT = LongInt(1);
  1889. {$EXTERNALSYM PRIO_URGENT}
  1890. PRIO_NORMAL = LongInt(0);
  1891. {$EXTERNALSYM PRIO_NORMAL}
  1892. PRIO_NONURGENT = LongInt(-1);
  1893. {$EXTERNALSYM PRIO_NONURGENT}
  1894. { PR_SENSITIVITY values }
  1895. SENSITIVITY_NONE = ULONG($00000000);
  1896. {$EXTERNALSYM SENSITIVITY_NONE}
  1897. SENSITIVITY_PERSONAL = ULONG($00000001);
  1898. {$EXTERNALSYM SENSITIVITY_PERSONAL}
  1899. SENSITIVITY_PRIVATE = ULONG($00000002);
  1900. {$EXTERNALSYM SENSITIVITY_PRIVATE}
  1901. SENSITIVITY_COMPANY_CONFIDENTIAL = ULONG($00000003);
  1902. {$EXTERNALSYM SENSITIVITY_COMPANY_CONFIDENTIAL}
  1903. { PR_IMPORTANCE values }
  1904. IMPORTANCE_LOW = LongInt(0);
  1905. {$EXTERNALSYM IMPORTANCE_LOW}
  1906. IMPORTANCE_NORMAL = LongInt(1);
  1907. {$EXTERNALSYM IMPORTANCE_NORMAL}
  1908. IMPORTANCE_HIGH = LongInt(2);
  1909. {$EXTERNALSYM IMPORTANCE_HIGH}
  1910. { IAttach Interface ------------------------------------------------------- }
  1911. { IAttach attachment methods: PR_ATTACH_METHOD values }
  1912. const
  1913. NO_ATTACHMENT = ULONG($00000000);
  1914. {$EXTERNALSYM NO_ATTACHMENT}
  1915. ATTACH_BY_VALUE = ULONG($00000001);
  1916. {$EXTERNALSYM ATTACH_BY_VALUE}
  1917. ATTACH_BY_REFERENCE = ULONG($00000002);
  1918. {$EXTERNALSYM ATTACH_BY_REFERENCE}
  1919. ATTACH_BY_REF_RESOLVE = ULONG($00000003);
  1920. {$EXTERNALSYM ATTACH_BY_REF_RESOLVE}
  1921. ATTACH_BY_REF_ONLY = ULONG($00000004);
  1922. {$EXTERNALSYM ATTACH_BY_REF_ONLY}
  1923. ATTACH_EMBEDDED_MSG = ULONG($00000005);
  1924. {$EXTERNALSYM ATTACH_EMBEDDED_MSG}
  1925. ATTACH_OLE = ULONG($00000006);
  1926. {$EXTERNALSYM ATTACH_OLE}
  1927. { Address Book interface definition }
  1928. { ADRPARM ulFlags - top 4 bits used for versioning }
  1929. function GET_ADRPARM_VERSION(ulFlags: ULONG): ULONG;
  1930. {$EXTERNALSYM GET_ADRPARM_VERSION}
  1931. function SET_ADRPARM_VERSION(ulFlags, ulVersion: ULONG): ULONG;
  1932. {$EXTERNALSYM SET_ADRPARM_VERSION}
  1933. { Current versions of ADRPARM }
  1934. const
  1935. ADRPARM_HELP_CTX = ULONG($00000000);
  1936. {$EXTERNALSYM ADRPARM_HELP_CTX}
  1937. { ulFlags - bit fields }
  1938. DIALOG_MODAL = ULONG($00000001);
  1939. {$EXTERNALSYM DIALOG_MODAL}
  1940. DIALOG_SDI = ULONG($00000002);
  1941. {$EXTERNALSYM DIALOG_SDI}
  1942. DIALOG_OPTIONS = ULONG($00000004);
  1943. {$EXTERNALSYM DIALOG_OPTIONS}
  1944. ADDRESS_ONE = ULONG($00000008);
  1945. {$EXTERNALSYM ADDRESS_ONE}
  1946. AB_SELECTONLY = ULONG($00000010);
  1947. {$EXTERNALSYM AB_SELECTONLY}
  1948. AB_RESOLVE = ULONG($00000020);
  1949. {$EXTERNALSYM AB_RESOLVE}
  1950. // ---------------------------------
  1951. // PR_DISPLAY_TYPEs
  1952. //
  1953. // * These standard display types are
  1954. // * by default handled by MAPI.
  1955. // * They have default icons associated
  1956. // * with them.
  1957. { For address book contents tables }
  1958. DT_MAILUSER = ULONG($00000000);
  1959. {$EXTERNALSYM DT_MAILUSER}
  1960. DT_DISTLIST = ULONG($00000001);
  1961. {$EXTERNALSYM DT_DISTLIST}
  1962. DT_FORUM = ULONG($00000002);
  1963. {$EXTERNALSYM DT_FORUM}
  1964. DT_AGENT = ULONG($00000003);
  1965. {$EXTERNALSYM DT_AGENT}
  1966. DT_ORGANIZATION = ULONG($00000004);
  1967. {$EXTERNALSYM DT_ORGANIZATION}
  1968. DT_PRIVATE_DISTLIST = ULONG($00000005);
  1969. {$EXTERNALSYM DT_PRIVATE_DISTLIST}
  1970. DT_REMOTE_MAILUSER = ULONG($00000006);
  1971. {$EXTERNALSYM DT_REMOTE_MAILUSER}
  1972. { For address book hierarchy tables }
  1973. DT_MODIFIABLE = ULONG($00010000);
  1974. {$EXTERNALSYM DT_MODIFIABLE}
  1975. DT_GLOBAL = ULONG($00020000);
  1976. {$EXTERNALSYM DT_GLOBAL}
  1977. DT_LOCAL = ULONG($00030000);
  1978. {$EXTERNALSYM DT_LOCAL}
  1979. DT_WAN = ULONG($00040000);
  1980. {$EXTERNALSYM DT_WAN}
  1981. DT_NOT_SPECIFIC = ULONG($00050000);
  1982. {$EXTERNALSYM DT_NOT_SPECIFIC}
  1983. { For folder hierarchy tables }
  1984. DT_FOLDER = ULONG($01000000);
  1985. {$EXTERNALSYM DT_FOLDER}
  1986. DT_FOLDER_LINK = ULONG($02000000);
  1987. {$EXTERNALSYM DT_FOLDER_LINK}
  1988. { Accelerator callback for DIALOG_SDI form of AB UI }
  1989. type
  1990. PFnABSDI = ^TAccelerateABSDI;
  1991. ACCELERATEABSDI = function (ulUIParam: ULONG; lpvmsg: Pointer): BOOL; stdcall;
  1992. {$EXTERNALSYM ACCELERATEABSDI}
  1993. TAccelerateABSDI = ACCELERATEABSDI;
  1994. { Callback to application telling it that the DIALOG_SDI form of the
  1995. AB UI has been dismissed. This is so that the above LPFNABSDI
  1996. function doesn't keep being called. }
  1997. PFnDismiss = ^TDismissModeless;
  1998. DISMISSMODELESS = function (ulUIParam: ULONG; lpvContext: Pointer): Pointer; stdcall;
  1999. {$EXTERNALSYM DISMISSMODELESS}
  2000. TDismissModeless = DISMISSMODELESS;
  2001. { Prototype for the client function hooked to an optional button on
  2002. the address book dialog }
  2003. PFnButton = ^TFnButton;
  2004. FNBUTTON = function (ulUIParam: ULONG; lpvContext: Pointer; cbEntryID: ULONG;
  2005. lpSelection: PEntryID; ulFlags: ULONG): SCODE; stdcall;
  2006. {$EXTERNALSYM FNBUTTON}
  2007. TFnButton = FNBUTTON;
  2008. { Parameters for the address book dialog }
  2009. PAdrParam = ^TAdrParam;
  2010. _ADRPARM = record
  2011. cbABContEntryID: ULONG;
  2012. lpABContEntryID: PEntryID;
  2013. ulFlags: ULONG;
  2014. lpReserved: Pointer;
  2015. ulHelpContext: ULONG;
  2016. lpszHelpFileName: LPTSTR;
  2017. lpfnABSDI: PFnABSDI;
  2018. lpfnDismiss: PFnDismiss;
  2019. lpvDismissContext: Pointer;
  2020. lpszCaption: LPTSTR;
  2021. lpszNewEntryTitle: LPTSTR;
  2022. lpszDestWellsTitle: LPTSTR;
  2023. cDestFields: ULONG;
  2024. nDestFieldFocus: ULONG;
  2025. lppszDestTitles: ^LPTSTR;
  2026. lpulDestComps: ^ULONG;
  2027. lpContRestriction: PSRestriction;
  2028. lpHierRestriction: PSRestriction;
  2029. end;
  2030. {$EXTERNALSYM _ADRPARM}
  2031. TAdrParam = _ADRPARM;
  2032. ADRPARM = _ADRPARM;
  2033. {$EXTERNALSYM ADRPARM}
  2034. { Random flags }
  2035. const
  2036. { Flag set in MAPI one off entryids }
  2037. MAPI_ONE_OFF_NO_RICH_INFO = $0001;
  2038. {$EXTERNALSYM MAPI_ONE_OFF_NO_RICH_INFO}
  2039. { Flag for deferred error }
  2040. MAPI_DEFERRED_ERRORS = ULONG($00000008);
  2041. {$EXTERNALSYM MAPI_DEFERRED_ERRORS}
  2042. { Flag for creating and using Folder Associated Information Messages }
  2043. MAPI_ASSOCIATED = ULONG($00000040);
  2044. {$EXTERNALSYM MAPI_ASSOCIATED}
  2045. { Flags for OpenMessageStore() }
  2046. MDB_NO_DIALOG = ULONG($00000001);
  2047. {$EXTERNALSYM MDB_NO_DIALOG}
  2048. MDB_WRITE = ULONG($00000004);
  2049. {$EXTERNALSYM MDB_WRITE}
  2050. //***** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) above
  2051. //***** MAPI_BEST_ACCESS ((ULONG) 0x00000010) above
  2052. MDB_TEMPORARY = ULONG($00000020);
  2053. {$EXTERNALSYM MDB_TEMPORARY}
  2054. MDB_NO_MAIL = ULONG($00000080);
  2055. {$EXTERNALSYM MDB_NO_MAIL}
  2056. { Flags for OpenAddressBook }
  2057. AB_NO_DIALOG = ULONG($00000001);
  2058. {$EXTERNALSYM AB_NO_DIALOG}
  2059. { IMAPIControl Interface -------------------------------------------------- }
  2060. { Interface used in controls (particularly the button) defined by Display Tables }
  2061. { Flags for GetState }
  2062. MAPI_ENABLED = ULONG($00000000);
  2063. {$EXTERNALSYM MAPI_ENABLED}
  2064. MAPI_DISABLED = ULONG($00000001);
  2065. {$EXTERNALSYM MAPI_DISABLED}
  2066. type
  2067. IMAPIControl = interface(IUnknown)
  2068. function GetLastError(hResult: HRESULT; ulFlags: ULONG;
  2069. var lppMAPIError: TMapiError): HResult; stdcall;
  2070. function Activate(ulFlags, ulUIParam: ULONG): HResult; stdcall;
  2071. function GetState(ulFlags: ULONG; var lpulState: ULONG): HResult; stdcall;
  2072. end;
  2073. {$EXTERNALSYM IMAPIControl}
  2074. { Display Tables ---------------------------------------------------------- }
  2075. { Flags used in display tables - that is, PR_CONTROL_FLAGS }
  2076. const
  2077. DT_MULTILINE = ULONG($00000001);
  2078. {$EXTERNALSYM DT_MULTILINE}
  2079. DT_EDITABLE = ULONG($00000002);
  2080. {$EXTERNALSYM DT_EDITABLE}
  2081. DT_REQUIRED = ULONG($00000004);
  2082. {$EXTERNALSYM DT_REQUIRED}
  2083. DT_SET_IMMEDIATE = ULONG($00000008);
  2084. {$EXTERNALSYM DT_SET_IMMEDIATE}
  2085. DT_PASSWORD_EDIT = ULONG($00000010);
  2086. {$EXTERNALSYM DT_PASSWORD_EDIT}
  2087. DT_ACCEPT_DBCS = ULONG($00000020);
  2088. {$EXTERNALSYM DT_ACCEPT_DBCS}
  2089. DT_SET_SELECTION = ULONG($00000040);
  2090. {$EXTERNALSYM DT_SET_SELECTION}
  2091. { Display Table structures }
  2092. DTCT_LABEL = ULONG($00000000);
  2093. {$EXTERNALSYM DTCT_LABEL}
  2094. DTCT_EDIT = ULONG($00000001);
  2095. {$EXTERNALSYM DTCT_EDIT}
  2096. DTCT_LBX = ULONG($00000002);
  2097. {$EXTERNALSYM DTCT_LBX}
  2098. DTCT_COMBOBOX = ULONG($00000003);
  2099. {$EXTERNALSYM DTCT_COMBOBOX}
  2100. DTCT_DDLBX = ULONG($00000004);
  2101. {$EXTERNALSYM DTCT_DDLBX}
  2102. DTCT_CHECKBOX = ULONG($00000005);
  2103. {$EXTERNALSYM DTCT_CHECKBOX}
  2104. DTCT_GROUPBOX = ULONG($00000006);
  2105. {$EXTERNALSYM DTCT_GROUPBOX}
  2106. DTCT_BUTTON = ULONG($00000007);
  2107. {$EXTERNALSYM DTCT_BUTTON}
  2108. DTCT_PAGE = ULONG($00000008);
  2109. {$EXTERNALSYM DTCT_PAGE}
  2110. DTCT_RADIOBUTTON = ULONG($00000009);
  2111. {$EXTERNALSYM DTCT_RADIOBUTTON}
  2112. DTCT_MVLISTBOX = ULONG($0000000B);
  2113. {$EXTERNALSYM DTCT_MVLISTBOX}
  2114. DTCT_MVDDLBX = ULONG($0000000C);
  2115. {$EXTERNALSYM DTCT_MVDDLBX}
  2116. type
  2117. { Labels }
  2118. PDTblLabel = ^TDTblLabel;
  2119. _DTBLLABEL = record
  2120. ulbLpszLabelName: ULONG;
  2121. ulFlags: ULONG;
  2122. end;
  2123. {$EXTERNALSYM _DTBLLABEL}
  2124. TDTblLabel = _DTBLLABEL;
  2125. DTBLLABEL = _DTBLLABEL;
  2126. {$EXTERNALSYM DTBLLABEL}
  2127. (*!!!
  2128. #define SizedDtblLabel(n,u) \
  2129. struct _DTBLLABEL_ ## u \
  2130. { \
  2131. DTBLLABEL dtbllabel; \
  2132. TCHAR lpszLabelName[n]; \
  2133. } u
  2134. *)
  2135. { Simple Text Edits }
  2136. PDTblEdit = ^TDTblEdit;
  2137. _DTBLEDIT = record
  2138. ulbLpszCharsAllowed: ULONG;
  2139. ulFlags: ULONG;
  2140. ulNumCharsAllowed: ULONG;
  2141. ulPropTag: ULONG;
  2142. end;
  2143. {$EXTERNALSYM _DTBLEDIT}
  2144. TDTblEdit = _DTBLEDIT;
  2145. DTBLEDIT = _DTBLEDIT;
  2146. {$EXTERNALSYM DTBLEDIT}
  2147. (*!!!
  2148. #define SizedDtblEdit(n,u) \
  2149. struct _DTBLEDIT_ ## u \
  2150. { \
  2151. DTBLEDIT dtbledit; \
  2152. TCHAR lpszCharsAllowed[n]; \
  2153. } u
  2154. *)
  2155. { List Box }
  2156. const
  2157. MAPI_NO_HBAR = ULONG($00000001);
  2158. {$EXTERNALSYM MAPI_NO_HBAR}
  2159. MAPI_NO_VBAR = ULONG($00000002);
  2160. {$EXTERNALSYM MAPI_NO_VBAR}
  2161. type
  2162. PDTblLbx = ^TDTblLbx;
  2163. _DTBLLBX = record
  2164. ulFlags: ULONG;
  2165. ulPRSetProperty: ULONG;
  2166. ulPRTableName: ULONG;
  2167. end;
  2168. {$EXTERNALSYM _DTBLLBX}
  2169. TDTblLbx = _DTBLLBX;
  2170. DTBLLBX = _DTBLLBX;
  2171. {$EXTERNALSYM DTBLLBX}
  2172. { Combo Box }
  2173. PDTblComboBox = ^TDTblComboBox;
  2174. _DTBLCOMBOBOX = record
  2175. ulbLpszCharsAllowed: ULONG;
  2176. ulFlags: ULONG;
  2177. ulNumCharsAllowed: ULONG;
  2178. ulPRPropertyName: ULONG;
  2179. ulPRTableName: ULONG;
  2180. end;
  2181. {$EXTERNALSYM _DTBLCOMBOBOX}
  2182. TDTblComboBox = _DTBLCOMBOBOX;
  2183. DTBLCOMBOBOX = _DTBLCOMBOBOX;
  2184. {$EXTERNALSYM DTBLCOMBOBOX}
  2185. (*!!!
  2186. #define SizedDtblComboBox(n,u) \
  2187. struct _DTBLCOMBOBOX_ ## u \
  2188. { \
  2189. DTBLCOMBOBOX dtblcombobox; \
  2190. TCHAR lpszCharsAllowed[n]; \
  2191. } u
  2192. *)
  2193. { Drop Down }
  2194. PDTblDDLbx = ^TDTblDDLbx;
  2195. _DTBLDDLBX = record
  2196. ulFlags: ULONG;
  2197. ulPRDisplayProperty: ULONG;
  2198. ulPRSetProperty: ULONG;
  2199. ulPRTableName: ULONG;
  2200. end;
  2201. {$EXTERNALSYM _DTBLDDLBX}
  2202. TDTblDDLbx = _DTBLDDLBX;
  2203. DTBLDDLBX = _DTBLDDLBX;
  2204. {$EXTERNALSYM DTBLDDLBX}
  2205. { Check Box }
  2206. PDTblCheckBox = ^TDTblCheckBox;
  2207. _DTBLCHECKBOX = record
  2208. ulbLpszLabel: ULONG;
  2209. ulFlags: ULONG;
  2210. ulPRPropertyName: ULONG;
  2211. end;
  2212. {$EXTERNALSYM _DTBLCHECKBOX}
  2213. TDTblCheckBox = _DTBLCHECKBOX;
  2214. DTBLCHECKBOX = _DTBLCHECKBOX;
  2215. {$EXTERNALSYM DTBLCHECKBOX}
  2216. (*!!!
  2217. #define SizedDtblCheckBox(n,u) \
  2218. struct _DTBLCHECKBOX_ ## u \
  2219. { \
  2220. DTBLCHECKBOX dtblcheckbox; \
  2221. TCHAR lpszLabel[n]; \
  2222. } u
  2223. *)
  2224. { Group Box }
  2225. PDTblGroupBox = ^TDTblGroupBox;
  2226. _DTBLGROUPBOX = record
  2227. ulbLpszLabel: ULONG;
  2228. ulFlags: ULONG;
  2229. end;
  2230. {$EXTERNALSYM _DTBLGROUPBOX}
  2231. TDTblGroupBox = _DTBLGROUPBOX;
  2232. DTBLGROUPBOX = _DTBLGROUPBOX;
  2233. {$EXTERNALSYM DTBLGROUPBOX}
  2234. (*!!!
  2235. #define SizedDtblGroupBox(n,u) \
  2236. struct _DTBLGROUPBOX_ ## u \
  2237. { \
  2238. DTBLGROUPBOX dtblgroupbox; \
  2239. TCHAR lpszLabel[n]; \
  2240. } u
  2241. *)
  2242. { Button control }
  2243. PDTblButton = ^TDTblButton;
  2244. _DTBLBUTTON = record
  2245. ulbLpszLabel: ULONG;
  2246. ulFlags: ULONG;
  2247. ulPRControl: ULONG;
  2248. end;
  2249. {$EXTERNALSYM _DTBLBUTTON}
  2250. TDTblButton = _DTBLBUTTON;
  2251. DTBLBUTTON = _DTBLBUTTON;
  2252. {$EXTERNALSYM DTBLBUTTON}
  2253. (*!!!
  2254. #define SizedDtblButton(n,u) \
  2255. struct _DTBLBUTTON_ ## u \
  2256. { \
  2257. DTBLBUTTON dtblbutton; \
  2258. TCHAR lpszLabel[n]; \
  2259. } u
  2260. *)
  2261. { Pages }
  2262. PDTblPage = ^TDTblPage;
  2263. _DTBLPAGE = record
  2264. ulbLpszLabel: ULONG;
  2265. ulFlags: ULONG;
  2266. ulbLpszComponent: ULONG;
  2267. ulContext: ULONG;
  2268. end;
  2269. {$EXTERNALSYM _DTBLPAGE}
  2270. TDTblPage = _DTBLPAGE;
  2271. DTBLPAGE = _DTBLPAGE;
  2272. {$EXTERNALSYM DTBLPAGE}
  2273. (*!!!
  2274. #define SizedDtblPage(n,n1,u) \
  2275. struct _DTBLPAGE_ ## u \
  2276. { \
  2277. DTBLPAGE dtblpage; \
  2278. TCHAR lpszLabel[n]; \
  2279. TCHAR lpszComponent[n1]; \
  2280. } u
  2281. *)
  2282. { Radio button }
  2283. PDTblRadioButton = ^TDTblRadioButton;
  2284. _DTBLRADIOBUTTON = record
  2285. ulbLpszLabel: ULONG;
  2286. ulFlags: ULONG;
  2287. ulcButtons: ULONG;
  2288. ulPropTag: ULONG;
  2289. lReturnValue: LongInt;
  2290. end;
  2291. {$EXTERNALSYM _DTBLRADIOBUTTON}
  2292. TDTblRadioButton = _DTBLRADIOBUTTON;
  2293. DTBLRADIOBUTTON = _DTBLRADIOBUTTON;
  2294. {$EXTERNALSYM DTBLRADIOBUTTON}
  2295. (*!!!
  2296. #define SizedDtblRadioButton(n,u) \
  2297. struct _DTBLRADIOBUTTON_ ## u \
  2298. { \
  2299. DTBLRADIOBUTTON dtblradiobutton; \
  2300. TCHAR lpszLabel[n]; \
  2301. } u
  2302. *)
  2303. { MultiValued listbox }
  2304. PDTblMvListBox = ^TDTblMvListBox;
  2305. _DTBLMVLISTBOX = record
  2306. ulFlags: ULONG;
  2307. ulMVPropTag: ULONG;
  2308. end;
  2309. {$EXTERNALSYM _DTBLMVLISTBOX}
  2310. TDTblMvListBox = _DTBLMVLISTBOX;
  2311. DTBLMVLISTBOX = _DTBLMVLISTBOX;
  2312. {$EXTERNALSYM DTBLMVLISTBOX}
  2313. { MultiValued dropdown }
  2314. PDTblMvDDLbx = ^TDTblMvDDLbx;
  2315. _DTBLMVDDLBX = record
  2316. ulFlags: ULONG;
  2317. ulMVPropTag: ULONG;
  2318. end;
  2319. {$EXTERNALSYM _DTBLMVDDLBX}
  2320. TDTblMvDDLbx = _DTBLMVDDLBX;
  2321. DTBLMVDDLBX = _DTBLMVDDLBX;
  2322. {$EXTERNALSYM DTBLMVDDLBX}
  2323. { IProviderAdmin Interface ---------------------------------------------- }
  2324. { Flags for ConfigureMsgService }
  2325. const
  2326. UI_SERVICE = $00000002;
  2327. {$EXTERNALSYM UI_SERVICE}
  2328. SERVICE_UI_ALWAYS = $00000002; // Duplicate UI_SERVICE for consistency and compatibility
  2329. {$EXTERNALSYM SERVICE_UI_ALWAYS}
  2330. SERVICE_UI_ALLOWED = $00000010;
  2331. {$EXTERNALSYM SERVICE_UI_ALLOWED}
  2332. UI_CURRENT_PROVIDER_FIRST = $00000004;
  2333. {$EXTERNALSYM UI_CURRENT_PROVIDER_FIRST}
  2334. // MSG_SERVICE_UI_READ_ONLY 0x00000008 - in MAPISPI.H
  2335. { GetProviderTable() }
  2336. //***** MAPI_UNICODE ((ULONG) 0x80000000) above
  2337. { Values for PR_RESOURCE_FLAGS in message service table }
  2338. type
  2339. IMessage = interface;
  2340. IMAPIFolder = interface(IMAPIContainer)
  2341. function CreateMessage(lpInterface: PIID; ulFlags: ULONG;
  2342. out lppMessage: IMessage): HResult; stdcall;
  2343. function CopyMessages(lpMsgList: PEntryList; lpInterface: PIID;
  2344. lpDestFolder: Pointer; ulUIParam: ULONG; lpProgress: IMAPIProgress;
  2345. ulFlags: ULONG): HResult; stdcall;
  2346. function DeleteMessages(lpMsgList: PEntryList; ulUIParam: ULONG;
  2347. lpProgress: IMAPIProgress; ulFlags: ULONG): HResult; stdcall;
  2348. function CreateFolder(ulFolderType: ULONG; lpszFolderName,
  2349. lpszFolderComment: LPTSTR; lpInterface: PIID; ulFlags: ULONG;
  2350. out lppFolder: IMAPIFolder): HResult; stdcall;
  2351. function CopyFolder(cbEntryID: ULONG; lpEntryID: PEntryID;
  2352. lpInterface: PIID; lpDestFolder: Pointer; lpszNewFolderName: LPTSTR;
  2353. ulUIParam: ULONG; lpProgress: IMAPIProgress; ulFlags: ULONG): HResult; stdcall;
  2354. function DeleteFolder(cbEntryID: ULONG; lpEntryID: PEntryID; ulUIParam: ULONG;
  2355. lpProgress: IMAPIProgress; ulFlags: ULONG): HResult; stdcall;
  2356. function SetReadFlags(lpMsgList: PEntryList; ulUIParam: ULONG;
  2357. lpProgress: IMAPIProgress; ulFlags: ULONG): HResult; stdcall;
  2358. function GetMessageStatus(cbEntryID: ULONG; lpEntryID: PEntryID;
  2359. ulFlags: ULONG; var lpulMessageStatus: ULONG): HResult; stdcall;
  2360. function SetMessageStatus(cbEntryID: ULONG; lpEntryID: PEntryID;
  2361. ulNewStatus, ulNewStatusMask: ULONG; var lpulOldStatus: ULONG): HResult; stdcall;
  2362. function SaveContentsSort(lpSortCriteria: PSSortOrderSet;
  2363. ulFlags: ULONG): HResult; stdcall;
  2364. function EmptyFolder(ulUIParam: ULONG; lpProgress: IMAPIProgress;
  2365. ulFlags: ULONG): HResult; stdcall;
  2366. end;
  2367. {$EXTERNALSYM IMAPIFolder}
  2368. IMsgStore = interface(IMAPIProp)
  2369. function Advise(cbEntryID: ULONG; lpEntryID: PEntryID; ulEventMask: ULONG;
  2370. lpAdviseSink: IMAPIAdviseSink; var lpulConnection: ULONG): HResult; stdcall;
  2371. function Unadvise(ulConnection: ULONG): HResult; stdcall;
  2372. function CompareEntryIDs(cbEntryID1: ULONG; lpEntryID1: PEntryID;
  2373. cbEntryID2: ULONG; lpEntryID2: PEntryID; ulFlags: ULONG;
  2374. var lpulResult: ULONG): HResult; stdcall;
  2375. function OpenEntry(cbEntryID: ULONG; lpEntryID: PEntryID;
  2376. lpInterface: PIID; ulFlags: ULONG; var lpulObjType: ULONG;
  2377. out lppUnk: IUnknown): HResult; stdcall;
  2378. function SetReceiveFolder(lpszMessageClass: LPTSTR; ulFlags, cbEntryID: ULONG;
  2379. lpEntryID: PEntryID): HResult; stdcall;
  2380. function GetReceiveFolder(lpszMessageClass: LPTSTR; ulFlags: ULONG;
  2381. var lpcbEntryID: ULONG; lppEntryID: PEntryID;
  2382. lppszExplicitClass: LPTSTR): HResult; stdcall;
  2383. function GetReceiveFolderTable(ulFlags: ULONG; out lppTable: IMAPITable): HResult; stdcall;
  2384. function StoreLogoff(var lpulFlags: ULONG): HResult; stdcall;
  2385. function AbortSubmit(cbEntryID: ULONG; lpEntryID: PEntryID;
  2386. ulFlags: ULONG): HResult; stdcall;
  2387. function GetOutgoingQueue(ulFlags: ULONG; out lppTable: IMAPITable): HResult; stdcall;
  2388. function SetLockState(lpMessage: IMessage; ulLockState: ULONG): HResult; stdcall;
  2389. function FinishedMsg(ulFlags, cbEntryID: ULONG; lpEntryID: PEntryID): HResult; stdcall;
  2390. function NotifyNewMail(lpNotification: PNotification): HResult; stdcall;
  2391. end;
  2392. {$EXTERNALSYM IMsgStore}
  2393. IAttach = interface(IMAPIProp)
  2394. end;
  2395. {$EXTERNALSYM IAttach}
  2396. IMessage = interface(IMAPIProp)
  2397. function GetAttachmentTable(ulFlags: ULONG; out lppTable: IMAPITable): HResult; stdcall;
  2398. function OpenAttach(ulAttachmentNum: ULONG; lpInterface: PIID;
  2399. ulFlags: ULONG; out lppAttach: IAttach): HResult; stdcall;
  2400. function CreateAttach(lpInterface: PIID; ulFlags: ULONG;
  2401. var lpulAttachmentNum: ULONG; out lppAttach: IAttach): HResult; stdcall;
  2402. function DeleteAttach(ulAttachmentNum, ulUIParam: ULONG; lpProgress: IMAPIProgress;
  2403. ulFlags: ULONG): HResult; stdcall;
  2404. function GetRecipientTable(ulFlags: ULONG; out lppTable: IMAPITable): HResult; stdcall;
  2405. function ModifyRecipients(ulFlags: ULONG; lpMods: PAdrList): HResult; stdcall;
  2406. function SubmitMessage(ulFlags: ULONG): HResult; stdcall;
  2407. function SetReadFlag(ulFlags: ULONG): HResult; stdcall;
  2408. end;
  2409. {$EXTERNALSYM IMessage}
  2410. IProviderAdmin = interface(IUnknown)
  2411. function GetLastError(hResult: HRESULT; ulFlags: ULONG;
  2412. var lppMAPIError: TMapiError): HResult; stdcall;
  2413. function GetProviderTable(ulFlags: ULONG; out lppTable: IMAPITable): HResult; stdcall;
  2414. function CreateProvider(lpszProvider: LPTSTR; cValues: ULONG;
  2415. lpProps: PSPropValue; ulUIParam, ulFlags: ULONG; lpUID: TMapiUID): HResult; stdcall;
  2416. function DeleteProvider(lpUID: PMapiUID): HResult; stdcall;
  2417. function OpenProfileSection(lpUID: PMapiUID; lpInterface: PIID;
  2418. ulFlags: ULONG; out lppProfSect: IProfSect): HResult; stdcall;
  2419. end;
  2420. {$EXTERNALSYM IProviderAdmin}
  2421. implementation
  2422. uses
  2423. SysUtils;
  2424. function IsEqualMAPIUID(lpuid1, lpuid2: TMapiUID): Boolean;
  2425. begin
  2426. Result := CompareMem(@lpuid1, @lpuid2, Sizeof(TMapiUID));
  2427. end;
  2428. function PROP_TYPE(ulPropTag: ULONG): ULONG;
  2429. begin
  2430. Result := ulPropTag and PROP_TYPE_MASK;
  2431. end;
  2432. function PROP_ID(ulPropTag: ULONG): ULONG;
  2433. begin
  2434. Result := ulPropTag shr 16;
  2435. end;
  2436. function PROP_TAG(ulPropType, ulPropID: ULONG): ULONG;
  2437. begin
  2438. Result := (ulPropID shl 16) or ulPropType;
  2439. end;
  2440. function CHANGE_PROP_TYPE(ulPropTag, ulPropType: ULONG): ULONG;
  2441. begin
  2442. Result := (ULONG($FFFF0000) and ulPropTag) or ulPropType;
  2443. end;
  2444. function MVI_PROP(tag: ULONG): ULONG;
  2445. begin
  2446. Result := tag or MVI_FLAG;
  2447. end;
  2448. function GET_ADRPARM_VERSION(ulFlags: ULONG): ULONG;
  2449. begin
  2450. Result := ulFlags and $F0000000;
  2451. end;
  2452. function SET_ADRPARM_VERSION(ulFlags, ulVersion: ULONG): ULONG;
  2453. begin
  2454. Result := ulVersion or (ulFlags and $0FFFFFFF);
  2455. end;
  2456. end.