mmole2.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:189k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. {*******************************************************}
  2. {                                                       }
  3. {       Delphi Runtime Library                          }
  4. {       OLE 2 Interface Unit                            }
  5. {                                                       }
  6. {       Copyright (c) 1996,98 Borland International     }
  7. {                                                       }
  8. {*******************************************************}
  9. unit MMOLE2;
  10. {$I COMPILER.INC}
  11. interface
  12. // For CBuilder v1.0 backward compatiblity, OLE2.HPP must include ole2.h
  13. {$IFDEF BCB} {$HPPEMIT '#include <ole2.h>'} {$ENDIF}
  14. uses Windows;
  15. const
  16.   {$IFDEF BCB} {$EXTERNALSYM MEMCTX_TASK} {$ENDIF}
  17.   MEMCTX_TASK    = 1;
  18.   {$IFDEF BCB} {$EXTERNALSYM MEMCTX_SHARED} {$ENDIF}
  19.   MEMCTX_SHARED    = 2;
  20.   {$IFDEF BCB} {$EXTERNALSYM MEMCTX_MACSYSTEM} {$ENDIF}
  21.   MEMCTX_MACSYSTEM = 3;
  22.   {$IFDEF BCB} {$EXTERNALSYM MEMCTX_UNKNOWN} {$ENDIF}
  23.   MEMCTX_UNKNOWN   = -1;
  24.   {$IFDEF BCB} {$EXTERNALSYM MEMCTX_SAME} {$ENDIF}
  25.   MEMCTX_SAME    = -2;
  26.   {$IFDEF BCB} {$EXTERNALSYM ROTFLAGS_REGISTRATIONKEEPSALIVE} {$ENDIF}
  27.   ROTFLAGS_REGISTRATIONKEEPSALIVE = 1;
  28.   {$IFDEF BCB} {$EXTERNALSYM CLSCTX_INPROC_SERVER} {$ENDIF}
  29.   CLSCTX_INPROC_SERVER   = 1;
  30.   {$IFDEF BCB} {$EXTERNALSYM CLSCTX_INPROC_HANDLER} {$ENDIF}
  31.   CLSCTX_INPROC_HANDLER  = 2;
  32.   {$IFDEF BCB} {$EXTERNALSYM CLSCTX_LOCAL_SERVER} {$ENDIF}
  33.   CLSCTX_LOCAL_SERVER  = 4;
  34.   {$IFDEF BCB} {$EXTERNALSYM CLSCTX_INPROC_SERVER16} {$ENDIF}
  35.   CLSCTX_INPROC_SERVER16 = 8;
  36.   {$IFDEF BCB} {$EXTERNALSYM CLSCTX_ALL} {$ENDIF}
  37.   CLSCTX_ALL    = CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER or
  38.                   CLSCTX_LOCAL_SERVER;
  39.   {$IFDEF BCB} {$EXTERNALSYM CLSCTX_INPROC} {$ENDIF}
  40.   CLSCTX_INPROC = CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER;
  41.   {$IFDEF BCB} {$EXTERNALSYM CLSCTX_SERVER} {$ENDIF}
  42.   CLSCTX_SERVER = CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER;
  43.   {$IFDEF BCB} {$EXTERNALSYM MSHLFLAGS_NORMAL} {$ENDIF}
  44.   MSHLFLAGS_NORMAL  = 0;
  45.   {$IFDEF BCB} {$EXTERNALSYM MSHLFLAGS_TABLESTRONG} {$ENDIF}
  46.   MSHLFLAGS_TABLESTRONG = 1;
  47.   {$IFDEF BCB} {$EXTERNALSYM MSHLFLAGS_TABLEWEAK} {$ENDIF}
  48.   MSHLFLAGS_TABLEWEAK = 2;
  49.   {$IFDEF BCB} {$EXTERNALSYM MSHCTX_LOCAL} {$ENDIF}
  50.   MSHCTX_LOCAL            = 0;
  51.   {$IFDEF BCB} {$EXTERNALSYM MSHCTX_NOSHAREDMEM} {$ENDIF}
  52.   MSHCTX_NOSHAREDMEM    = 1;
  53.   {$IFDEF BCB} {$EXTERNALSYM MSHCTX_DIFFERENTMACHINE} {$ENDIF}
  54.   MSHCTX_DIFFERENTMACHINE = 2;
  55.   {$IFDEF BCB} {$EXTERNALSYM MSHCTX_INPROC} {$ENDIF}
  56.   MSHCTX_INPROC           = 3;
  57.   {$IFDEF BCB} {$EXTERNALSYM DVASPECT_CONTENT} {$ENDIF}
  58.   DVASPECT_CONTENT   = 1;
  59.   {$IFDEF BCB} {$EXTERNALSYM DVASPECT_THUMBNAIL} {$ENDIF}
  60.   DVASPECT_THUMBNAIL = 2;
  61.   {$IFDEF BCB} {$EXTERNALSYM DVASPECT_ICON} {$ENDIF}
  62.   DVASPECT_ICON      = 4;
  63.   {$IFDEF BCB} {$EXTERNALSYM DVASPECT_DOCPRINT} {$ENDIF}
  64.   DVASPECT_DOCPRINT  = 8;
  65.   {$IFDEF BCB} {$EXTERNALSYM STGC_DEFAULT} {$ENDIF}
  66.   STGC_DEFAULT                            = 0;
  67.   {$IFDEF BCB} {$EXTERNALSYM STGC_OVERWRITE} {$ENDIF}
  68.   STGC_OVERWRITE                    = 1;
  69.   {$IFDEF BCB} {$EXTERNALSYM STGC_ONLYIFCURRENT} {$ENDIF}
  70.   STGC_ONLYIFCURRENT                    = 2;
  71.   {$IFDEF BCB} {$EXTERNALSYM STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE} {$ENDIF}
  72.   STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4;
  73.   {$IFDEF BCB} {$EXTERNALSYM STGMOVE_MOVE} {$ENDIF}
  74.   STGMOVE_MOVE = 0;
  75.   {$IFDEF BCB} {$EXTERNALSYM STGMOVE_COPY} {$ENDIF}
  76.   STGMOVE_COPY = 1;
  77.   {$IFDEF BCB} {$EXTERNALSYM STATFLAG_DEFAULT} {$ENDIF}
  78.   STATFLAG_DEFAULT = 0;
  79.   {$IFDEF BCB} {$EXTERNALSYM STATFLAG_NONAME} {$ENDIF}
  80.   STATFLAG_NONAME  = 1;
  81.   {$IFDEF BCB} {$EXTERNALSYM BIND_MAYBOTHERUSER} {$ENDIF}
  82.   BIND_MAYBOTHERUSER   = 1;
  83.   {$IFDEF BCB} {$EXTERNALSYM BIND_JUSTTESTEXISTENCE} {$ENDIF}
  84.   BIND_JUSTTESTEXISTENCE = 2;
  85.   {$IFDEF BCB} {$EXTERNALSYM MKSYS_NONE} {$ENDIF}
  86.   MKSYS_NONE           = 0;
  87.   {$IFDEF BCB} {$EXTERNALSYM MKSYS_GENERICCOMPOSITE} {$ENDIF}
  88.   MKSYS_GENERICCOMPOSITE = 1;
  89.   {$IFDEF BCB} {$EXTERNALSYM MKSYS_FILEMONIKER} {$ENDIF}
  90.   MKSYS_FILEMONIKER  = 2;
  91.   {$IFDEF BCB} {$EXTERNALSYM MKSYS_ANTIMONIKER} {$ENDIF}
  92.   MKSYS_ANTIMONIKER  = 3;
  93.   {$IFDEF BCB} {$EXTERNALSYM MKSYS_ITEMMONIKER} {$ENDIF}
  94.   MKSYS_ITEMMONIKER  = 4;
  95.   {$IFDEF BCB} {$EXTERNALSYM MKSYS_POINTERMONIKER} {$ENDIF}
  96.   MKSYS_POINTERMONIKER   = 5;
  97.   {$IFDEF BCB} {$EXTERNALSYM MKRREDUCE_ONE} {$ENDIF}
  98.   MKRREDUCE_ONE         = 3 shl 16;
  99.   {$IFDEF BCB} {$EXTERNALSYM MKRREDUCE_TOUSER} {$ENDIF}
  100.   MKRREDUCE_TOUSER  = 2 shl 16;
  101.   {$IFDEF BCB} {$EXTERNALSYM MKRREDUCE_THROUGHUSER} {$ENDIF}
  102.   MKRREDUCE_THROUGHUSER = 1 shl 16;
  103.   {$IFDEF BCB} {$EXTERNALSYM MKRREDUCE_ALL} {$ENDIF}
  104.   MKRREDUCE_ALL         = 0;
  105.   {$IFDEF BCB} {$EXTERNALSYM STGTY_STORAGE} {$ENDIF}
  106.   STGTY_STORAGE   = 1;
  107.   {$IFDEF BCB} {$EXTERNALSYM STGTY_STREAM} {$ENDIF}
  108.   STGTY_STREAM    = 2;
  109.   {$IFDEF BCB} {$EXTERNALSYM STGTY_LOCKBYTES} {$ENDIF}
  110.   STGTY_LOCKBYTES = 3;
  111.   {$IFDEF BCB} {$EXTERNALSYM STGTY_PROPERTY} {$ENDIF}
  112.   STGTY_PROPERTY  = 4;
  113.   {$IFDEF BCB} {$EXTERNALSYM STREAM_SEEK_SET} {$ENDIF}
  114.   STREAM_SEEK_SET = 0;
  115.   {$IFDEF BCB} {$EXTERNALSYM STREAM_SEEK_CUR} {$ENDIF}
  116.   STREAM_SEEK_CUR = 1;
  117.   {$IFDEF BCB} {$EXTERNALSYM STREAM_SEEK_END} {$ENDIF}
  118.   STREAM_SEEK_END = 2;
  119.   {$IFDEF BCB} {$EXTERNALSYM LOCK_WRITE} {$ENDIF}
  120.   LOCK_WRITE   = 1;
  121.   {$IFDEF BCB} {$EXTERNALSYM LOCK_EXCLUSIVE} {$ENDIF}
  122.   LOCK_EXCLUSIVE = 2;
  123.   {$IFDEF BCB} {$EXTERNALSYM LOCK_ONLYONCE} {$ENDIF}
  124.   LOCK_ONLYONCE  = 4;
  125.   {$IFDEF BCB} {$EXTERNALSYM ADVF_NODATA} {$ENDIF}
  126.   ADVF_NODATA          = 1;
  127.   {$IFDEF BCB} {$EXTERNALSYM ADVF_PRIMEFIRST} {$ENDIF}
  128.   ADVF_PRIMEFIRST  = 2;
  129.   {$IFDEF BCB} {$EXTERNALSYM ADVF_ONLYONCE} {$ENDIF}
  130.   ADVF_ONLYONCE          = 4;
  131.   {$IFDEF BCB} {$EXTERNALSYM ADVF_DATAONSTOP} {$ENDIF}
  132.   ADVF_DATAONSTOP  = 64;
  133.   {$IFDEF BCB} {$EXTERNALSYM ADVFCACHE_NOHANDLER} {$ENDIF}
  134.   ADVFCACHE_NOHANDLER  = 8;
  135.   {$IFDEF BCB} {$EXTERNALSYM ADVFCACHE_FORCEBUILTIN} {$ENDIF}
  136.   ADVFCACHE_FORCEBUILTIN = 16;
  137.   {$IFDEF BCB} {$EXTERNALSYM ADVFCACHE_ONSAVE} {$ENDIF}
  138.   ADVFCACHE_ONSAVE   = 32;
  139.   {$IFDEF BCB} {$EXTERNALSYM TYMED_HGLOBAL} {$ENDIF}
  140.   TYMED_HGLOBAL  = 1;
  141.   {$IFDEF BCB} {$EXTERNALSYM TYMED_FILE} {$ENDIF}
  142.   TYMED_FILE     = 2;
  143.   {$IFDEF BCB} {$EXTERNALSYM TYMED_ISTREAM} {$ENDIF}
  144.   TYMED_ISTREAM  = 4;
  145.   {$IFDEF BCB} {$EXTERNALSYM TYMED_ISTORAGE} {$ENDIF}
  146.   TYMED_ISTORAGE = 8;
  147.   {$IFDEF BCB} {$EXTERNALSYM TYMED_GDI} {$ENDIF}
  148.   TYMED_GDI  = 16;
  149.   {$IFDEF BCB} {$EXTERNALSYM TYMED_MFPICT} {$ENDIF}
  150.   TYMED_MFPICT   = 32;
  151.   {$IFDEF BCB} {$EXTERNALSYM TYMED_ENHMF} {$ENDIF}
  152.   TYMED_ENHMF  = 64;
  153.   {$IFDEF BCB} {$EXTERNALSYM TYMED_NULL} {$ENDIF}
  154.   TYMED_NULL   = 0;
  155.   {$IFDEF BCB} {$EXTERNALSYM DATADIR_GET} {$ENDIF}
  156.   DATADIR_GET = 1;
  157.   {$IFDEF BCB} {$EXTERNALSYM DATADIR_SET} {$ENDIF}
  158.   DATADIR_SET = 2;
  159.   {$IFDEF BCB} {$EXTERNALSYM CALLTYPE_TOPLEVEL} {$ENDIF}
  160.   CALLTYPE_TOPLEVEL         = 1;
  161.   {$IFDEF BCB} {$EXTERNALSYM CALLTYPE_NESTED} {$ENDIF}
  162.   CALLTYPE_NESTED         = 2;
  163.   {$IFDEF BCB} {$EXTERNALSYM CALLTYPE_ASYNC} {$ENDIF}
  164.   CALLTYPE_ASYNC          = 3;
  165.   {$IFDEF BCB} {$EXTERNALSYM CALLTYPE_TOPLEVEL_CALLPENDING} {$ENDIF}
  166.   CALLTYPE_TOPLEVEL_CALLPENDING = 4;
  167.   {$IFDEF BCB} {$EXTERNALSYM CALLTYPE_ASYNC_CALLPENDING} {$ENDIF}
  168.   CALLTYPE_ASYNC_CALLPENDING  = 5;
  169.   {$IFDEF BCB} {$EXTERNALSYM SERVERCALL_ISHANDLED} {$ENDIF}
  170.   SERVERCALL_ISHANDLED  = 0;
  171.   {$IFDEF BCB} {$EXTERNALSYM SERVERCALL_REJECTED} {$ENDIF}
  172.   SERVERCALL_REJECTED = 1;
  173.   {$IFDEF BCB} {$EXTERNALSYM SERVERCALL_RETRYLATER} {$ENDIF}
  174.   SERVERCALL_RETRYLATER = 2;
  175.   {$IFDEF BCB} {$EXTERNALSYM PENDINGTYPE_TOPLEVEL} {$ENDIF}
  176.   PENDINGTYPE_TOPLEVEL = 1;
  177.   {$IFDEF BCB} {$EXTERNALSYM PENDINGTYPE_NESTED} {$ENDIF}
  178.   PENDINGTYPE_NESTED   = 2;
  179.   {$IFDEF BCB} {$EXTERNALSYM PENDINGMSG_CANCELCALL} {$ENDIF}
  180.   PENDINGMSG_CANCELCALL     = 0;
  181.   {$IFDEF BCB} {$EXTERNALSYM PENDINGMSG_WAITNOPROCESS} {$ENDIF}
  182.   PENDINGMSG_WAITNOPROCESS  = 1;
  183.   {$IFDEF BCB} {$EXTERNALSYM PENDINGMSG_WAITDEFPROCESS} {$ENDIF}
  184.   PENDINGMSG_WAITDEFPROCESS = 2;
  185.   {$IFDEF BCB} {$EXTERNALSYM REGCLS_SINGLEUSE} {$ENDIF}
  186.   REGCLS_SINGLEUSE      = 0;
  187.   {$IFDEF BCB} {$EXTERNALSYM REGCLS_MULTIPLEUSE} {$ENDIF}
  188.   REGCLS_MULTIPLEUSE    = 1;
  189.   {$IFDEF BCB} {$EXTERNALSYM REGCLS_MULTI_SEPARATE} {$ENDIF}
  190.   REGCLS_MULTI_SEPARATE = 2;
  191.   {$IFDEF BCB} {$EXTERNALSYM MARSHALINTERFACE_MIN} {$ENDIF}
  192.   MARSHALINTERFACE_MIN = 500;
  193.   {$IFDEF BCB} {$EXTERNALSYM CWCSTORAGENAME} {$ENDIF}
  194.   CWCSTORAGENAME = 32;
  195.   {$IFDEF BCB} {$EXTERNALSYM STGM_DIRECT} {$ENDIF}
  196.   STGM_DIRECT           = $00000000;
  197.   {$IFDEF BCB} {$EXTERNALSYM STGM_TRANSACTED} {$ENDIF}
  198.   STGM_TRANSACTED       = $00010000;
  199.   {$IFDEF BCB} {$EXTERNALSYM STGM_SIMPLE} {$ENDIF}
  200.   STGM_SIMPLE           = $08000000;
  201.   {$IFDEF BCB} {$EXTERNALSYM STGM_READ} {$ENDIF}
  202.   STGM_READ             = $00000000;
  203.   {$IFDEF BCB} {$EXTERNALSYM STGM_WRITE} {$ENDIF}
  204.   STGM_WRITE            = $00000001;
  205.   {$IFDEF BCB} {$EXTERNALSYM STGM_READWRITE} {$ENDIF}
  206.   STGM_READWRITE        = $00000002;
  207.   {$IFDEF BCB} {$EXTERNALSYM STGM_SHARE_DENY_NONE} {$ENDIF}
  208.   STGM_SHARE_DENY_NONE  = $00000040;
  209.   {$IFDEF BCB} {$EXTERNALSYM STGM_SHARE_DENY_READ} {$ENDIF}
  210.   STGM_SHARE_DENY_READ  = $00000030;
  211.   {$IFDEF BCB} {$EXTERNALSYM STGM_SHARE_DENY_WRITE} {$ENDIF}
  212.   STGM_SHARE_DENY_WRITE = $00000020;
  213.   {$IFDEF BCB} {$EXTERNALSYM STGM_SHARE_EXCLUSIVE} {$ENDIF}
  214.   STGM_SHARE_EXCLUSIVE  = $00000010;
  215.   {$IFDEF BCB} {$EXTERNALSYM STGM_PRIORITY} {$ENDIF}
  216.   STGM_PRIORITY         = $00040000;
  217.   {$IFDEF BCB} {$EXTERNALSYM STGM_DELETEONRELEASE} {$ENDIF}
  218.   STGM_DELETEONRELEASE  = $04000000;
  219.   {$IFDEF BCB} {$EXTERNALSYM STGM_CREATE} {$ENDIF}
  220.   STGM_CREATE           = $00001000;
  221.   {$IFDEF BCB} {$EXTERNALSYM STGM_CONVERT} {$ENDIF}
  222.   STGM_CONVERT          = $00020000;
  223.   {$IFDEF BCB} {$EXTERNALSYM STGM_FAILIFTHERE} {$ENDIF}
  224.   STGM_FAILIFTHERE      = $00000000;
  225.   {$IFDEF BCB} {$EXTERNALSYM FADF_AUTO} {$ENDIF}
  226.   FADF_AUTO      = $0001;  { array is allocated on the stack }
  227.   {$IFDEF BCB} {$EXTERNALSYM FADF_STATIC} {$ENDIF}
  228.   FADF_STATIC    = $0002;  { array is staticly allocated }
  229.   {$IFDEF BCB} {$EXTERNALSYM FADF_EMBEDDED} {$ENDIF}
  230.   FADF_EMBEDDED  = $0004;  { array is embedded in a structure }
  231.   {$IFDEF BCB} {$EXTERNALSYM FADF_FIXEDSIZE} {$ENDIF}
  232.   FADF_FIXEDSIZE = $0010;  { array may not be resized or reallocated }
  233.   {$IFDEF BCB} {$EXTERNALSYM FADF_BSTR} {$ENDIF}
  234.   FADF_BSTR      = $0100;  { an array of BSTRs }
  235.   {$IFDEF BCB} {$EXTERNALSYM FADF_UNKNOWN} {$ENDIF}
  236.   FADF_UNKNOWN   = $0200;  { an array of IUnknown }
  237.   {$IFDEF BCB} {$EXTERNALSYM FADF_DISPATCH} {$ENDIF}
  238.   FADF_DISPATCH  = $0400;  { an array of IDispatch }
  239.   {$IFDEF BCB} {$EXTERNALSYM FADF_VARIANT} {$ENDIF}
  240.   FADF_VARIANT   = $0800;  { an array of VARIANTs }
  241.   {$IFDEF BCB} {$EXTERNALSYM FADF_RESERVED} {$ENDIF}
  242.   FADF_RESERVED  = $F0E8;  { bits reserved for future use }
  243. { VARENUM usage key,
  244.     [V] - may appear in a VARIANT
  245.     [T] - may appear in a TYPEDESC
  246.     [P] - may appear in an OLE property set
  247.     [S] - may appear in a Safe Array }
  248.   {$IFDEF BCB} {$EXTERNALSYM VT_EMPTY} {$ENDIF}
  249.   VT_EMPTY           = 0;   { [V]   [P]  nothing                     }
  250.   {$IFDEF BCB} {$EXTERNALSYM VT_NULL} {$ENDIF}
  251.   VT_NULL            = 1;   { [V]        SQL style Null              }
  252.   {$IFDEF BCB} {$EXTERNALSYM VT_I2} {$ENDIF}
  253.   VT_I2              = 2;   { [V][T][P]  2 byte signed int           }
  254.   {$IFDEF BCB} {$EXTERNALSYM VT_I4} {$ENDIF}
  255.   VT_I4              = 3;   { [V][T][P]  4 byte signed int           }
  256.   {$IFDEF BCB} {$EXTERNALSYM VT_R4} {$ENDIF}
  257.   VT_R4              = 4;   { [V][T][P]  4 byte real                 }
  258.   {$IFDEF BCB} {$EXTERNALSYM VT_R8} {$ENDIF}
  259.   VT_R8              = 5;   { [V][T][P]  8 byte real                 }
  260.   {$IFDEF BCB} {$EXTERNALSYM VT_CY} {$ENDIF}
  261.   VT_CY              = 6;   { [V][T][P]  currency                    }
  262.   {$IFDEF BCB} {$EXTERNALSYM VT_DATE} {$ENDIF}
  263.   VT_DATE            = 7;   { [V][T][P]  date                        }
  264.   {$IFDEF BCB} {$EXTERNALSYM VT_BSTR} {$ENDIF}
  265.   VT_BSTR            = 8;   { [V][T][P]  binary string               }
  266.   {$IFDEF BCB} {$EXTERNALSYM VT_DISPATCH} {$ENDIF}
  267.   VT_DISPATCH        = 9;   { [V][T]     IDispatch FAR*              }
  268.   {$IFDEF BCB} {$EXTERNALSYM VT_ERROR} {$ENDIF}
  269.   VT_ERROR           = 10;  { [V][T]     SCODE                       }
  270.   {$IFDEF BCB} {$EXTERNALSYM VT_BOOL} {$ENDIF}
  271.   VT_BOOL            = 11;  { [V][T][P]  True=-1, False=0            }
  272.   {$IFDEF BCB} {$EXTERNALSYM VT_VARIANT} {$ENDIF}
  273.   VT_VARIANT         = 12;  { [V][T][P]  VARIANT FAR*                }
  274.   {$IFDEF BCB} {$EXTERNALSYM VT_UNKNOWN} {$ENDIF}
  275.   VT_UNKNOWN         = 13;  { [V][T]     IUnknown FAR*               }
  276.   {$IFDEF BCB} {$EXTERNALSYM VT_I1} {$ENDIF}
  277.   VT_I1              = 16;  {    [T]     signed char                 }
  278.   {$IFDEF BCB} {$EXTERNALSYM VT_UI1} {$ENDIF}
  279.   VT_UI1             = 17;  {    [T]     unsigned char               }
  280.   {$IFDEF BCB} {$EXTERNALSYM VT_UI2} {$ENDIF}
  281.   VT_UI2             = 18;  {    [T]     unsigned short              }
  282.   {$IFDEF BCB} {$EXTERNALSYM VT_UI4} {$ENDIF}
  283.   VT_UI4             = 19;  {    [T]     unsigned short              }
  284.   {$IFDEF BCB} {$EXTERNALSYM VT_I8} {$ENDIF}
  285.   VT_I8              = 20;  {    [T][P]  signed 64-bit int           }
  286.   {$IFDEF BCB} {$EXTERNALSYM VT_UI8} {$ENDIF}
  287.   VT_UI8             = 21;  {    [T]     unsigned 64-bit int         }
  288.   {$IFDEF BCB} {$EXTERNALSYM VT_INT} {$ENDIF}
  289.   VT_INT             = 22;  {    [T]     signed machine int          }
  290.   {$IFDEF BCB} {$EXTERNALSYM VT_UINT} {$ENDIF}
  291.   VT_UINT            = 23;  {    [T]     unsigned machine int        }
  292.   {$IFDEF BCB} {$EXTERNALSYM VT_VOID} {$ENDIF}
  293.   VT_VOID            = 24;  {    [T]     C style void                }
  294.   {$IFDEF BCB} {$EXTERNALSYM VT_HRESULT} {$ENDIF}
  295.   VT_HRESULT         = 25;  {    [T]                                 }
  296.   {$IFDEF BCB} {$EXTERNALSYM VT_PTR} {$ENDIF}
  297.   VT_PTR             = 26;  {    [T]     pointer type                }
  298.   {$IFDEF BCB} {$EXTERNALSYM VT_SAFEARRAY} {$ENDIF}
  299.   VT_SAFEARRAY       = 27;  {    [T]     (use VT_ARRAY in VARIANT)   }
  300.   {$IFDEF BCB} {$EXTERNALSYM VT_CARRAY} {$ENDIF}
  301.   VT_CARRAY          = 28;  {    [T]     C style array               }
  302.   {$IFDEF BCB} {$EXTERNALSYM VT_USERDEFINED} {$ENDIF}
  303.   VT_USERDEFINED     = 29;  {    [T]     user defined type          }
  304.   {$IFDEF BCB} {$EXTERNALSYM VT_LPSTR} {$ENDIF}
  305.   VT_LPSTR           = 30;  {    [T][P]  null terminated string      }
  306.   {$IFDEF BCB} {$EXTERNALSYM VT_LPWSTR} {$ENDIF}
  307.   VT_LPWSTR          = 31;  {    [T][P]  wide null terminated string }
  308.   {$IFDEF BCB} {$EXTERNALSYM VT_FILETIME} {$ENDIF}
  309.   VT_FILETIME        = 64;  {       [P]  FILETIME                    }
  310.   {$IFDEF BCB} {$EXTERNALSYM VT_BLOB} {$ENDIF}
  311.   VT_BLOB            = 65;  {       [P]  Length prefixed bytes       }
  312.   {$IFDEF BCB} {$EXTERNALSYM VT_STREAM} {$ENDIF}
  313.   VT_STREAM          = 66;  {       [P]  Name of the stream follows  }
  314.   {$IFDEF BCB} {$EXTERNALSYM VT_STORAGE} {$ENDIF}
  315.   VT_STORAGE         = 67;  {       [P]  Name of the storage follows }
  316.   {$IFDEF BCB} {$EXTERNALSYM VT_STREAMED_OBJECT} {$ENDIF}
  317.   VT_STREAMED_OBJECT = 68;  {       [P]  Stream contains an object   }
  318.   {$IFDEF BCB} {$EXTERNALSYM VT_STORED_OBJECT} {$ENDIF}
  319.   VT_STORED_OBJECT   = 69;  {       [P]  Storage contains an object  }
  320.   {$IFDEF BCB} {$EXTERNALSYM VT_BLOB_OBJECT} {$ENDIF}
  321.   VT_BLOB_OBJECT     = 70;  {       [P]  Blob contains an object     }
  322.   {$IFDEF BCB} {$EXTERNALSYM VT_CF} {$ENDIF}
  323.   VT_CF              = 71;  {       [P]  Clipboard format            }
  324.   {$IFDEF BCB} {$EXTERNALSYM VT_CLSID} {$ENDIF}
  325.   VT_CLSID           = 72;  {       [P]  A Class ID                  }
  326.   {$IFDEF BCB} {$EXTERNALSYM VT_VECTOR} {$ENDIF}
  327.   VT_VECTOR       = $1000;  {       [P]  simple counted array        }
  328.   {$IFDEF BCB} {$EXTERNALSYM VT_ARRAY} {$ENDIF}
  329.   VT_ARRAY        = $2000;  { [V]        SAFEARRAY*                  }
  330.   {$IFDEF BCB} {$EXTERNALSYM VT_BYREF} {$ENDIF}
  331.   VT_BYREF        = $4000;  { [V]                                    }
  332.   {$IFDEF BCB} {$EXTERNALSYM VT_RESERVED} {$ENDIF}
  333.   VT_RESERVED     = $8000;
  334.   {$IFDEF BCB} {$EXTERNALSYM TKIND_ENUM} {$ENDIF}
  335.   TKIND_ENUM      = 0;
  336.   {$IFDEF BCB} {$EXTERNALSYM TKIND_RECORD} {$ENDIF}
  337.   TKIND_RECORD    = 1;
  338.   {$IFDEF BCB} {$EXTERNALSYM TKIND_MODULE} {$ENDIF}
  339.   TKIND_MODULE    = 2;
  340.   {$IFDEF BCB} {$EXTERNALSYM TKIND_INTERFACE} {$ENDIF}
  341.   TKIND_INTERFACE = 3;
  342.   {$IFDEF BCB} {$EXTERNALSYM TKIND_DISPATCH} {$ENDIF}
  343.   TKIND_DISPATCH  = 4;
  344.   {$IFDEF BCB} {$EXTERNALSYM TKIND_COCLASS} {$ENDIF}
  345.   TKIND_COCLASS   = 5;
  346.   {$IFDEF BCB} {$EXTERNALSYM TKIND_ALIAS} {$ENDIF}
  347.   TKIND_ALIAS     = 6;
  348.   {$IFDEF BCB} {$EXTERNALSYM TKIND_UNION} {$ENDIF}
  349.   TKIND_UNION     = 7;
  350.   {$IFDEF BCB} {$EXTERNALSYM TKIND_MAX} {$ENDIF}
  351.   TKIND_MAX       = 8;
  352.   {$IFDEF BCB} {$EXTERNALSYM CC_CDECL} {$ENDIF}
  353.   CC_CDECL     = 1;
  354.   {$IFDEF BCB} {$EXTERNALSYM CC_PASCAL} {$ENDIF}
  355.   CC_PASCAL    = 2;
  356.   {$IFDEF BCB} {$EXTERNALSYM CC_MACPASCAL} {$ENDIF}
  357.   CC_MACPASCAL = 3;
  358.   {$IFDEF BCB} {$EXTERNALSYM CC_STDCALL} {$ENDIF}
  359.   CC_STDCALL   = 4;
  360.   {$IFDEF BCB} {$EXTERNALSYM CC_RESERVED} {$ENDIF}
  361.   CC_RESERVED  = 5;
  362.   {$IFDEF BCB} {$EXTERNALSYM CC_SYSCALL} {$ENDIF}
  363.   CC_SYSCALL   = 6;
  364.   {$IFDEF BCB} {$EXTERNALSYM CC_MPWCDECL} {$ENDIF}
  365.   CC_MPWCDECL  = 7;
  366.   {$IFDEF BCB} {$EXTERNALSYM CC_MPWPASCAL} {$ENDIF}
  367.   CC_MPWPASCAL = 8;
  368.   {$IFDEF BCB} {$EXTERNALSYM CC_MAX} {$ENDIF}
  369.   CC_MAX       = 9;
  370.   {$IFDEF BCB} {$EXTERNALSYM FUNC_VIRTUAL} {$ENDIF}
  371.   FUNC_VIRTUAL     = 0;
  372.   {$IFDEF BCB} {$EXTERNALSYM FUNC_PUREVIRTUAL} {$ENDIF}
  373.   FUNC_PUREVIRTUAL = 1;
  374.   {$IFDEF BCB} {$EXTERNALSYM FUNC_NONVIRTUAL} {$ENDIF}
  375.   FUNC_NONVIRTUAL  = 2;
  376.   {$IFDEF BCB} {$EXTERNALSYM FUNC_STATIC} {$ENDIF}
  377.   FUNC_STATIC      = 3;
  378.   {$IFDEF BCB} {$EXTERNALSYM FUNC_DISPATCH} {$ENDIF}
  379.   FUNC_DISPATCH    = 4;
  380.   {$IFDEF BCB} {$EXTERNALSYM INVOKE_FUNC} {$ENDIF}
  381.   INVOKE_FUNC           = 1;
  382.   {$IFDEF BCB} {$EXTERNALSYM INVOKE_PROPERTYGET} {$ENDIF}
  383.   INVOKE_PROPERTYGET    = 2;
  384.   {$IFDEF BCB} {$EXTERNALSYM INVOKE_PROPERTYPUT} {$ENDIF}
  385.   INVOKE_PROPERTYPUT    = 4;
  386.   {$IFDEF BCB} {$EXTERNALSYM INVOKE_PROPERTYPUTREF} {$ENDIF}
  387.   INVOKE_PROPERTYPUTREF = 8;
  388.   {$IFDEF BCB} {$EXTERNALSYM VAR_PERINSTANCE} {$ENDIF}
  389.   VAR_PERINSTANCE = 0;
  390.   {$IFDEF BCB} {$EXTERNALSYM VAR_STATIC} {$ENDIF}
  391.   VAR_STATIC      = 1;
  392.   {$IFDEF BCB} {$EXTERNALSYM VAR_CONST} {$ENDIF}
  393.   VAR_CONST       = 2;
  394.   {$IFDEF BCB} {$EXTERNALSYM VAR_DISPATCH} {$ENDIF}
  395.   VAR_DISPATCH    = 3;
  396.   {$IFDEF BCB} {$EXTERNALSYM IMPLTYPEFLAG_FDEFAULT} {$ENDIF}
  397.   IMPLTYPEFLAG_FDEFAULT    = 1;
  398.   {$IFDEF BCB} {$EXTERNALSYM IMPLTYPEFLAG_FSOURCE} {$ENDIF}
  399.   IMPLTYPEFLAG_FSOURCE     = 2;
  400.   {$IFDEF BCB} {$EXTERNALSYM IMPLTYPEFLAG_FRESTRICTED} {$ENDIF}
  401.   IMPLTYPEFLAG_FRESTRICTED = 4;
  402.   {$IFDEF BCB} {$EXTERNALSYM TYPEFLAG_FAPPOBJECT} {$ENDIF}
  403.   TYPEFLAG_FAPPOBJECT   = $0001;
  404.   {$IFDEF BCB} {$EXTERNALSYM TYPEFLAG_FCANCREATE} {$ENDIF}
  405.   TYPEFLAG_FCANCREATE   = $0002;
  406.   {$IFDEF BCB} {$EXTERNALSYM TYPEFLAG_FLICENSED} {$ENDIF}
  407.   TYPEFLAG_FLICENSED    = $0004;
  408.   {$IFDEF BCB} {$EXTERNALSYM TYPEFLAG_FPREDECLID} {$ENDIF}
  409.   TYPEFLAG_FPREDECLID   = $0008;
  410.   {$IFDEF BCB} {$EXTERNALSYM TYPEFLAG_FHIDDEN} {$ENDIF}
  411.   TYPEFLAG_FHIDDEN    = $0010;
  412.   {$IFDEF BCB} {$EXTERNALSYM TYPEFLAG_FCONTROL} {$ENDIF}
  413.   TYPEFLAG_FCONTROL   = $0020;
  414.   {$IFDEF BCB} {$EXTERNALSYM TYPEFLAG_FDUAL} {$ENDIF}
  415.   TYPEFLAG_FDUAL    = $0040;
  416.   {$IFDEF BCB} {$EXTERNALSYM TYPEFLAG_FNONEXTENSIBLE} {$ENDIF}
  417.   TYPEFLAG_FNONEXTENSIBLE = $0080;
  418.   {$IFDEF BCB} {$EXTERNALSYM TYPEFLAG_FOLEAUTOMATION} {$ENDIF}
  419.   TYPEFLAG_FOLEAUTOMATION = $0100;
  420.   {$IFDEF BCB} {$EXTERNALSYM FUNCFLAG_FRESTRICTED} {$ENDIF}
  421.   FUNCFLAG_FRESTRICTED  = $0001;
  422.   {$IFDEF BCB} {$EXTERNALSYM FUNCFLAG_FSOURCE} {$ENDIF}
  423.   FUNCFLAG_FSOURCE  = $0002;
  424.   {$IFDEF BCB} {$EXTERNALSYM FUNCFLAG_FBINDABLE} {$ENDIF}
  425.   FUNCFLAG_FBINDABLE  = $0004;
  426.   {$IFDEF BCB} {$EXTERNALSYM FUNCFLAG_FREQUESTEDIT} {$ENDIF}
  427.   FUNCFLAG_FREQUESTEDIT = $0008;
  428.   {$IFDEF BCB} {$EXTERNALSYM FUNCFLAG_FDISPLAYBIND} {$ENDIF}
  429.   FUNCFLAG_FDISPLAYBIND = $0010;
  430.   {$IFDEF BCB} {$EXTERNALSYM FUNCFLAG_FDEFAULTBIND} {$ENDIF}
  431.   FUNCFLAG_FDEFAULTBIND = $0020;
  432.   {$IFDEF BCB} {$EXTERNALSYM FUNCFLAG_FHIDDEN} {$ENDIF}
  433.   FUNCFLAG_FHIDDEN  = $0040;
  434.   {$IFDEF BCB} {$EXTERNALSYM VARFLAG_FREADONLY} {$ENDIF}
  435.   VARFLAG_FREADONLY    = $0001;
  436.   {$IFDEF BCB} {$EXTERNALSYM VARFLAG_FSOURCE} {$ENDIF}
  437.   VARFLAG_FSOURCE      = $0002;
  438.   {$IFDEF BCB} {$EXTERNALSYM VARFLAG_FBINDABLE} {$ENDIF}
  439.   VARFLAG_FBINDABLE    = $0004;
  440.   {$IFDEF BCB} {$EXTERNALSYM VARFLAG_FREQUESTEDIT} {$ENDIF}
  441.   VARFLAG_FREQUESTEDIT = $0008;
  442.   {$IFDEF BCB} {$EXTERNALSYM VARFLAG_FDISPLAYBIND} {$ENDIF}
  443.   VARFLAG_FDISPLAYBIND = $0010;
  444.   {$IFDEF BCB} {$EXTERNALSYM VARFLAG_FDEFAULTBIND} {$ENDIF}
  445.   VARFLAG_FDEFAULTBIND = $0020;
  446.   {$IFDEF BCB} {$EXTERNALSYM VARFLAG_FHIDDEN} {$ENDIF}
  447.   VARFLAG_FHIDDEN      = $0040;
  448.   {$IFDEF BCB} {$EXTERNALSYM DISPID_VALUE} {$ENDIF}
  449.   DISPID_VALUE       = 0;
  450.   {$IFDEF BCB} {$EXTERNALSYM DISPID_UNKNOWN} {$ENDIF}
  451.   DISPID_UNKNOWN     = -1;
  452.   {$IFDEF BCB} {$EXTERNALSYM DISPID_PROPERTYPUT} {$ENDIF}
  453.   DISPID_PROPERTYPUT = -3;
  454.   {$IFDEF BCB} {$EXTERNALSYM DISPID_NEWENUM} {$ENDIF}
  455.   DISPID_NEWENUM     = -4;
  456.   {$IFDEF BCB} {$EXTERNALSYM DISPID_EVALUATE} {$ENDIF}
  457.   DISPID_EVALUATE    = -5;
  458.   {$IFDEF BCB} {$EXTERNALSYM DISPID_CONSTRUCTOR} {$ENDIF}
  459.   DISPID_CONSTRUCTOR = -6;
  460.   {$IFDEF BCB} {$EXTERNALSYM DISPID_DESTRUCTOR} {$ENDIF}
  461.   DISPID_DESTRUCTOR  = -7;
  462.   {$IFDEF BCB} {$EXTERNALSYM DISPID_COLLECT} {$ENDIF}
  463.   DISPID_COLLECT     = -8;
  464.   {$IFDEF BCB} {$EXTERNALSYM DESCKIND_NONE} {$ENDIF}
  465.   DESCKIND_NONE = 0;
  466.   {$IFDEF BCB} {$EXTERNALSYM DESCKIND_FUNCDESC} {$ENDIF}
  467.   DESCKIND_FUNCDESC = 1;
  468.   {$IFDEF BCB} {$EXTERNALSYM DESCKIND_VARDESC} {$ENDIF}
  469.   DESCKIND_VARDESC = 2;
  470.   {$IFDEF BCB} {$EXTERNALSYM DESCKIND_TYPECOMP} {$ENDIF}
  471.   DESCKIND_TYPECOMP = 3;
  472.   {$IFDEF BCB} {$EXTERNALSYM DESCKIND_IMPLICITAPPOBJ} {$ENDIF}
  473.   DESCKIND_IMPLICITAPPOBJ = 4;
  474.   {$IFDEF BCB} {$EXTERNALSYM DESCKIND_MAX} {$ENDIF}
  475.   DESCKIND_MAX = 5;
  476.   {$IFDEF BCB} {$EXTERNALSYM SYS_WIN16} {$ENDIF}
  477.   SYS_WIN16 = 0;
  478.   {$IFDEF BCB} {$EXTERNALSYM SYS_WIN32} {$ENDIF}
  479.   SYS_WIN32 = 1;
  480.   {$IFDEF BCB} {$EXTERNALSYM SYS_MAC} {$ENDIF}
  481.   SYS_MAC   = 2;
  482.   {$IFDEF BCB} {$EXTERNALSYM LIBFLAG_FRESTRICTED} {$ENDIF}
  483.   LIBFLAG_FRESTRICTED = 1;
  484.   {$IFDEF BCB} {$EXTERNALSYM LIBFLAG_FCONTROL} {$ENDIF}
  485.   LIBFLAG_FCONTROL    = 2;
  486.   {$IFDEF BCB} {$EXTERNALSYM LIBFLAG_FHIDDEN} {$ENDIF}
  487.   LIBFLAG_FHIDDEN     = 4;
  488.   {$IFDEF BCB} {$EXTERNALSYM STDOLE_MAJORVERNUM} {$ENDIF}
  489.   STDOLE_MAJORVERNUM = 1;
  490.   {$IFDEF BCB} {$EXTERNALSYM STDOLE_MINORVERNUM} {$ENDIF}
  491.   STDOLE_MINORVERNUM = 0;
  492.   {$IFDEF BCB} {$EXTERNALSYM STDOLE_LCID} {$ENDIF}
  493.   STDOLE_LCID = 0;
  494.   {$IFDEF BCB} {$EXTERNALSYM VARIANT_NOVALUEPROP} {$ENDIF}
  495.   VARIANT_NOVALUEPROP = 1;
  496.   {$IFDEF BCB} {$EXTERNALSYM VAR_TIMEVALUEONLY} {$ENDIF}
  497.   VAR_TIMEVALUEONLY = 1;
  498.   {$IFDEF BCB} {$EXTERNALSYM VAR_DATEVALUEONLY} {$ENDIF}
  499.   VAR_DATEVALUEONLY = 2;
  500.   {$IFDEF BCB} {$EXTERNALSYM MEMBERID_NIL} {$ENDIF}
  501.   MEMBERID_NIL = DISPID_UNKNOWN;
  502.   {$IFDEF BCB} {$EXTERNALSYM ID_DEFAULTINST} {$ENDIF}
  503.   ID_DEFAULTINST = -2;
  504.   {$IFDEF BCB} {$EXTERNALSYM IDLFLAG_NONE} {$ENDIF}
  505.   IDLFLAG_NONE    = 0;
  506.   {$IFDEF BCB} {$EXTERNALSYM IDLFLAG_FIN} {$ENDIF}
  507.   IDLFLAG_FIN     = 1;
  508.   {$IFDEF BCB} {$EXTERNALSYM IDLFLAG_FOUT} {$ENDIF}
  509.   IDLFLAG_FOUT    = 2;
  510.   {$IFDEF BCB} {$EXTERNALSYM IDLFLAG_FLCID} {$ENDIF}
  511.   IDLFLAG_FLCID   = 4;
  512.   {$IFDEF BCB} {$EXTERNALSYM IDLFLAG_FRETVAL} {$ENDIF}
  513.   IDLFLAG_FRETVAL = 8;
  514.   {$IFDEF BCB} {$EXTERNALSYM DISPATCH_METHOD} {$ENDIF}
  515.   DISPATCH_METHOD         = 1;
  516.   {$IFDEF BCB} {$EXTERNALSYM DISPATCH_PROPERTYGET} {$ENDIF}
  517.   DISPATCH_PROPERTYGET    = 2;
  518.   {$IFDEF BCB} {$EXTERNALSYM DISPATCH_PROPERTYPUT} {$ENDIF}
  519.   DISPATCH_PROPERTYPUT    = 4;
  520.   {$IFDEF BCB} {$EXTERNALSYM DISPATCH_PROPERTYPUTREF} {$ENDIF}
  521.   DISPATCH_PROPERTYPUTREF = 8;
  522.   {$IFDEF BCB} {$EXTERNALSYM OLEIVERB_PRIMARY} {$ENDIF}
  523.   OLEIVERB_PRIMARY          = 0;
  524.   {$IFDEF BCB} {$EXTERNALSYM OLEIVERB_SHOW} {$ENDIF}
  525.   OLEIVERB_SHOW             = -1;
  526.   {$IFDEF BCB} {$EXTERNALSYM OLEIVERB_OPEN} {$ENDIF}
  527.   OLEIVERB_OPEN             = -2;
  528.   {$IFDEF BCB} {$EXTERNALSYM OLEIVERB_HIDE} {$ENDIF}
  529.   OLEIVERB_HIDE             = -3;
  530.   {$IFDEF BCB} {$EXTERNALSYM OLEIVERB_UIACTIVATE} {$ENDIF}
  531.   OLEIVERB_UIACTIVATE       = -4;
  532.   {$IFDEF BCB} {$EXTERNALSYM OLEIVERB_INPLACEACTIVATE} {$ENDIF}
  533.   OLEIVERB_INPLACEACTIVATE  = -5;
  534.   {$IFDEF BCB} {$EXTERNALSYM OLEIVERB_DISCARDUNDOSTATE} {$ENDIF}
  535.   OLEIVERB_DISCARDUNDOSTATE = -6;
  536.   {$IFDEF BCB} {$EXTERNALSYM EMBDHLP_INPROC_HANDLER} {$ENDIF}
  537.   EMBDHLP_INPROC_HANDLER = $00000000;
  538.   {$IFDEF BCB} {$EXTERNALSYM EMBDHLP_INPROC_SERVER} {$ENDIF}
  539.   EMBDHLP_INPROC_SERVER  = $00000001;
  540.   {$IFDEF BCB} {$EXTERNALSYM EMBDHLP_CREATENOW} {$ENDIF}
  541.   EMBDHLP_CREATENOW      = $00000000;
  542.   {$IFDEF BCB} {$EXTERNALSYM EMBDHLP_DELAYCREATE} {$ENDIF}
  543.   EMBDHLP_DELAYCREATE    = $00010000;
  544.   {$IFDEF BCB} {$EXTERNALSYM UPDFCACHE_NODATACACHE} {$ENDIF}
  545.   UPDFCACHE_NODATACACHE = 1;
  546.   {$IFDEF BCB} {$EXTERNALSYM UPDFCACHE_ONSAVECACHE} {$ENDIF}
  547.   UPDFCACHE_ONSAVECACHE = 2;
  548.   {$IFDEF BCB} {$EXTERNALSYM UPDFCACHE_ONSTOPCACHE} {$ENDIF}
  549.   UPDFCACHE_ONSTOPCACHE = 4;
  550.   {$IFDEF BCB} {$EXTERNALSYM UPDFCACHE_NORMALCACHE} {$ENDIF}
  551.   UPDFCACHE_NORMALCACHE = 8;
  552.   {$IFDEF BCB} {$EXTERNALSYM UPDFCACHE_IFBLANK} {$ENDIF}
  553.   UPDFCACHE_IFBLANK     = $10;
  554.   {$IFDEF BCB} {$EXTERNALSYM UPDFCACHE_ONLYIFBLANK} {$ENDIF}
  555.   UPDFCACHE_ONLYIFBLANK = $80000000;
  556.   {$IFDEF BCB} {$EXTERNALSYM UPDFCACHE_IFBLANKORONSAVECACHE} {$ENDIF}
  557.   UPDFCACHE_IFBLANKORONSAVECACHE = UPDFCACHE_IFBLANK or UPDFCACHE_ONSAVECACHE;
  558.   {$IFDEF BCB} {$EXTERNALSYM UPDFCACHE_ALL} {$ENDIF}
  559.   UPDFCACHE_ALL                  = not UPDFCACHE_ONLYIFBLANK;
  560.   {$IFDEF BCB} {$EXTERNALSYM UPDFCACHE_ALLBUTNODATACACHE} {$ENDIF}
  561.   UPDFCACHE_ALLBUTNODATACACHE    = UPDFCACHE_ALL and not UPDFCACHE_NODATACACHE;
  562.   {$IFDEF BCB} {$EXTERNALSYM DISCARDCACHE_SAVEIFDIRTY} {$ENDIF}
  563.   DISCARDCACHE_SAVEIFDIRTY = 0;
  564.   {$IFDEF BCB} {$EXTERNALSYM DISCARDCACHE_NOSAVE} {$ENDIF}
  565.   DISCARDCACHE_NOSAVE      = 1;
  566.   {$IFDEF BCB} {$EXTERNALSYM OLEGETMONIKER_ONLYIFTHERE} {$ENDIF}
  567.   OLEGETMONIKER_ONLYIFTHERE = 1;
  568.   {$IFDEF BCB} {$EXTERNALSYM OLEGETMONIKER_FORCEASSIGN} {$ENDIF}
  569.   OLEGETMONIKER_FORCEASSIGN = 2;
  570.   {$IFDEF BCB} {$EXTERNALSYM OLEGETMONIKER_UNASSIGN} {$ENDIF}
  571.   OLEGETMONIKER_UNASSIGN    = 3;
  572.   {$IFDEF BCB} {$EXTERNALSYM OLEGETMONIKER_TEMPFORUSER} {$ENDIF}
  573.   OLEGETMONIKER_TEMPFORUSER = 4;
  574.   {$IFDEF BCB} {$EXTERNALSYM OLEWHICHMK_CONTAINER} {$ENDIF}
  575.   OLEWHICHMK_CONTAINER = 1;
  576.   {$IFDEF BCB} {$EXTERNALSYM OLEWHICHMK_OBJREL} {$ENDIF}
  577.   OLEWHICHMK_OBJREL    = 2;
  578.   {$IFDEF BCB} {$EXTERNALSYM OLEWHICHMK_OBJFULL} {$ENDIF}
  579.   OLEWHICHMK_OBJFULL   = 3;
  580.   {$IFDEF BCB} {$EXTERNALSYM USERCLASSTYPE_FULL} {$ENDIF}
  581.   USERCLASSTYPE_FULL    = 1;
  582.   {$IFDEF BCB} {$EXTERNALSYM USERCLASSTYPE_SHORT} {$ENDIF}
  583.   USERCLASSTYPE_SHORT   = 2;
  584.   {$IFDEF BCB} {$EXTERNALSYM USERCLASSTYPE_APPNAME} {$ENDIF}
  585.   USERCLASSTYPE_APPNAME = 3;
  586.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_RECOMPOSEONRESIZE} {$ENDIF}
  587.   OLEMISC_RECOMPOSEONRESIZE        = 1;
  588.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_ONLYICONIC} {$ENDIF}
  589.   OLEMISC_ONLYICONIC                 = 2;
  590.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_INSERTNOTREPLACE} {$ENDIF}
  591.   OLEMISC_INSERTNOTREPLACE         = 4;
  592.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_STATIC} {$ENDIF}
  593.   OLEMISC_STATIC                 = 8;
  594.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_CANTLINKINSIDE} {$ENDIF}
  595.   OLEMISC_CANTLINKINSIDE         = 16;
  596.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_CANLINKBYOLE1} {$ENDIF}
  597.   OLEMISC_CANLINKBYOLE1                = 32;
  598.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_ISLINKOBJECT} {$ENDIF}
  599.   OLEMISC_ISLINKOBJECT                 = 64;
  600.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_INSIDEOUT} {$ENDIF}
  601.   OLEMISC_INSIDEOUT                = 128;
  602.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_ACTIVATEWHENVISIBLE} {$ENDIF}
  603.   OLEMISC_ACTIVATEWHENVISIBLE        = 256;
  604.   {$IFDEF BCB} {$EXTERNALSYM OLEMISC_RENDERINGISDEVICEINDEPENDENT} {$ENDIF}
  605.   OLEMISC_RENDERINGISDEVICEINDEPENDENT = 512;
  606.   {$IFDEF BCB} {$EXTERNALSYM OLECLOSE_SAVEIFDIRTY} {$ENDIF}
  607.   OLECLOSE_SAVEIFDIRTY = 0;
  608.   {$IFDEF BCB} {$EXTERNALSYM OLECLOSE_NOSAVE} {$ENDIF}
  609.   OLECLOSE_NOSAVE      = 1;
  610.   {$IFDEF BCB} {$EXTERNALSYM OLECLOSE_PROMPTSAVE} {$ENDIF}
  611.   OLECLOSE_PROMPTSAVE  = 2;
  612.   {$IFDEF BCB} {$EXTERNALSYM OLERENDER_NONE} {$ENDIF}
  613.   OLERENDER_NONE   = 0;
  614.   {$IFDEF BCB} {$EXTERNALSYM OLERENDER_DRAW} {$ENDIF}
  615.   OLERENDER_DRAW   = 1;
  616.   {$IFDEF BCB} {$EXTERNALSYM OLERENDER_FORMAT} {$ENDIF}
  617.   OLERENDER_FORMAT = 2;
  618.   {$IFDEF BCB} {$EXTERNALSYM OLERENDER_ASIS} {$ENDIF}
  619.   OLERENDER_ASIS   = 3;
  620.   {$IFDEF BCB} {$EXTERNALSYM OLEUPDATE_ALWAYS} {$ENDIF}
  621.   OLEUPDATE_ALWAYS = 1;
  622.   {$IFDEF BCB} {$EXTERNALSYM OLEUPDATE_ONCALL} {$ENDIF}
  623.   OLEUPDATE_ONCALL = 3;
  624.   {$IFDEF BCB} {$EXTERNALSYM OLELINKBIND_EVENIFCLASSDIFF} {$ENDIF}
  625.   OLELINKBIND_EVENIFCLASSDIFF = 1;
  626.   {$IFDEF BCB} {$EXTERNALSYM BINDSPEED_INDEFINITE} {$ENDIF}
  627.   BINDSPEED_INDEFINITE = 1;
  628.   {$IFDEF BCB} {$EXTERNALSYM BINDSPEED_MODERATE} {$ENDIF}
  629.   BINDSPEED_MODERATE   = 2;
  630.   {$IFDEF BCB} {$EXTERNALSYM BINDSPEED_IMMEDIATE} {$ENDIF}
  631.   BINDSPEED_IMMEDIATE  = 3;
  632.   {$IFDEF BCB} {$EXTERNALSYM OLECONTF_EMBEDDINGS} {$ENDIF}
  633.   OLECONTF_EMBEDDINGS  = 1;
  634.   {$IFDEF BCB} {$EXTERNALSYM OLECONTF_LINKS} {$ENDIF}
  635.   OLECONTF_LINKS   = 2;
  636.   {$IFDEF BCB} {$EXTERNALSYM OLECONTF_OTHERS} {$ENDIF}
  637.   OLECONTF_OTHERS  = 4;
  638.   {$IFDEF BCB} {$EXTERNALSYM OLECONTF_ONLYUSER} {$ENDIF}
  639.   OLECONTF_ONLYUSER  = 8;
  640.   {$IFDEF BCB} {$EXTERNALSYM OLECONTF_ONLYIFRUNNING} {$ENDIF}
  641.   OLECONTF_ONLYIFRUNNING = 16;
  642.   {$IFDEF BCB} {$EXTERNALSYM DROPEFFECT_NONE} {$ENDIF}
  643.   DROPEFFECT_NONE   = 0;
  644.   {$IFDEF BCB} {$EXTERNALSYM DROPEFFECT_COPY} {$ENDIF}
  645.   DROPEFFECT_COPY   = 1;
  646.   {$IFDEF BCB} {$EXTERNALSYM DROPEFFECT_MOVE} {$ENDIF}
  647.   DROPEFFECT_MOVE   = 2;
  648.   {$IFDEF BCB} {$EXTERNALSYM DROPEFFECT_LINK} {$ENDIF}
  649.   DROPEFFECT_LINK   = 4;
  650.   {$IFDEF BCB} {$EXTERNALSYM DROPEFFECT_SCROLL} {$ENDIF}
  651.   DROPEFFECT_SCROLL = $80000000;
  652.   {$IFDEF BCB} {$EXTERNALSYM DD_DEFSCROLLINSET} {$ENDIF}
  653.   DD_DEFSCROLLINSET    = 11;
  654.   {$IFDEF BCB} {$EXTERNALSYM DD_DEFSCROLLDELAY} {$ENDIF}
  655.   DD_DEFSCROLLDELAY    = 50;
  656.   {$IFDEF BCB} {$EXTERNALSYM DD_DEFSCROLLINTERVAL} {$ENDIF}
  657.   DD_DEFSCROLLINTERVAL = 50;
  658.   {$IFDEF BCB} {$EXTERNALSYM DD_DEFDRAGDELAY} {$ENDIF}
  659.   DD_DEFDRAGDELAY      = 200;
  660.   {$IFDEF BCB} {$EXTERNALSYM DD_DEFDRAGMINDIST} {$ENDIF}
  661.   DD_DEFDRAGMINDIST    = 2;
  662.   {$IFDEF BCB} {$EXTERNALSYM OLEVERBATTRIB_NEVERDIRTIES} {$ENDIF}
  663.   OLEVERBATTRIB_NEVERDIRTIES    = 1;
  664.   {$IFDEF BCB} {$EXTERNALSYM OLEVERBATTRIB_ONCONTAINERMENU} {$ENDIF}
  665.   OLEVERBATTRIB_ONCONTAINERMENU = 2;
  666. type
  667. { Result code }
  668.   HResult = Longint;
  669.   PResultList = ^TResultList;
  670.   TResultList = array[0..65535] of HResult;
  671. { OLE character and string types }
  672.   TOleChar = WideChar;
  673.   POleStr = PWideChar;
  674.   POleStrList = ^TOleStrList;
  675.   TOleStrList = array[0..65535] of POleStr;
  676. { 64-bit large integer }
  677.   Largeint = Comp;
  678. { Globally unique ID }
  679.   PGUID = ^TGUID;
  680.   TGUID = record
  681.     D1: Longint;
  682.     D2: Word;
  683.     D3: Word;
  684.     D4: array[0..7] of Byte;
  685.   end;
  686. { Interface ID }
  687.   PIID = PGUID;
  688.   TIID = TGUID;
  689. { Class ID }
  690.   PCLSID = PGUID;
  691.   TCLSID = TGUID;
  692. { Object ID }
  693.   PObjectID = ^TObjectID;
  694.   {$IFDEF BCB} {$EXTERNALSYM _OBJECTID} {$ENDIF}
  695.   _OBJECTID = record
  696.     Lineage: TGUID;
  697.     Uniquifier: Longint;
  698.   end;
  699.   TObjectID = _OBJECTID;
  700.   {$IFDEF BCB} {$EXTERNALSYM OBJECTID} {$ENDIF}
  701.   OBJECTID = _OBJECTID;
  702. { Locale ID }
  703.   TLCID = Longint;
  704. { Forward declarations }
  705.   {$IFDEF BCB} {$EXTERNALSYM IStream} {$ENDIF}
  706.   IStream = class;
  707.   {$IFDEF BCB} {$EXTERNALSYM IRunningObjectTable } {$ENDIF}
  708.   IRunningObjectTable = class;
  709.   {$IFDEF BCB} {$EXTERNALSYM IEnumString } {$ENDIF}
  710.   IEnumString = class;
  711.   {$IFDEF BCB} {$EXTERNALSYM IMoniker} {$ENDIF}
  712.   IMoniker = class;
  713.   {$IFDEF BCB} {$EXTERNALSYM IAdviseSink} {$ENDIF}
  714.   IAdviseSink = class;
  715.   {$IFDEF BCB} {$EXTERNALSYM IDispatch } {$ENDIF}
  716.   IDispatch = class;
  717.   {$IFDEF BCB} {$EXTERNALSYM ITypeInfo} {$ENDIF}
  718.   ITypeInfo = class;
  719.   {$IFDEF BCB} {$EXTERNALSYM ITypeComp } {$ENDIF}
  720.   ITypeComp = class;
  721.   {$IFDEF BCB} {$EXTERNALSYM ITypeLib} {$ENDIF}
  722.   ITypeLib = class;
  723.   {$IFDEF BCB} {$EXTERNALSYM IEnumOleVerb } {$ENDIF}
  724.   IEnumOleVerb = class;
  725.   {$IFDEF BCB} {$EXTERNALSYM IOleInPlaceActiveObject} {$ENDIF}
  726.   IOleInPlaceActiveObject = class;
  727. { IUnknown interface }
  728.   //{$IFDEF BCB} {$EXTERNALSYM IUnknown } {$ENDIF}
  729.   IUnknown = class
  730.   public
  731.     function QueryInterface(const iid: TIID; var obj): HResult; virtual; stdcall; abstract;
  732.     function AddRef: Longint; virtual; stdcall; abstract;
  733.     function Release: Longint; virtual; stdcall; abstract;
  734.   end;
  735. { IClassFactory interface }
  736.   {$IFDEF BCB} {$EXTERNALSYM IClassFactory } {$ENDIF}
  737.   IClassFactory = class(IUnknown)
  738.   public
  739.     function CreateInstance(unkOuter: IUnknown; const iid: TIID;
  740.       var obj): HResult; virtual; stdcall; abstract;
  741.     function LockServer(fLock: BOOL): HResult; virtual; stdcall; abstract;
  742.   end;
  743. { IMarshal interface }
  744.   {$IFDEF BCB} {$EXTERNALSYM IMarshal } {$ENDIF}
  745.   IMarshal = class(IUnknown)
  746.   public
  747.     function GetUnmarshalClass(const iid: TIID; pv: Pointer;
  748.       dwDestContext: Longint; pvDestContext: Pointer; mshlflags: Longint;
  749.       var cid: TCLSID): HResult; virtual; stdcall; abstract;
  750.     function GetMarshalSizeMax(const iid: TIID; pv: Pointer;
  751.       dwDestContext: Longint; pvDestContext: Pointer; mshlflags: Longint;
  752.       var size: Longint): HResult; virtual; stdcall; abstract;
  753.     function MarshalInterface(stm: IStream; const iid: TIID; pv: Pointer;
  754.       dwDestContext: Longint; pvDestContext: Pointer;
  755.       mshlflags: Longint): HResult; virtual; stdcall; abstract;
  756.     function UnmarshalInterface(stm: IStream; const iid: TIID;
  757.       var pv): HResult; virtual; stdcall; abstract;
  758.     function ReleaseMarshalData(stm: IStream): HResult;
  759.       virtual; stdcall; abstract;
  760.     function DisconnectObject(dwReserved: Longint): HResult;
  761.       virtual; stdcall; abstract;
  762.   end;
  763. { IMalloc interface }
  764.   {$IFDEF BCB} {$EXTERNALSYM IMalloc} {$ENDIF}
  765.   IMalloc = class(IUnknown)
  766.   public
  767.     function Alloc(cb: Longint): Pointer; virtual; stdcall; abstract;
  768.     function Realloc(pv: Pointer; cb: Longint): Pointer; virtual; stdcall; abstract;
  769.     procedure Free(pv: Pointer); virtual; stdcall; abstract;
  770.     function GetSize(pv: Pointer): Longint; virtual; stdcall; abstract;
  771.     function DidAlloc(pv: Pointer): Integer; virtual; stdcall; abstract;
  772.     procedure HeapMinimize; virtual; stdcall; abstract;
  773.   end;
  774. { IMallocSpy interface }
  775.   {$IFDEF BCB} {$EXTERNALSYM IMallocSpy } {$ENDIF}
  776.   IMallocSpy = class(IUnknown)
  777.   public
  778.     function PreAlloc(cbRequest: Longint): Longint; virtual; stdcall; abstract;
  779.     function PostAlloc(pActual: Pointer): Pointer; virtual; stdcall; abstract;
  780.     function PreFree(pRequest: Pointer; fSpyed: BOOL): Pointer; virtual; stdcall; abstract;
  781.     procedure PostFree(fSpyed: BOOL); virtual; stdcall; abstract;
  782.     function PreRealloc(pRequest: Pointer; cbRequest: Longint;
  783.       var ppNewRequest: Pointer; fSpyed: BOOL): Longint; virtual; stdcall; abstract;
  784.     function PostRealloc(pActual: Pointer; fSpyed: BOOL): Pointer; virtual; stdcall; abstract;
  785.     function PreGetSize(pRequest: Pointer; fSpyed: BOOL): Pointer; virtual; stdcall; abstract;
  786.     function PostGetSize(pActual: Pointer; fSpyed: BOOL): Longint; virtual; stdcall; abstract;
  787.     function PostDidAlloc(pRequest: Pointer; fSpyed: BOOL; fActual: Integer): Integer; virtual; stdcall; abstract;
  788.     procedure PreHeapMinimize; virtual; stdcall; abstract;
  789.     procedure PostHeapMinimize; virtual; stdcall; abstract;
  790.   end;
  791. { IStdMarshalInfo interface }
  792.   {$IFDEF BCB} {$EXTERNALSYM IStdMarshalInfo } {$ENDIF}
  793.   IStdMarshalInfo = class(IUnknown)
  794.   public
  795.     function GetClassForHandler(dwDestContext: Longint; pvDestContext: Pointer;
  796.       var clsid: TCLSID): HResult; virtual; stdcall; abstract;
  797.   end;
  798. { IExternalConnection interface }
  799.   {$IFDEF BCB} {$EXTERNALSYM IExternalConnection } {$ENDIF}
  800.   IExternalConnection = class(IUnknown)
  801.   public
  802.     function AddConnection(extconn: Longint; reserved: Longint): Longint;
  803.       virtual; stdcall; abstract;
  804.     function ReleaseConnection(extconn: Longint; reserved: Longint;
  805.       fLastReleaseCloses: BOOL): Longint; virtual; stdcall; abstract;
  806.   end;
  807. { IWeakRef interface }
  808.   {$IFDEF BCB} {$EXTERNALSYM IWeakRef } {$ENDIF}
  809.   IWeakRef = class(IUnknown)
  810.   public
  811.     function ChangeWeakCount(delta: Longint): Longint; virtual; stdcall; abstract;
  812.     function ReleaseKeepAlive(unkReleased: IUnknown;
  813.       reserved: Longint): Longint; virtual; stdcall; abstract;
  814.   end;
  815. { IEnumUnknown interface } 
  816.   {$IFDEF BCB} {$EXTERNALSYM IEnumUnknown } {$ENDIF}
  817.   IEnumUnknown = class(IUnknown)
  818.   public
  819.     function Next(celt: Longint; var elt;
  820.       pceltFetched: PLongint): HResult; virtual; stdcall; abstract;
  821.     function Skip(celt: Longint): HResult; virtual; stdcall; abstract;
  822.     function Reset: HResult; virtual; stdcall; abstract;
  823.     function Clone(var enm: IEnumUnknown): HResult; virtual; stdcall; abstract;
  824.   end;
  825. { IBindCtx interface }
  826.   PBindOpts = ^TBindOpts;
  827.   {$IFDEF BCB} {$EXTERNALSYM tagBIND_OPTS} {$ENDIF}
  828.   tagBIND_OPTS = record
  829.     cbStruct: Longint;
  830.     grfFlags: Longint;
  831.     grfMode: Longint;
  832.     dwTickCountDeadline: Longint;
  833.   end;
  834.   TBindOpts = tagBIND_OPTS;
  835.   {$IFDEF BCB} {$EXTERNALSYM BIND_OPTS} {$ENDIF}
  836.   BIND_OPTS = tagBIND_OPTS;
  837.   {$IFDEF BCB} {$EXTERNALSYM IBindCtx } {$ENDIF}
  838.   IBindCtx = class(IUnknown)
  839.   public
  840.     function RegisterObjectBound(unk: IUnknown): HResult; virtual; stdcall; abstract;
  841.     function RevokeObjectBound(unk: IUnknown): HResult; virtual; stdcall; abstract;
  842.     function ReleaseBoundObjects: HResult; virtual; stdcall; abstract;
  843.     function SetBindOptions(var bindopts: TBindOpts): HResult; virtual; stdcall; abstract;
  844.     function GetBindOptions(var bindopts: TBindOpts): HResult; virtual; stdcall; abstract;
  845.     function GetRunningObjectTable(var rot: IRunningObjectTable): HResult;
  846.       virtual; stdcall; abstract;
  847.     function RegisterObjectParam(pszKey: POleStr; unk: IUnknown): HResult;
  848.       virtual; stdcall; abstract;
  849.     function GetObjectParam(pszKey: POleStr; var unk: IUnknown): HResult;
  850.       virtual; stdcall; abstract;
  851.     function EnumObjectParam(var Enum: IEnumString): HResult; virtual; stdcall; abstract;
  852.     function RevokeObjectParam(pszKey: POleStr): HResult; virtual; stdcall; abstract;
  853.   end;
  854. { IEnumMoniker interface }
  855.   {$IFDEF BCB} {$EXTERNALSYM IEnumMoniker } {$ENDIF}
  856.   IEnumMoniker = class(IUnknown)
  857.   public
  858.     function Next(celt: Longint; var elt;
  859.       pceltFetched: PLongint): HResult; virtual; stdcall; abstract;
  860.     function Skip(celt: Longint): HResult; virtual; stdcall; abstract;
  861.     function Reset: HResult; virtual; stdcall; abstract;
  862.     function Clone(var enm: IEnumMoniker): HResult; virtual; stdcall; abstract;
  863.   end;
  864. { IRunnableObject interface }
  865.   {$IFDEF BCB} {$EXTERNALSYM IRunnableObject } {$ENDIF}
  866.   IRunnableObject = class(IUnknown)
  867.   public
  868.     function GetRunningClass(var clsid: TCLSID): HResult; virtual; stdcall; abstract;
  869.     function Run(bc: IBindCtx): HResult; virtual; stdcall; abstract;
  870.     function IsRunning: BOOL; virtual; stdcall; abstract;
  871.     function LockRunning(fLock: BOOL; fLastUnlockCloses: BOOL): HResult;
  872.       virtual; stdcall; abstract;
  873.     function SetContainedObject(fContained: BOOL): HResult; virtual; stdcall; abstract;
  874.   end;
  875. { IRunningObjectTable interface }
  876.   {$IFDEF BCB} {$EXTERNALSYM IRunningObjectTable } {$ENDIF}
  877.   IRunningObjectTable = class(IUnknown)
  878.   public
  879.     function Register(grfFlags: Longint; var unkObject: IUnknown;
  880.       mkObjectName: IMoniker; var dwRegister: Longint): HResult; virtual; stdcall; abstract;
  881.     function Revoke(dwRegister: Longint): HResult; virtual; stdcall; abstract;
  882.     function IsRunning(mkObjectName: IMoniker): HResult; virtual; stdcall; abstract;
  883.     function GetObject(mkObjectName: IMoniker;
  884.       var unkObject: IUnknown): HResult; virtual; stdcall; abstract;
  885.     function NoteChangeTime(dwRegister: Longint;
  886.       var filetime: TFileTime): HResult; virtual; stdcall; abstract;
  887.     function GetTimeOfLastChange(mkObjectName: IMoniker;
  888.       var filetime: TFileTime): HResult; virtual; stdcall; abstract;
  889.     function EnumRunning(var enumMoniker: IEnumMoniker): HResult; virtual; stdcall; abstract;
  890.   end;
  891. { IPersist interface }
  892.   {$IFDEF BCB} {$EXTERNALSYM IPersist } {$ENDIF}
  893.   IPersist = class(IUnknown)
  894.   public
  895.     function GetClassID(var classID: TCLSID): HResult; virtual; stdcall; abstract;
  896.   end;
  897. { IPersistStream interface }
  898.   {$IFDEF BCB} {$EXTERNALSYM IPersistStream } {$ENDIF}
  899.   IPersistStream = class(IPersist)
  900.   public
  901.     function IsDirty: HResult; virtual; stdcall; abstract;
  902.     function Load(stm: IStream): HResult; virtual; stdcall; abstract;
  903.     function Save(stm: IStream; fClearDirty: BOOL): HResult; virtual; stdcall; abstract;
  904.     function GetSizeMax(var cbSize: Largeint): HResult; virtual; stdcall; abstract;
  905.   end;
  906. { IMoniker interface }
  907.   {$IFDEF BCB} {$EXTERNALSYM IMoniker} {$ENDIF}
  908.   IMoniker = class(IPersistStream)
  909.   public
  910.     function BindToObject(bc: IBindCtx; mkToLeft: IMoniker;
  911.       const iidResult: TIID; var vResult): HResult; virtual; stdcall; abstract;
  912.     function BindToStorage(bc: IBindCtx; mkToLeft: IMoniker;
  913.       const iid: TIID; var vObj): HResult; virtual; stdcall; abstract;
  914.     function Reduce(bc: IBindCtx; dwReduceHowFar: Longint;
  915.       var mkToLeft: IMoniker; var mkReduced: IMoniker): HResult; virtual; stdcall; abstract;
  916.     function ComposeWith(mkRight: IMoniker; fOnlyIfNotGeneric: BOOL;
  917.       var mkComposite: IMoniker): HResult; virtual; stdcall; abstract;
  918.     function Enum(fForward: BOOL; var enumMoniker: IEnumMoniker): HResult;
  919.       virtual; stdcall; abstract;
  920.     function IsEqual(mkOtherMoniker: IMoniker): HResult; virtual; stdcall; abstract;
  921.     function Hash(var dwHash: Longint): HResult; virtual; stdcall; abstract;
  922.     function IsRunning(bc: IBindCtx; mkToLeft: IMoniker;
  923.       mkNewlyRunning: IMoniker): HResult; virtual; stdcall; abstract;
  924.     function GetTimeOfLastChange(bc: IBindCtx; mkToLeft: IMoniker;
  925.       var filetime: TFileTime): HResult; virtual; stdcall; abstract;
  926.     function Inverse(var mk: IMoniker): HResult; virtual; stdcall; abstract;
  927.     function CommonPrefixWith(mkOther: IMoniker;
  928.       var mkPrefix: IMoniker): HResult; virtual; stdcall; abstract;
  929.     function RelativePathTo(mkOther: IMoniker;
  930.       var mkRelPath: IMoniker): HResult; virtual; stdcall; abstract;
  931.     function GetDisplayName(bc: IBindCtx; mkToLeft: IMoniker;
  932.       var pszDisplayName: POleStr): HResult; virtual; stdcall; abstract;
  933.     function ParseDisplayName(bc: IBindCtx; mkToLeft: IMoniker;
  934.       pszDisplayName: POleStr; var chEaten: Longint;
  935.       var mkOut: IMoniker): HResult; virtual; stdcall; abstract;
  936.     function IsSystemMoniker(var dwMksys: Longint): HResult; virtual; stdcall; abstract;
  937.   end;
  938. { IEnumString interface }
  939.   {$IFDEF BCB} {$EXTERNALSYM IEnumString } {$ENDIF}
  940.   IEnumString = class(IUnknown)
  941.   public
  942.     function Next(celt: Longint; var elt;
  943.       pceltFetched: PLongint): HResult; virtual; stdcall; abstract;
  944.     function Skip(celt: Longint): HResult; virtual; stdcall; abstract;
  945.     function Reset: HResult; virtual; stdcall; abstract;
  946.     function Clone(var enm: IEnumString): HResult; virtual; stdcall; abstract;
  947.   end;
  948. { IStream interface }
  949.   PStatStg = ^TStatStg;
  950.   {$IFDEF BCB} {$EXTERNALSYM tagSTATSTG} {$ENDIF}
  951.   tagSTATSTG = record
  952.     pwcsName: POleStr;
  953.     dwType: Longint;
  954.     cbSize: Largeint;
  955.     mtime: TFileTime;
  956.     ctime: TFileTime;
  957.     atime: TFileTime;
  958.     grfMode: Longint;
  959.     grfLocksSupported: Longint;
  960.     clsid: TCLSID;
  961.     grfStateBits: Longint;
  962.     reserved: Longint;
  963.   end;
  964.   TStatStg = tagSTATSTG;
  965.   {$IFDEF BCB} {$EXTERNALSYM STATSTG} {$ENDIF}
  966.   STATSTG = tagSTATSTG;
  967.   {$IFDEF BCB} {$EXTERNALSYM IStream} {$ENDIF}
  968.   IStream = class(IUnknown)
  969.   public
  970.     function Read(pv: Pointer; cb: Longint; pcbRead: PLongint): HResult;
  971.       virtual; stdcall; abstract;
  972.     function Write(pv: Pointer; cb: Longint; pcbWritten: PLongint): HResult;
  973.       virtual; stdcall; abstract;
  974.     function Seek(dlibMove: Largeint; dwOrigin: Longint;
  975.       var libNewPosition: Largeint): HResult; virtual; stdcall; abstract;
  976.     function SetSize(libNewSize: Largeint): HResult; virtual; stdcall; abstract;
  977.     function CopyTo(stm: IStream; cb: Largeint; var cbRead: Largeint;
  978.       var cbWritten: Largeint): HResult; virtual; stdcall; abstract;
  979.     function Commit(grfCommitFlags: Longint): HResult; virtual; stdcall; abstract;
  980.     function Revert: HResult; virtual; stdcall; abstract;
  981.     function LockRegion(libOffset: Largeint; cb: Largeint;
  982.       dwLockType: Longint): HResult; virtual; stdcall; abstract;
  983.     function UnlockRegion(libOffset: Largeint; cb: Largeint;
  984.       dwLockType: Longint): HResult; virtual; stdcall; abstract;
  985.     function Stat(var statstg: TStatStg; grfStatFlag: Longint): HResult;
  986.       virtual; stdcall; abstract;
  987.     function Clone(var stm: IStream): HResult; virtual; stdcall; abstract;
  988.   end;
  989. { IEnumStatStg interface }
  990.   {$IFDEF BCB} {$EXTERNALSYM IEnumStatStg } {$ENDIF}
  991.   IEnumStatStg = class(IUnknown)
  992.   public
  993.     function Next(celt: Longint; var elt;
  994.       pceltFetched: PLongint): HResult; virtual; stdcall; abstract;
  995.     function Skip(celt: Longint): HResult; virtual; stdcall; abstract;
  996.     function Reset: HResult; virtual; stdcall; abstract;
  997.     function Clone(var enm: IEnumStatStg): HResult; virtual; stdcall; abstract;
  998.   end;
  999. { IStorage interface }
  1000.   TSNB = ^POleStr;
  1001.   {$IFDEF BCB} {$EXTERNALSYM IStorage} {$ENDIF}
  1002.   IStorage = class(IUnknown)
  1003.   public
  1004.     function CreateStream(pwcsName: POleStr; grfMode: Longint; reserved1: Longint;
  1005.       reserved2: Longint; var stm: IStream): HResult; virtual; stdcall; abstract;
  1006.     function OpenStream(pwcsName: POleStr; reserved1: Pointer; grfMode: Longint;
  1007.       reserved2: Longint; var stm: IStream): HResult; virtual; stdcall; abstract;
  1008.     function CreateStorage(pwcsName: POleStr; grfMode: Longint;
  1009.       dwStgFmt: Longint; reserved2: Longint; var stg: IStorage): HResult;
  1010.       virtual; stdcall; abstract;
  1011.     function OpenStorage(pwcsName: POleStr; stgPriority: IStorage;
  1012.       grfMode: Longint; snbExclude: TSNB; reserved: Longint;
  1013.       var stg: IStorage): HResult; virtual; stdcall; abstract;
  1014.     function CopyTo(ciidExclude: Longint; rgiidExclude: PIID;
  1015.       snbExclude: TSNB; stgDest: IStorage): HResult; virtual; stdcall; abstract;
  1016.     function MoveElementTo(pwcsName: POleStr; stgDest: IStorage;
  1017.       pwcsNewName: POleStr; grfFlags: Longint): HResult; virtual; stdcall; abstract;
  1018.     function Commit(grfCommitFlags: Longint): HResult; virtual; stdcall; abstract;
  1019.     function Revert: HResult; virtual; stdcall; abstract;
  1020.     function EnumElements(reserved1: Longint; reserved2: Pointer; reserved3: Longint;
  1021.       var enm: IEnumStatStg): HResult; virtual; stdcall; abstract;
  1022.     function DestroyElement(pwcsName: POleStr): HResult; virtual; stdcall; abstract;
  1023.     function RenameElement(pwcsOldName: POleStr;
  1024.       pwcsNewName: POleStr): HResult; virtual; stdcall; abstract;
  1025.     function SetElementTimes(pwcsName: POleStr; const ctime: TFileTime;
  1026.       const atime: TFileTime; const mtime: TFileTime): HResult;
  1027.       virtual; stdcall; abstract;
  1028.     function SetClass(const clsid: TCLSID): HResult; virtual; stdcall; abstract;
  1029.     function SetStateBits(grfStateBits: Longint; grfMask: Longint): HResult;
  1030.       virtual; stdcall; abstract;
  1031.     function Stat(var statstg: TStatStg; grfStatFlag: Longint): HResult;
  1032.       virtual; stdcall; abstract;
  1033.   end;
  1034. { IPersistFile interface }
  1035.   {$IFDEF BCB} {$EXTERNALSYM IPersistFile } {$ENDIF}
  1036.   IPersistFile = class(IPersist)
  1037.   public
  1038.     function IsDirty: HResult; virtual; stdcall; abstract;
  1039.     function Load(pszFileName: POleStr; dwMode: Longint): HResult;
  1040.       virtual; stdcall; abstract;
  1041.     function Save(pszFileName: POleStr; fRemember: BOOL): HResult;
  1042.       virtual; stdcall; abstract;
  1043.     function SaveCompleted(pszFileName: POleStr): HResult;
  1044.       virtual; stdcall; abstract;
  1045.     function GetCurFile(var pszFileName: POleStr): HResult;
  1046.       virtual; stdcall; abstract;
  1047.   end;
  1048. { IPersistStorage interface }
  1049.   {$IFDEF BCB} {$EXTERNALSYM IPersistStorage } {$ENDIF}
  1050.   IPersistStorage = class(IPersist)
  1051.   public
  1052.     function IsDirty: HResult; virtual; stdcall; abstract;
  1053.     function InitNew(stg: IStorage): HResult; virtual; stdcall; abstract;
  1054.     function Load(stg: IStorage): HResult; virtual; stdcall; abstract;
  1055.     function Save(stgSave: IStorage; fSameAsLoad: BOOL): HResult;
  1056.       virtual; stdcall; abstract;
  1057.     function SaveCompleted(stgNew: IStorage): HResult; virtual; stdcall; abstract;
  1058.     function HandsOffStorage: HResult; virtual; stdcall; abstract;
  1059.   end;
  1060. { ILockBytes interface }
  1061.   {$IFDEF BCB} {$EXTERNALSYM ILockBytes} {$ENDIF}
  1062.   ILockBytes = class(IUnknown)
  1063.   public
  1064.     function ReadAt(ulOffset: Largeint; pv: Pointer; cb: Longint;
  1065.       pcbRead: PLongint): HResult; virtual; stdcall; abstract;
  1066.     function WriteAt(ulOffset: Largeint; pv: Pointer; cb: Longint;
  1067.       pcbWritten: PLongint): HResult; virtual; stdcall; abstract;
  1068.     function Flush: HResult; virtual; stdcall; abstract;
  1069.     function SetSize(cb: Largeint): HResult; virtual; stdcall; abstract;
  1070.     function LockRegion(libOffset: Largeint; cb: Largeint;
  1071.       dwLockType: Longint): HResult; virtual; stdcall; abstract;
  1072.     function UnlockRegion(libOffset: Largeint; cb: Largeint;
  1073.       dwLockType: Longint): HResult; virtual; stdcall; abstract;
  1074.     function Stat(var statstg: TStatStg; grfStatFlag: Longint): HResult;
  1075.       virtual; stdcall; abstract;
  1076.   end;
  1077. { IEnumFormatEtc interface }
  1078.   PDVTargetDevice = ^TDVTargetDevice;
  1079.   {$IFDEF BCB} {$EXTERNALSYM tagDVTARGETDEVICE} {$ENDIF}
  1080.   tagDVTARGETDEVICE = record
  1081.     tdSize: Longint;
  1082.     tdDriverNameOffset: Word;
  1083.     tdDeviceNameOffset: Word;
  1084.     tdPortNameOffset: Word;
  1085.     tdExtDevmodeOffset: Word;
  1086.     tdData: record end;
  1087.   end;
  1088.   TDVTargetDevice = tagDVTARGETDEVICE;
  1089.   {$IFDEF BCB} {$EXTERNALSYM DVTARGETDEVICE} {$ENDIF}
  1090.   DVTARGETDEVICE = tagDVTARGETDEVICE;
  1091.   PClipFormat = ^TClipFormat;
  1092.   TClipFormat = Word;
  1093.   PFormatEtc = ^TFormatEtc;
  1094.   {$IFDEF BCB} {$EXTERNALSYM tagFORMATETC} {$ENDIF}
  1095.   tagFORMATETC = record
  1096.     cfFormat: TClipFormat;
  1097.     ptd: PDVTargetDevice;
  1098.     dwAspect: Longint;
  1099.     lindex: Longint;
  1100.     tymed: Longint;
  1101.   end;
  1102.   TFormatEtc = tagFORMATETC;
  1103.   {$IFDEF BCB} {$EXTERNALSYM FORMATETC} {$ENDIF}
  1104.   FORMATETC = tagFORMATETC;
  1105.   {$IFDEF BCB} {$EXTERNALSYM IEnumFormatEtc } {$ENDIF}
  1106.   IEnumFormatEtc = class(IUnknown)
  1107.   public
  1108.     function Next(celt: Longint; var elt;
  1109.       pceltFetched: PLongint): HResult; virtual; stdcall; abstract;
  1110.     function Skip(celt: Longint): HResult; virtual; stdcall; abstract;
  1111.     function Reset: HResult; virtual; stdcall; abstract;
  1112.     function Clone(var Enum: IEnumFormatEtc): HResult; virtual; stdcall; abstract;
  1113.   end;
  1114. { IEnumStatData interface }
  1115.   PStatData = ^TStatData;
  1116.   {$IFDEF BCB} {$EXTERNALSYM tagSTATDATA} {$ENDIF}
  1117.   tagSTATDATA = record
  1118.     formatetc: TFormatEtc;
  1119.     advf: Longint;
  1120.     advSink: IAdviseSink;
  1121.     dwConnection: Longint;
  1122.   end;
  1123.   TStatData = tagSTATDATA;
  1124.   {$IFDEF BCB} {$EXTERNALSYM STATDATA} {$ENDIF}
  1125.   STATDATA = tagSTATDATA;
  1126.   {$IFDEF BCB} {$EXTERNALSYM IEnumStatData } {$ENDIF}
  1127.   IEnumStatData = class(IUnknown)
  1128.   public
  1129.     function Next(celt: Longint; var elt;
  1130.       pceltFetched: PLongint): HResult; virtual; stdcall; abstract;
  1131.     function Skip(celt: Longint): HResult; virtual; stdcall; abstract;
  1132.     function Reset: HResult; virtual; stdcall; abstract;
  1133.     function Clone(var Enum: IEnumStatData): HResult; virtual; stdcall; abstract;
  1134.   end;
  1135. { IRootStorage interface }
  1136.   {$IFDEF BCB} {$EXTERNALSYM IRootStorage } {$ENDIF}
  1137.   IRootStorage = class(IUnknown)
  1138.   public
  1139.     function SwitchToFile(pszFile: POleStr): HResult; virtual; stdcall; abstract;
  1140.   end;
  1141. { IAdviseSink interface }
  1142.   PRemStgMedium = ^TRemStgMedium;
  1143.   {$IFDEF BCB} {$EXTERNALSYM tagRemSTGMEDIUM} {$ENDIF}
  1144.   tagRemSTGMEDIUM = record
  1145.     tymed: Longint;
  1146.     dwHandleType: Longint;
  1147.     pData: Longint;
  1148.     pUnkForRelease: Longint;
  1149.     cbData: Longint;
  1150.     data: record end;
  1151.   end;
  1152.   TRemStgMedium = tagRemSTGMEDIUM;
  1153.   {$IFDEF BCB} {$EXTERNALSYM RemSTGMEDIUM} {$ENDIF}
  1154.   RemSTGMEDIUM = tagRemSTGMEDIUM;
  1155.   PStgMedium = ^TStgMedium;
  1156.   {$IFDEF BCB} {$EXTERNALSYM tagSTGMEDIUM} {$ENDIF}
  1157.   tagSTGMEDIUM = record
  1158.     tymed: Longint;
  1159.     case Integer of
  1160.       0: (hBitmap: HBitmap; unkForRelease: IUnknown);
  1161.       1: (hMetaFilePict: THandle);
  1162.       2: (hEnhMetaFile: THandle);
  1163.       3: (hGlobal: HGlobal);
  1164.       4: (lpszFileName: POleStr);
  1165.       5: (stm: IStream);
  1166.       6: (stg: IStorage);
  1167.   end;
  1168.   TStgMedium = tagSTGMEDIUM;
  1169.   {$IFDEF BCB} {$EXTERNALSYM STGMEDIUM} {$ENDIF}
  1170.   STGMEDIUM = tagSTGMEDIUM;
  1171.   {$IFDEF BCB} {$EXTERNALSYM IAdviseSink} {$ENDIF}
  1172.   IAdviseSink = class(IUnknown)
  1173.   public
  1174.     procedure OnDataChange(var formatetc: TFormatEtc; var stgmed: TStgMedium);
  1175.       virtual; stdcall; abstract;
  1176.     procedure OnViewChange(dwAspect: Longint; lindex: Longint);
  1177.       virtual; stdcall; abstract;
  1178.     procedure OnRename(mk: IMoniker); virtual; stdcall; abstract;
  1179.     procedure OnSave; virtual; stdcall; abstract;
  1180.     procedure OnClose; virtual; stdcall; abstract;
  1181.   end;
  1182. { IAdviseSink2 interface }
  1183.   {$IFDEF BCB} {$EXTERNALSYM IAdviseSink2 } {$ENDIF}
  1184.   IAdviseSink2 = class(IAdviseSink)
  1185.   public
  1186.     procedure OnLinkSrcChange(mk: IMoniker); virtual; stdcall; abstract;
  1187.   end;
  1188. { IDataObject interface }
  1189.   {$IFDEF BCB} {$EXTERNALSYM IDataObject} {$ENDIF}
  1190.   IDataObject = class(IUnknown)
  1191.   public
  1192.     function GetData(var formatetcIn: TFormatEtc; var medium: TStgMedium):
  1193.       HResult; virtual; stdcall; abstract;
  1194.     function GetDataHere(var formatetc: TFormatEtc; var medium: TStgMedium):
  1195.       HResult; virtual; stdcall; abstract;
  1196.     function QueryGetData(var formatetc: TFormatEtc): HResult;
  1197.       virtual; stdcall; abstract;
  1198.     function GetCanonicalFormatEtc(var formatetc: TFormatEtc;
  1199.       var formatetcOut: TFormatEtc): HResult; virtual; stdcall; abstract;
  1200.     function SetData(var formatetc: TFormatEtc; var medium: TStgMedium;
  1201.       fRelease: BOOL): HResult; virtual; stdcall; abstract;
  1202.     function EnumFormatEtc(dwDirection: Longint; var enumFormatEtc:
  1203.       IEnumFormatEtc): HResult; virtual; stdcall; abstract;
  1204.     function DAdvise(var formatetc: TFormatEtc; advf: Longint;
  1205.       advSink: IAdviseSink; var dwConnection: Longint): HResult; virtual; stdcall; abstract;
  1206.     function DUnadvise(dwConnection: Longint): HResult; virtual; stdcall; abstract;
  1207.     function EnumDAdvise(var enumAdvise: IEnumStatData): HResult;
  1208.       virtual; stdcall; abstract;
  1209.   end;
  1210. { IDataAdviseHolder interface }
  1211.   {$IFDEF BCB} {$EXTERNALSYM IDataAdviseHolder } {$ENDIF}
  1212.   IDataAdviseHolder = class(IUnknown)
  1213.   public
  1214.     function Advise(dataObject: IDataObject; var fetc: TFormatEtc;
  1215.       advf: Longint; advise: IAdviseSink; var pdwConnection: Longint): HResult;
  1216.       virtual; stdcall; abstract;
  1217.     function Unadvise(dwConnection: Longint): HResult; virtual; stdcall; abstract;
  1218.     function EnumAdvise(var enumAdvise: IEnumStatData): HResult; virtual; stdcall; abstract;
  1219.     function SendOnDataChange(dataObject: IDataObject; dwReserved: Longint;
  1220.       advf: Longint): HResult; virtual; stdcall; abstract;
  1221.   end;
  1222. { IMessageFilter interface }
  1223.   PInterfaceInfo = ^TInterfaceInfo;
  1224.   {$IFDEF BCB} {$EXTERNALSYM tagINTERFACEINFO} {$ENDIF}
  1225.   tagINTERFACEINFO = record
  1226.     unk: IUnknown;
  1227.     iid: TIID;
  1228.     wMethod: Word;
  1229.   end;
  1230.   TInterfaceInfo = tagINTERFACEINFO;
  1231.   {$IFDEF BCB} {$EXTERNALSYM INTERFACEINFO} {$ENDIF}
  1232.   INTERFACEINFO = tagINTERFACEINFO;
  1233.   {$IFDEF BCB} {$EXTERNALSYM IMessageFilter } {$ENDIF}
  1234.   IMessageFilter = class(IUnknown)
  1235.   public
  1236.     function HandleInComingCall(dwCallType: Longint; htaskCaller: HTask;
  1237.       dwTickCount: Longint; lpInterfaceInfo: PInterfaceInfo): Longint;
  1238.       virtual; stdcall; abstract;
  1239.     function RetryRejectedCall(htaskCallee: HTask; dwTickCount: Longint;
  1240.       dwRejectType: Longint): Longint; virtual; stdcall; abstract;
  1241.     function MessagePending(htaskCallee: HTask; dwTickCount: Longint;
  1242.       dwPendingType: Longint): Longint; virtual; stdcall; abstract;
  1243.   end;
  1244. { IRpcChannelBuffer interface }
  1245.   TRpcOleDataRep = Longint;
  1246.   PRpcOleMessage = ^TRpcOleMessage;
  1247.   {$IFDEF BCB} {$EXTERNALSYM tagRPCOLEMESSAGE} {$ENDIF}
  1248.   tagRPCOLEMESSAGE = record
  1249.     reserved1: Pointer;
  1250.     dataRepresentation: TRpcOleDataRep;
  1251.     Buffer: Pointer;
  1252.     cbBuffer: Longint;
  1253.     iMethod: Longint;
  1254.     reserved2: array[0..4] of Pointer;
  1255.     rpcFlags: Longint;
  1256.   end;
  1257.   TRpcOleMessage = tagRPCOLEMESSAGE;
  1258.   {$IFDEF BCB} {$EXTERNALSYM RPCOLEMESSAGE} {$ENDIF}
  1259.   RPCOLEMESSAGE = tagRPCOLEMESSAGE;
  1260.   {$IFDEF BCB} {$EXTERNALSYM IRpcChannelBuffer } {$ENDIF}
  1261.   IRpcChannelBuffer = class(IUnknown)
  1262.   public
  1263.     function GetBuffer(var message: TRpcOleMessage; iid: TIID): HResult;
  1264.       virtual; stdcall; abstract;
  1265.     function SendReceive(var message: TRpcOleMessage;
  1266.       var status: Longint): HResult; virtual; stdcall; abstract;
  1267.     function FreeBuffer(var message: TRpcOleMessage): HResult;
  1268.       virtual; stdcall; abstract;
  1269.     function GetDestCtx(var dwDestContext: Longint;
  1270.       var pvDestContext): HResult; virtual; stdcall; abstract;
  1271.     function IsConnected: HResult; virtual; stdcall; abstract;
  1272.   end;
  1273. { IRpcProxyBuffer interface }
  1274.   {$IFDEF BCB} {$EXTERNALSYM IRpcProxyBuffer } {$ENDIF}
  1275.   IRpcProxyBuffer = class(IUnknown)
  1276.   public
  1277.     function Connect(rpcChannelBuffer: IRpcChannelBuffer): HResult;
  1278.       virtual; stdcall; abstract;
  1279.     procedure Disconnect; virtual; stdcall; abstract;
  1280.   end;
  1281. { IRpcStubBuffer interface }
  1282.   {$IFDEF BCB} {$EXTERNALSYM IRpcStubBuffer } {$ENDIF}
  1283.   IRpcStubBuffer = class(IUnknown)
  1284.   public
  1285.     function Connect(unkServer: IUnknown): HResult; virtual; stdcall; abstract;
  1286.     procedure Disconnect; virtual; stdcall; abstract;
  1287.     function Invoke(var rpcmsg: TRpcOleMessage; rpcChannelBuffer:
  1288.       IRpcChannelBuffer): HResult; virtual; stdcall; abstract;
  1289.     function IsIIDSupported(const iid: TIID): IRpcStubBuffer;
  1290.       virtual; stdcall; abstract;
  1291.     function CountRefs: Longint; virtual; stdcall; abstract;
  1292.     function DebugServerQueryInterface(var pv): HResult;
  1293.       virtual; stdcall; abstract;
  1294.     procedure DebugServerRelease(pv: Pointer); virtual; stdcall; abstract;
  1295.   end;
  1296. { IPSFactoryBuffer interface }
  1297.   {$IFDEF BCB} {$EXTERNALSYM IPSFactoryBuffer } {$ENDIF}
  1298.   IPSFactoryBuffer = class(IUnknown)
  1299.   public
  1300.     function CreateProxy(unkOuter: IUnknown; const iid: TIID;
  1301.       var proxy: IRpcProxyBuffer; var pv): HResult; virtual; stdcall; abstract;
  1302.     function CreateStub(const iid: TIID; unkServer: IUnknown;
  1303.       var stub: IRpcStubBuffer): HResult; virtual; stdcall; abstract;
  1304.   end;
  1305. { Automation types }
  1306.   PBStr = ^TBStr;
  1307.   TBStr = POleStr;
  1308.   PBStrList = ^TBStrList;
  1309.   TBStrList = array[0..65535] of TBStr;
  1310.   PBlob = ^TBlob;
  1311.   {$IFDEF BCB} {$EXTERNALSYM tagBLOB} {$ENDIF}
  1312.   tagBLOB = record
  1313.     cbSize: Longint;
  1314.     pBlobData: Pointer;
  1315.   end;
  1316.   {$IFDEF BCB} {$EXTERNALSYM TBlob} {$ENDIF}
  1317.   TBlob = tagBLOB;
  1318.   {$IFDEF BCB} {$EXTERNALSYM BLOB} {$ENDIF}
  1319.   BLOB = tagBLOB;
  1320.   PClipData = ^TClipData;
  1321.   {$IFDEF BCB} {$EXTERNALSYM tagCLIPDATA} {$ENDIF}
  1322.   tagCLIPDATA = record
  1323.     cbSize: Longint;
  1324.     ulClipFmt: Longint;
  1325.     pClipData: Pointer;
  1326.   end;
  1327.   TClipData = tagCLIPDATA;
  1328.   {$IFDEF BCB} {$EXTERNALSYM CLIPDATA} {$ENDIF}
  1329.   CLIPDATA = tagCLIPDATA;
  1330.   PSafeArrayBound = ^TSafeArrayBound;
  1331.   {$IFDEF BCB} {$EXTERNALSYM tagSAFEARRAYBOUND} {$ENDIF}
  1332.   tagSAFEARRAYBOUND = record
  1333.     cElements: Longint;
  1334.     lLbound: Longint;
  1335.   end;
  1336.   TSafeArrayBound = tagSAFEARRAYBOUND;
  1337.   {$IFDEF BCB} {$EXTERNALSYM SAFEARRAYBOUND} {$ENDIF}
  1338.   SAFEARRAYBOUND = tagSAFEARRAYBOUND;
  1339.   PSafeArray = ^TSafeArray;
  1340.   {$IFDEF BCB} {$EXTERNALSYM tagSAFEARRAY} {$ENDIF}
  1341.   tagSAFEARRAY = record
  1342.     cDims: Word;
  1343.     fFeatures: Word;
  1344.     cbElements: Longint;
  1345.     cLocks: Longint;
  1346.     pvData: Pointer;
  1347.     rgsabound: array[0..0] of TSafeArrayBound;
  1348.   end;
  1349.   TSafeArray = tagSAFEARRAY;
  1350.   {$IFDEF BCB} {$EXTERNALSYM SAFEARRAY} {$ENDIF}
  1351.   SAFEARRAY = tagSAFEARRAY;
  1352.   TOleDate = Double;
  1353.   TCurrency = Comp;
  1354.   TOleBool = WordBool;
  1355.   TVarType = Word;
  1356.   PVariantArg = ^TVariantArg;
  1357.   {$IFDEF BCB} {$EXTERNALSYM tagVARIANT} {$ENDIF}
  1358.   tagVARIANT = record
  1359.     vt: TVarType;
  1360.     wReserved1: Word;
  1361.     wReserved2: Word;
  1362.     wReserved3: Word;
  1363.     case Integer of
  1364.       VT_UI1:                  (bVal: Byte);
  1365.       VT_I2:                   (iVal: Smallint);
  1366.       VT_I4:                   (lVal: Longint);
  1367.       VT_R4:                   (fltVal: Single);
  1368.       VT_R8:                   (dblVal: Double);
  1369.       VT_BOOL:                 (vbool: TOleBool);
  1370.       VT_ERROR:                (scode: HResult);
  1371.       VT_CY:                   (cyVal: TCurrency);
  1372.       VT_DATE:                 (date: TOleDate);
  1373.       VT_BSTR:                 (bstrVal: TBStr);
  1374.       VT_UNKNOWN:              (unkVal: IUnknown);
  1375.       VT_DISPATCH:             (dispVal: IDispatch);
  1376.       VT_ARRAY:                (parray: PSafeArray);
  1377.       VT_BYREF or VT_UI1:      (pbVal: ^Byte);
  1378.       VT_BYREF or VT_I2:       (piVal: ^Smallint);
  1379.       VT_BYREF or VT_I4:       (plVal: ^Longint);
  1380.       VT_BYREF or VT_R4:       (pfltVal: ^Single);
  1381.       VT_BYREF or VT_R8:       (pdblVal: ^Double);
  1382.       VT_BYREF or VT_BOOL:     (pbool: ^TOleBool);
  1383.       VT_BYREF or VT_ERROR:    (pscode: ^HResult);
  1384.       VT_BYREF or VT_CY:       (pcyVal: ^TCurrency);
  1385.       VT_BYREF or VT_DATE:     (pdate: ^TOleDate);
  1386.       VT_BYREF or VT_BSTR:     (pbstrVal: PBStr);
  1387.       VT_BYREF or VT_UNKNOWN:  (punkVal: ^IUnknown);
  1388.       VT_BYREF or VT_DISPATCH: (pdispVal: ^IDispatch);
  1389.       VT_BYREF or VT_ARRAY:    (pparray: ^PSafeArray);
  1390.       VT_BYREF or VT_VARIANT:  (pvarVal: PVariant);
  1391.       VT_BYREF:                (byRef: Pointer);
  1392.   end;
  1393.   TVariantArg = tagVARIANT;
  1394.   {$IFDEF BCB} {$EXTERNALSYM VARIANTARG} {$ENDIF}
  1395.   VARIANTARG = tagVARIANT;
  1396.   PVariantArgList = ^TVariantArgList;
  1397.   TVariantArgList = array[0..65535] of TVariantArg;
  1398.   TDispID = Longint;
  1399.   PDispIDList = ^TDispIDList;
  1400.   TDispIDList = array[0..65535] of TDispID;
  1401.   TMemberID = Longint;
  1402.   PMemberIDList = ^TMemberIDList;
  1403.   TMemberIDList = array[0..65535] of TMemberID;
  1404.   TPropID = Longint;
  1405.   HRefType = Longint;
  1406.   TTypeKind = Longint;
  1407.   PArrayDesc = ^TArrayDesc;
  1408.   PTypeDesc= ^TTypeDesc;
  1409.   {$IFDEF BCB} {$EXTERNALSYM tagTYPEDESC} {$ENDIF}
  1410.   tagTYPEDESC = record
  1411.     case Integer of
  1412.       VT_PTR:         (ptdesc: PTypeDesc; vt: TVarType);
  1413.       VT_CARRAY:      (padesc: PArrayDesc);
  1414.       VT_USERDEFINED: (hreftype: HRefType);
  1415.   end;
  1416.   TTypeDesc = tagTYPEDESC;
  1417.   {$IFDEF BCB} {$EXTERNALSYM TYPEDESC} {$ENDIF}
  1418.   TYPEDESC = tagTYPEDESC;
  1419.   {$IFDEF BCB} {$EXTERNALSYM tagARRAYDESC} {$ENDIF}
  1420.   tagARRAYDESC = record
  1421.     tdescElem: TTypeDesc;
  1422.     cDims: Word;
  1423.     rgbounds: array[0..0] of TSafeArrayBound;
  1424.   end;
  1425.   TArrayDesc = tagARRAYDESC;
  1426.   {$IFDEF BCB} {$EXTERNALSYM ARRAYDESC} {$ENDIF}
  1427.   ARRAYDESC = tagARRAYDESC;
  1428.   PIDLDesc = ^TIDLDesc;
  1429.   {$IFDEF BCB} {$EXTERNALSYM tagIDLDESC} {$ENDIF}
  1430.   tagIDLDESC = record
  1431.     dwReserved: Longint;
  1432.     wIDLFlags: Word;
  1433.   end;
  1434.   TIDLDesc = tagIDLDESC;
  1435.   {$IFDEF BCB} {$EXTERNALSYM IDLDESC} {$ENDIF}
  1436.   IDLDESC = tagIDLDESC;
  1437.   PElemDesc = ^TElemDesc;
  1438.   {$IFDEF BCB} {$EXTERNALSYM tagELEMDESC} {$ENDIF}
  1439.   tagELEMDESC = record
  1440.     tdesc: TTypeDesc;
  1441.     idldesc: TIDLDesc;
  1442.   end;
  1443.   TElemDesc = tagELEMDESC;
  1444.   {$IFDEF BCB} {$EXTERNALSYM ELEMDESC} {$ENDIF}
  1445.   ELEMDESC = tagELEMDESC;
  1446.   PElemDescList = ^TElemDescList;
  1447.   TElemDescList = array[0..65535] of TElemDesc;
  1448.   PTypeAttr = ^TTypeAttr;
  1449.   {$IFDEF BCB} {$EXTERNALSYM tagTYPEATTR} {$ENDIF}
  1450.   tagTYPEATTR = record
  1451.     guid: TGUID;
  1452.     lcid: TLCID;
  1453.     dwReserved: Longint;
  1454.     memidConstructor: TMemberID;
  1455.     memidDestructor: TMemberID;
  1456.     lpstrSchema: POleStr;
  1457.     cbSizeInstance: Longint;
  1458.     typekind: TTypeKind;
  1459.     cFuncs: Word;
  1460.     cVars: Word;
  1461.     cImplTypes: Word;
  1462.     cbSizeVft: Word;
  1463.     cbAlignment: Word;
  1464.     wTypeFlags: Word;
  1465.     wMajorVerNum: Word;
  1466.     wMinorVerNum: Word;
  1467.     tdescAlias: TTypeDesc;
  1468.     idldescType: TIDLDesc;
  1469.   end;
  1470.   TTypeAttr = tagTYPEATTR;
  1471.   {$IFDEF BCB} {$EXTERNALSYM TYPEATTR} {$ENDIF}
  1472.   TYPEATTR = tagTYPEATTR;
  1473.   PDispParams = ^TDispParams;
  1474.   {$IFDEF BCB} {$EXTERNALSYM tagDISPPARAMS} {$ENDIF}
  1475.   tagDISPPARAMS = record
  1476.     rgvarg: PVariantArgList;
  1477.     rgdispidNamedArgs: PDispIDList;
  1478.     cArgs: Longint;
  1479.     cNamedArgs: Longint;
  1480.   end;
  1481.   TDispParams = tagDISPPARAMS;
  1482.   {$IFDEF BCB} {$EXTERNALSYM DISPPARAMS} {$ENDIF}
  1483.   DISPPARAMS = tagDISPPARAMS;
  1484.   PExcepInfo = ^TExcepInfo;
  1485.   TFNDeferredFillIn = function(ExInfo: PExcepInfo): HResult stdcall;
  1486.   {$IFDEF BCB} {$EXTERNALSYM tagEXCEPINFO} {$ENDIF}
  1487.   tagEXCEPINFO = record
  1488.     wCode: Word;
  1489.     wReserved: Word;
  1490.     bstrSource: TBStr;
  1491.     bstrDescription: TBStr;
  1492.     bstrHelpFile: TBStr;
  1493.     dwHelpContext: Longint;
  1494.     pvReserved: Pointer;
  1495.     pfnDeferredFillIn: TFNDeferredFillIn;
  1496.     scode: HResult;
  1497.   end;
  1498.   TExcepInfo = tagEXCEPINFO;
  1499.   {$IFDEF BCB} {$EXTERNALSYM EXCEPINFO} {$ENDIF}
  1500.   EXCEPINFO = tagEXCEPINFO;
  1501.   TFuncKind = Longint;
  1502.   TInvokeKind = Longint;
  1503.   TCallConv = Longint;
  1504.   PFuncDesc = ^TFuncDesc;
  1505.   {$IFDEF BCB} {$EXTERNALSYM tagFUNCDESC} {$ENDIF}
  1506.   tagFUNCDESC = record
  1507.     memid: TMemberID;
  1508.     lprgscode: PResultList;
  1509.     lprgelemdescParam: PElemDescList;
  1510.     funckind: TFuncKind;
  1511.     invkind: TInvokeKind;
  1512.     callconv: TCallConv;
  1513.     cParams: Smallint;
  1514.     cParamsOpt: Smallint;
  1515.     oVft: Smallint;
  1516.     cScodes: Smallint;
  1517.     elemdescFunc: TElemDesc;
  1518.     wFuncFlags: Word;
  1519.   end;
  1520.   TFuncDesc = tagFUNCDESC;
  1521.   {$IFDEF BCB} {$EXTERNALSYM FUNCDESC} {$ENDIF}
  1522.   FUNCDESC = tagFUNCDESC;
  1523.   TVarKind = Longint;
  1524.   PVarDesc = ^TVarDesc;
  1525.   {$IFDEF BCB} {$EXTERNALSYM tagVARDESC} {$ENDIF}
  1526.   tagVARDESC = record
  1527.     memid: TMemberID;
  1528.     lpstrSchema: POleStr;
  1529.     case Integer of
  1530.       VAR_PERINSTANCE: (
  1531.         oInst: Longint;
  1532.         elemdescVar: TElemDesc;
  1533.         wVarFlags: Word;
  1534.         varkind: TVarKind);
  1535.       VAR_CONST: (
  1536.         lpvarValue: PVariant);
  1537.   end;
  1538.   TVarDesc = tagVARDESC;
  1539.   {$IFDEF BCB} {$EXTERNALSYM VARDESC} {$ENDIF}
  1540.   VARDESC = tagVARDESC;
  1541. { ICreateTypeInfo interface }
  1542.   {$IFDEF BCB} {$EXTERNALSYM ICreateTypeInfo } {$ENDIF}
  1543.   ICreateTypeInfo = class(IUnknown)
  1544.   public
  1545.     function SetGuid(const guid: TGUID): HResult; virtual; stdcall; abstract;
  1546.     function SetTypeFlags(uTypeFlags: Integer): HResult; virtual; stdcall; abstract;
  1547.     function SetDocString(pstrDoc: POleStr): HResult; virtual; stdcall; abstract;
  1548.     function SetHelpContext(dwHelpContext: Longint): HResult; virtual; stdcall; abstract;
  1549.     function SetVersion(wMajorVerNum: Word; wMinorVerNum: Word): HResult;
  1550.       virtual; stdcall; abstract;
  1551.     function AddRefTypeInfo(tinfo: ITypeInfo; var reftype: HRefType): HResult;
  1552.       virtual; stdcall; abstract;
  1553.     function AddFuncDesc(index: Integer; var funcdesc: TFuncDesc): HResult;
  1554.       virtual; stdcall; abstract;
  1555.     function AddImplType(index: Integer; reftype: HRefType): HResult;
  1556.       virtual; stdcall; abstract;
  1557.     function SetImplTypeFlags(index: Integer; impltypeflags: Integer): HResult;
  1558.       virtual; stdcall; abstract;
  1559.     function SetAlignment(cbAlignment: Word): HResult; virtual; stdcall; abstract;
  1560.     function SetSchema(lpstrSchema: POleStr): HResult; virtual; stdcall; abstract;
  1561.     function AddVarDesc(index: Integer; var vardesc: TVarDesc): HResult;
  1562.       virtual; stdcall; abstract;
  1563.     function SetFuncAndParamNames(index: Integer; rgszNames: POleStrList;
  1564.       cNames: Integer): HResult; virtual; stdcall; abstract;
  1565.     function SetVarName(index: Integer; szName: POleStr): HResult; virtual; stdcall; abstract;
  1566.     function SetTypeDescAlias(var descAlias: TTypeDesc): HResult; virtual; stdcall; abstract;
  1567.     function DefineFuncAsDllEntry(index: Integer; szDllName: POleStr;
  1568.       szProcName: POleStr): HResult; virtual; stdcall; abstract;
  1569.     function SetFuncDocString(index: Integer; szDocString: POleStr): HResult;
  1570.       virtual; stdcall; abstract;
  1571.     function SetVarDocString(index: Integer; szDocString: POleStr): HResult;
  1572.       virtual; stdcall; abstract;
  1573.     function SetFuncHelpContext(index: Integer; dwHelpContext: Longint): HResult;
  1574.       virtual; stdcall; abstract;
  1575.     function SetVarHelpContext(index: Integer; dwHelpContext: Longint): HResult;
  1576.       virtual; stdcall; abstract;
  1577.     function SetMops(index: Integer; bstrMops: TBStr): HResult; virtual; stdcall; abstract;
  1578.     function SetTypeIdldesc(var idldesc: TIDLDesc): HResult; virtual; stdcall; abstract;
  1579.     function LayOut: HResult; virtual; stdcall; abstract;
  1580.   end;
  1581. { ICreateTypeLib interface }
  1582.   {$IFDEF BCB} {$EXTERNALSYM ICreateTypeLib } {$ENDIF}
  1583.   ICreateTypeLib = class(IUnknown)
  1584.   public
  1585.     function CreateTypeInfo(szName: POleStr; tkind: TTypeKind;
  1586.       var ictinfo: ICreateTypeInfo): HResult; virtual; stdcall; abstract;
  1587.     function SetName(szName: POleStr): HResult; virtual; stdcall; abstract;
  1588.     function SetVersion(wMajorVerNum: Word; wMinorVerNum: Word): HResult; virtual; stdcall; abstract;
  1589.     function SetGuid(const guid: TGUID): HResult; virtual; stdcall; abstract;
  1590.     function SetDocString(szDoc: POleStr): HResult; virtual; stdcall; abstract;
  1591.     function SetHelpFileName(szHelpFileName: POleStr): HResult; virtual; stdcall; abstract;
  1592.     function SetHelpContext(dwHelpContext: Longint): HResult; virtual; stdcall; abstract;
  1593.     function SetLcid(lcid: TLCID): HResult; virtual; stdcall; abstract;
  1594.     function SetLibFlags(uLibFlags: Integer): HResult; virtual; stdcall; abstract;
  1595.     function SaveAllChanges: HResult; virtual; stdcall; abstract;
  1596.   end;
  1597. { IDispatch interface }
  1598.   {$IFDEF BCB} {$EXTERNALSYM IDispatch } {$ENDIF}
  1599.   IDispatch = class(IUnknown)
  1600.   public
  1601.     function GetTypeInfoCount(var ctinfo: Integer): HResult; virtual; stdcall; abstract;
  1602.     function GetTypeInfo(itinfo: Integer; lcid: TLCID; var tinfo: ITypeInfo): HResult; virtual; stdcall; abstract;
  1603.     function GetIDsOfNames(const iid: TIID; rgszNames: POleStrList;
  1604.       cNames: Integer; lcid: TLCID; rgdispid: PDispIDList): HResult; virtual; stdcall; abstract;
  1605.     function Invoke(dispIDMember: TDispID; const iid: TIID; lcid: TLCID;
  1606.       flags: Word; var dispParams: TDispParams; varResult: PVariant;
  1607.       excepInfo: PExcepInfo; argErr: PInteger): HResult; virtual; stdcall; abstract;
  1608.   end;
  1609. { IEnumVariant interface }
  1610.   {$IFDEF BCB} {$EXTERNALSYM IEnumVariant } {$ENDIF}
  1611.   IEnumVariant = class(IUnknown)
  1612.   public
  1613.     function Next(celt: Longint; var elt;
  1614.       var pceltFetched: Longint): HResult; virtual; stdcall; abstract;
  1615.     function Skip(celt: Longint): HResult; virtual; stdcall; abstract;
  1616.     function Reset: HResult; virtual; stdcall; abstract;
  1617.     function Clone(var Enum: IEnumVariant): HResult; virtual; stdcall; abstract;
  1618.   end;
  1619. { ITypeComp interface }
  1620.   TDescKind = Longint;
  1621.   PBindPtr = ^TBindPtr;
  1622.   {$IFDEF BCB} {$EXTERNALSYM tagBINDPTR} {$ENDIF}
  1623.   tagBINDPTR = record
  1624.     case Integer of
  1625.       0: (lpfuncdesc: PFuncDesc);
  1626.       1: (lpvardesc: PVarDesc);
  1627.       2: (lptcomp: ITypeComp);
  1628.   end;
  1629.   TBindPtr = tagBINDPTR;
  1630.   {$IFDEF BCB} {$EXTERNALSYM BINDPTR} {$ENDIF}
  1631.   BINDPTR = tagBINDPTR;
  1632.   {$IFDEF BCB} {$EXTERNALSYM ITypeComp } {$ENDIF}
  1633.   ITypeComp = class(IUnknown)
  1634.   public
  1635.     function Bind(szName: POleStr; lHashVal: Longint; wflags: Word;
  1636.       var tinfo: ITypeInfo; var desckind: TDescKind;
  1637.       var bindptr: TBindPtr): HResult; virtual; stdcall; abstract;
  1638.     function BindType(szName: POleStr; lHashVal: Longint;
  1639.       var tinfo: ITypeInfo; var tcomp: ITypeComp): HResult;
  1640.       virtual; stdcall; abstract;
  1641.   end;
  1642. { ITypeInfo interface }
  1643.   {$IFDEF BCB} {$EXTERNALSYM ITypeInfo} {$ENDIF}
  1644.   ITypeInfo = class(IUnknown)
  1645.   public
  1646.     function GetTypeAttr(var ptypeattr: PTypeAttr): HResult; virtual; stdcall; abstract;
  1647.     function GetTypeComp(var tcomp: ITypeComp): HResult; virtual; stdcall; abstract;
  1648.     function GetFuncDesc(index: Integer; var pfuncdesc: PFuncDesc): HResult;
  1649.       virtual; stdcall; abstract;
  1650.     function GetVarDesc(index: Integer; var pvardesc: PVarDesc): HResult;
  1651.       virtual; stdcall; abstract;
  1652.     function GetNames(memid: TMemberID; rgbstrNames: PBStrList;
  1653.       cMaxNames: Integer; var cNames: Integer): HResult; virtual; stdcall; abstract;
  1654.     function GetRefTypeOfImplType(index: Integer; var reftype: HRefType): HResult;
  1655.       virtual; stdcall; abstract;
  1656.     function GetImplTypeFlags(index: Integer; var impltypeflags: Integer): HResult;
  1657.       virtual; stdcall; abstract;
  1658.     function GetIDsOfNames(rgpszNames: POleStrList; cNames: Integer;
  1659.       rgmemid: PMemberIDList): HResult; virtual; stdcall; abstract;
  1660.     function Invoke(pvInstance: Pointer; memid: TMemberID; flags: Word;
  1661.       var dispParams: TDispParams; varResult: PVariant;
  1662.       excepInfo: PExcepInfo; argErr: PInteger): HResult; virtual; stdcall; abstract;
  1663.     function GetDocumentation(memid: TMemberID; pbstrName: PBStr;
  1664.       pbstrDocString: PBStr; pdwHelpContext: PLongint;
  1665.       pbstrHelpFile: PBStr): HResult; virtual; stdcall; abstract;
  1666.     function GetDllEntry(memid: TMemberID; invkind: TInvokeKind;
  1667.       var bstrDllName: TBStr; var bstrName: TBStr; var wOrdinal: Word): HResult;
  1668.       virtual; stdcall; abstract;
  1669.     function GetRefTypeInfo(reftype: HRefType; var tinfo: ITypeInfo): HResult;
  1670.       virtual; stdcall; abstract;
  1671.     function AddressOfMember(memid: TMemberID; invkind: TInvokeKind;
  1672.       var ppv: Pointer): HResult; virtual; stdcall; abstract;
  1673.     function CreateInstance(unkOuter: IUnknown; const iid: TIID;
  1674.       var vObj): HResult; virtual; stdcall; abstract;
  1675.     function GetMops(memid: TMemberID; var bstrMops: TBStr): HResult;
  1676.       virtual; stdcall; abstract;
  1677.     function GetContainingTypeLib(var tlib: ITypeLib; var pindex: Integer): HResult;
  1678.       virtual; stdcall; abstract;
  1679.     procedure ReleaseTypeAttr(ptypeattr: PTypeAttr); virtual; stdcall; abstract;
  1680.     procedure ReleaseFuncDesc(pfuncdesc: PFuncDesc); virtual; stdcall; abstract;
  1681.     procedure ReleaseVarDesc(pvardesc: PVarDesc); virtual; stdcall; abstract;
  1682.   end;
  1683. { ITypeLib interface }
  1684.   TSysKind = Longint;
  1685.   PTLibAttr = ^TTLibAttr;
  1686.   {$IFDEF BCB} {$EXTERNALSYM tagTLIBATTR} {$ENDIF}
  1687.   tagTLIBATTR = record
  1688.     guid: TGUID;
  1689.     lcid: TLCID;
  1690.     syskind: TSysKind;
  1691.     wMajorVerNum: Word;
  1692.     wMinorVerNum: Word;
  1693.     wLibFlags: Word;
  1694.   end;
  1695.   TTLibAttr = tagTLIBATTR;
  1696.   {$IFDEF BCB} {$EXTERNALSYM TLIBATTR} {$ENDIF}
  1697.   TLIBATTR = tagTLIBATTR;
  1698.   PTypeInfoList = ^TTypeInfoList;
  1699.   TTypeInfoList = array[0..65535] of ITypeInfo;
  1700.   {$IFDEF BCB} {$EXTERNALSYM ITypeLib} {$ENDIF}
  1701.   ITypeLib = class(IUnknown)
  1702.   public
  1703.     function GetTypeInfoCount: Integer; virtual; stdcall; abstract;
  1704.     function GetTypeInfo(index: Integer; var tinfo: ITypeInfo): HResult; virtual; stdcall; abstract;
  1705.     function GetTypeInfoType(index: Integer; var tkind: TTypeKind): HResult;
  1706.       virtual; stdcall; abstract;
  1707.     function GetTypeInfoOfGuid(const guid: TGUID; var tinfo: ITypeInfo): HResult;
  1708.       virtual; stdcall; abstract;
  1709.     function GetLibAttr(var ptlibattr: PTLibAttr): HResult; virtual; stdcall; abstract;
  1710.     function GetTypeComp(var tcomp: ITypeComp): HResult; virtual; stdcall; abstract;
  1711.     function GetDocumentation(index: Integer; pbstrName: PBStr;
  1712.       pbstrDocString: PBStr; pdwHelpContext: PLongint;
  1713.       pbstrHelpFile: PBStr): HResult; virtual; stdcall; abstract;
  1714.     function IsName(szNameBuf: POleStr; lHashVal: Longint; var fName: BOOL): HResult;
  1715.       virtual; stdcall; abstract;
  1716.     function FindName(szNameBuf: POleStr; lHashVal: Longint;
  1717.       rgptinfo: PTypeInfoList; rgmemid: PMemberIDList;
  1718.       var pcFound: Word): HResult; virtual; stdcall; abstract;
  1719.     procedure ReleaseTLibAttr(ptlibattr: PTLibAttr); virtual; stdcall; abstract;
  1720.   end;
  1721. { IErrorInfo interface }
  1722.   {$IFDEF BCB} {$EXTERNALSYM IErrorInfo } {$ENDIF}
  1723.   IErrorInfo = class(IUnknown)
  1724.   public
  1725.     function GetGUID(var guid: TGUID): HResult; virtual; stdcall; abstract;
  1726.     function GetSource(var bstrSource: TBStr): HResult; virtual; stdcall; abstract;
  1727.     function GetDescription(var bstrDescription: TBStr): HResult; virtual; stdcall; abstract;
  1728.     function GetHelpFile(var bstrHelpFile: TBStr): HResult; virtual; stdcall; abstract;
  1729.     function GetHelpContext(var dwHelpContext: Longint): HResult; virtual; stdcall; abstract;
  1730.   end;
  1731. { ICreateErrorInfo interface }
  1732.   {$IFDEF BCB} {$EXTERNALSYM ICreateErrorInfo } {$ENDIF}
  1733.   ICreateErrorInfo = class(IUnknown)
  1734.   public
  1735.     function SetGUID(const guid: TGUID): HResult; virtual; stdcall; abstract;
  1736.     function SetSource(szSource: POleStr): HResult; virtual; stdcall; abstract;
  1737.     function SetDescription(szDescription: POleStr): HResult; virtual; stdcall; abstract;
  1738.     function SetHelpFile(szHelpFile: POleStr): HResult; virtual; stdcall; abstract;
  1739.     function SetHelpContext(dwHelpContext: Longint): HResult; virtual; stdcall; abstract;
  1740.   end;
  1741. { ISupportErrorInfo interface }
  1742.   {$IFDEF BCB} {$EXTERNALSYM ISupportErrorInfo } {$ENDIF}
  1743.   ISupportErrorInfo = class(IUnknown)
  1744.   public
  1745.     function InterfaceSupportsErrorInfo(const iid: TIID): HResult; virtual; stdcall; abstract;
  1746.   end;
  1747. { IDispatch implementation support }
  1748.   PParamData = ^TParamData;
  1749.   {$IFDEF BCB} {$EXTERNALSYM tagPARAMDATA} {$ENDIF}
  1750.   tagPARAMDATA = record
  1751.     szName: POleStr;
  1752.     vt: TVarType;
  1753.   end;
  1754.   TParamData = tagPARAMDATA;
  1755.   {$IFDEF BCB} {$EXTERNALSYM PARAMDATA} {$ENDIF}
  1756.   PARAMDATA = tagPARAMDATA;
  1757.   PParamDataList = ^TParamDataList;
  1758.   TParamDataList = array[0..65535] of TParamData;
  1759.   PMethodData = ^TMethodData;
  1760.   {$IFDEF BCB} {$EXTERNALSYM tagMETHODDATA} {$ENDIF}
  1761.   tagMETHODDATA = record
  1762.     szName: POleStr;
  1763.     ppdata: PParamDataList;
  1764.     dispid: TDispID;
  1765.     iMeth: Integer;
  1766.     cc: TCallConv;
  1767.     cArgs: Integer;
  1768.     wFlags: Word;
  1769.     vtReturn: TVarType;
  1770.   end;
  1771.   TMethodData = tagMETHODDATA;
  1772.   {$IFDEF BCB} {$EXTERNALSYM METHODDATA} {$ENDIF}
  1773.   METHODDATA = tagMETHODDATA;
  1774.   PMethodDataList = ^TMethodDataList;
  1775.   TMethodDataList = array[0..65535] of TMethodData;
  1776.   PInterfaceData = ^TInterfaceData;
  1777.   {$IFDEF BCB} {$EXTERNALSYM tagINTERFACEDATA} {$ENDIF}
  1778.   tagINTERFACEDATA = record
  1779.     pmethdata: PMethodDataList;
  1780.     cMembers: Integer;
  1781.   end;
  1782.   TInterfaceData = tagINTERFACEDATA;
  1783.   {$IFDEF BCB} {$EXTERNALSYM INTERFACEDATA} {$ENDIF}
  1784.   INTERFACEDATA = tagINTERFACEDATA;
  1785. { IOleAdviseHolder interface }
  1786.   {$IFDEF BCB} {$EXTERNALSYM IOleAdviseHolder} {$ENDIF}
  1787.   IOleAdviseHolder = class(IUnknown)
  1788.   public
  1789.     function Advise(advise: IAdviseSink; var dwConnection: Longint): HResult;
  1790.       virtual; stdcall; abstract;
  1791.     function Unadvise(dwConnection: Longint): HResult; virtual; stdcall; abstract;
  1792.     function EnumAdvise(var enumAdvise: IEnumStatData): HResult; virtual; stdcall; abstract;
  1793.     function SendOnRename(mk: IMoniker): HResult; virtual; stdcall; abstract;
  1794.     function SendOnSave: HResult; virtual; stdcall; abstract;
  1795.     function SendOnClose: HResult; virtual; stdcall; abstract;
  1796.   end;
  1797. { IOleCache interface }
  1798.   {$IFDEF BCB} {$EXTERNALSYM IOleCache } {$ENDIF}
  1799.   IOleCache = class(IUnknown)
  1800.   public