0000: 2f 2f 20 61 64 64 69 6e 2e 68 70 70 0d 0a 2f 2f // addin.hpp..//
0010: 20 28 63 29 20 c0 eb e5 ea f1 e0 ed e4 f0 20 ce (c) ......... .
0020: f0 e5 f4 ea ee e2 0d 0a 2f 2f 20 c7 e0 e3 ee eb ........// .....
0030: ee e2 ea e8 20 e8 ed f2 e5 f0 f4 e5 e9 f1 ee e2 .... ...........
0040: 20 31 d1 20 e8 20 f0 e5 e0 eb e8 e7 f6 e8 ff 20 1. . .........
0050: 49 49 6e 69 74 44 6f 6e 65 2e 0d 0a 2f 2f 20 c7 IInitDone...// .
0060: e0 e3 f0 f3 e7 ea e0 20 c2 ca 20 e1 e5 e7 20 43 ....... .. ... C
0070: 4f 4d 20 e8 20 f0 e5 e5 f1 f2 f0 e0 2e 0d 0a 0d OM . ...........
0080: 0a 23 70 72 61 67 6d 61 20 6f 6e 63 65 0d 0a 23 .#pragma once..#
0090: 70 72 61 67 6d 61 20 70 61 63 6b 28 70 75 73 68 pragma pack(push
00a0: 2c 20 38 29 0d 0a 0d 0a 23 69 6e 63 6c 75 64 65 , 8)....#include
00b0: 20 3c 63 6f 6d 64 65 66 2e 68 3e 0d 0a 0d 0a 73 <comdef.h>....s
00c0: 74 72 75 63 74 20 5f 5f 64 65 63 6c 73 70 65 63 truct __declspec
00d0: 28 75 75 69 64 28 22 61 62 36 33 34 30 30 31 2d (uuid("ab634001-
00e0: 66 31 33 64 2d 31 31 64 30 2d 61 34 35 39 2d 30 f13d-11d0-a459-0
00f0: 30 34 30 39 35 65 31 64 61 65 61 22 29 29 0d 0a 04095e1daea"))..
0100: 49 49 6e 69 74 44 6f 6e 65 20 3a 20 49 55 6e 6b IInitDone : IUnk
0110: 6e 6f 77 6e 0d 0a 7b 0d 0a 09 53 54 44 4d 45 54 nown..{...STDMET
0120: 48 4f 44 28 49 6e 69 74 29 28 49 44 69 73 70 61 HOD(Init)(IDispa
0130: 74 63 68 20 2a 70 43 6f 6e 6e 65 63 74 69 6f 6e tch *pConnection
0140: 29 20 3d 20 30 3b 0d 0a 09 53 54 44 4d 45 54 48 ) = 0;...STDMETH
0150: 4f 44 28 44 6f 6e 65 29 28 29 20 3d 20 30 3b 0d OD(Done)() = 0;.
0160: 0a 09 53 54 44 4d 45 54 48 4f 44 28 47 65 74 49 ..STDMETHOD(GetI
0170: 6e 66 6f 29 28 53 41 46 45 41 52 52 41 59 20 2a nfo)(SAFEARRAY *
0180: 2a 70 49 6e 66 6f 29 20 3d 20 30 3b 0d 0a 7d 3b *pInfo) = 0;..};
0190: 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 5f 64 65 63 ....struct __dec
01a0: 6c 73 70 65 63 28 75 75 69 64 28 22 61 62 36 33 lspec(uuid("ab63
01b0: 34 30 30 32 2d 66 31 33 64 2d 31 31 64 30 2d 61 4002-f13d-11d0-a
01c0: 34 35 39 2d 30 30 34 30 39 35 65 31 64 61 65 61 459-004095e1daea
01d0: 22 29 29 0d 0a 49 50 72 6f 70 65 72 74 79 50 72 "))..IPropertyPr
01e0: 6f 66 69 6c 65 20 3a 20 49 50 72 6f 70 65 72 74 ofile : IPropert
01f0: 79 42 61 67 0d 0a 7b 0d 0a 09 53 54 44 4d 45 54 yBag..{...STDMET
0200: 48 4f 44 28 52 65 67 69 73 74 65 72 50 72 6f 66 HOD(RegisterProf
0210: 69 6c 65 41 73 29 28 42 53 54 52 20 62 73 74 72 ileAs)(BSTR bstr
0220: 50 72 6f 66 69 6c 65 4e 61 6d 65 29 20 3d 20 30 ProfileName) = 0
0230: 3b 0d 0a 7d 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 ;..};....struct
0240: 5f 5f 64 65 63 6c 73 70 65 63 28 75 75 69 64 28 __declspec(uuid(
0250: 22 61 62 36 33 34 30 30 34 2d 66 31 33 64 2d 31 "ab634004-f13d-1
0260: 31 64 30 2d 61 34 35 39 2d 30 30 34 30 39 35 65 1d0-a459-004095e
0270: 31 64 61 65 61 22 29 29 0d 0a 49 41 73 79 6e 63 1daea"))..IAsync
0280: 45 76 65 6e 74 20 3a 20 49 55 6e 6b 6e 6f 77 6e Event : IUnknown
0290: 0d 0a 7b 0d 0a 09 53 54 44 4d 45 54 48 4f 44 28 ..{...STDMETHOD(
02a0: 53 65 74 45 76 65 6e 74 42 75 66 66 65 72 44 65 SetEventBufferDe
02b0: 70 74 68 29 28 6c 6f 6e 67 20 6c 44 65 70 74 68 pth)(long lDepth
02c0: 29 20 3d 20 30 3b 0d 0a 09 53 54 44 4d 45 54 48 ) = 0;...STDMETH
02d0: 4f 44 28 47 65 74 45 76 65 6e 74 42 75 66 66 65 OD(GetEventBuffe
02e0: 72 44 65 70 74 68 29 28 6c 6f 6e 67 20 2a 70 6c rDepth)(long *pl
02f0: 44 65 70 74 68 29 20 3d 20 30 3b 0d 0a 09 53 54 Depth) = 0;...ST
0300: 44 4d 45 54 48 4f 44 28 45 78 74 65 72 6e 61 6c DMETHOD(External
0310: 45 76 65 6e 74 29 28 42 53 54 52 20 62 73 74 72 Event)(BSTR bstr
0320: 53 6f 75 72 63 65 2c 20 42 53 54 52 20 62 73 74 Source, BSTR bst
0330: 72 4d 65 73 73 61 67 65 2c 20 42 53 54 52 20 62 rMessage, BSTR b
0340: 73 74 72 44 61 74 61 29 20 3d 20 30 3b 0d 0a 09 strData) = 0;...
0350: 53 54 44 4d 45 54 48 4f 44 28 43 6c 65 61 6e 42 STDMETHOD(CleanB
0360: 75 66 66 65 72 29 28 29 20 3d 20 30 3b 0d 0a 7d uffer)() = 0;..}
0370: 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 5f 64 65 ;....struct __de
0380: 63 6c 73 70 65 63 28 75 75 69 64 28 22 61 62 36 clspec(uuid("ab6
0390: 33 34 30 30 33 2d 66 31 33 64 2d 31 31 64 30 2d 34003-f13d-11d0-
03a0: 61 34 35 39 2d 30 30 34 30 39 35 65 31 64 61 65 a459-004095e1dae
03b0: 61 22 29 29 0d 0a 49 4c 61 6e 67 75 61 67 65 45 a"))..ILanguageE
03c0: 78 74 65 6e 64 65 72 20 3a 20 49 55 6e 6b 6e 6f xtender : IUnkno
03d0: 77 6e 0d 0a 7b 0d 0a 09 53 54 44 4d 45 54 48 4f wn..{...STDMETHO
03e0: 44 28 52 65 67 69 73 74 65 72 45 78 74 65 6e 73 D(RegisterExtens
03f0: 69 6f 6e 41 73 29 28 42 53 54 52 20 2a 62 73 74 ionAs)(BSTR *bst
0400: 72 45 78 74 65 6e 73 69 6f 6e 4e 61 6d 65 29 20 rExtensionName)
0410: 3d 20 30 3b 0d 0a 09 53 54 44 4d 45 54 48 4f 44 = 0;...STDMETHOD
0420: 28 47 65 74 4e 50 72 6f 70 73 29 28 6c 6f 6e 67 (GetNProps)(long
0430: 20 2a 70 6c 50 72 6f 70 73 29 20 3d 20 30 3b 0d *plProps) = 0;.
0440: 0a 09 53 54 44 4d 45 54 48 4f 44 28 46 69 6e 64 ..STDMETHOD(Find
0450: 50 72 6f 70 29 28 42 53 54 52 20 62 73 74 72 50 Prop)(BSTR bstrP
0460: 72 6f 70 4e 61 6d 65 2c 20 6c 6f 6e 67 20 2a 70 ropName, long *p
0470: 6c 50 72 6f 70 4e 75 6d 29 20 3d 20 30 3b 0d 0a lPropNum) = 0;..
0480: 09 53 54 44 4d 45 54 48 4f 44 28 47 65 74 50 72 .STDMETHOD(GetPr
0490: 6f 70 4e 61 6d 65 29 28 6c 6f 6e 67 20 6c 50 72 opName)(long lPr
04a0: 6f 70 4e 75 6d 2c 20 6c 6f 6e 67 20 6c 50 72 6f opNum, long lPro
04b0: 70 41 6c 69 61 73 2c 20 42 53 54 52 20 2a 70 62 pAlias, BSTR *pb
04c0: 73 74 72 50 72 6f 70 4e 61 6d 65 29 20 3d 20 30 strPropName) = 0
04d0: 3b 0d 0a 09 53 54 44 4d 45 54 48 4f 44 28 47 65 ;...STDMETHOD(Ge
04e0: 74 50 72 6f 70 56 61 6c 29 28 6c 6f 6e 67 20 6c tPropVal)(long l
04f0: 50 72 6f 70 4e 75 6d 2c 20 56 41 52 49 41 4e 54 PropNum, VARIANT
0500: 20 2a 70 76 61 72 50 72 6f 70 56 61 6c 29 20 3d *pvarPropVal) =
0510: 20 30 3b 0d 0a 09 53 54 44 4d 45 54 48 4f 44 28 0;...STDMETHOD(
0520: 53 65 74 50 72 6f 70 56 61 6c 29 28 6c 6f 6e 67 SetPropVal)(long
0530: 20 6c 50 72 6f 70 4e 75 6d 2c 20 56 41 52 49 41 lPropNum, VARIA
0540: 4e 54 20 2a 76 61 72 50 72 6f 70 56 61 6c 29 20 NT *varPropVal)
0550: 3d 20 30 3b 0d 0a 09 53 54 44 4d 45 54 48 4f 44 = 0;...STDMETHOD
0560: 28 49 73 50 72 6f 70 52 65 61 64 61 62 6c 65 29 (IsPropReadable)
0570: 28 6c 6f 6e 67 20 6c 50 72 6f 70 4e 75 6d 2c 20 (long lPropNum,
0580: 6c 6f 6e 67 20 2a 70 62 6f 6f 6c 50 72 6f 70 52 long *pboolPropR
0590: 65 61 64 29 20 3d 20 30 3b 0d 0a 09 53 54 44 4d ead) = 0;...STDM
05a0: 45 54 48 4f 44 28 49 73 50 72 6f 70 57 72 69 74 ETHOD(IsPropWrit
05b0: 61 62 6c 65 29 28 6c 6f 6e 67 20 6c 50 72 6f 70 able)(long lProp
05c0: 4e 75 6d 2c 20 6c 6f 6e 67 20 2a 70 62 6f 6f 6c Num, long *pbool
05d0: 50 72 6f 70 57 72 69 74 65 29 20 3d 20 30 3b 0d PropWrite) = 0;.
05e0: 0a 09 53 54 44 4d 45 54 48 4f 44 28 47 65 74 4e ..STDMETHOD(GetN
05f0: 4d 65 74 68 6f 64 73 29 28 6c 6f 6e 67 20 2a 70 Methods)(long *p
0600: 6c 4d 65 74 68 6f 64 73 20 29 20 3d 20 30 3b 0d lMethods ) = 0;.
0610: 0a 09 53 54 44 4d 45 54 48 4f 44 28 46 69 6e 64 ..STDMETHOD(Find
0620: 4d 65 74 68 6f 64 29 28 42 53 54 52 20 62 73 74 Method)(BSTR bst
0630: 72 4d 65 74 68 6f 64 4e 61 6d 65 2c 20 6c 6f 6e rMethodName, lon
0640: 67 20 2a 70 6c 4d 65 74 68 6f 64 4e 75 6d 29 20 g *plMethodNum)
0650: 3d 20 30 3b 0d 0a 09 53 54 44 4d 45 54 48 4f 44 = 0;...STDMETHOD
0660: 28 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 29 28 (GetMethodName)(
0670: 6c 6f 6e 67 20 6c 4d 65 74 68 6f 64 4e 75 6d 2c long lMethodNum,
0680: 20 6c 6f 6e 67 20 6c 4d 65 74 68 6f 64 41 6c 69 long lMethodAli
0690: 61 73 2c 20 42 53 54 52 20 2a 70 62 73 74 72 4d as, BSTR *pbstrM
06a0: 65 74 68 6f 64 4e 61 6d 65 29 20 3d 20 30 3b 0d ethodName) = 0;.
06b0: 0a 09 53 54 44 4d 45 54 48 4f 44 28 47 65 74 4e ..STDMETHOD(GetN
06c0: 50 61 72 61 6d 73 29 28 6c 6f 6e 67 20 6c 4d 65 Params)(long lMe
06d0: 74 68 6f 64 4e 75 6d 2c 20 6c 6f 6e 67 20 2a 70 thodNum, long *p
06e0: 6c 50 61 72 61 6d 73 29 20 3d 20 30 3b 0d 0a 09 lParams) = 0;...
06f0: 53 54 44 4d 45 54 48 4f 44 28 47 65 74 50 61 72 STDMETHOD(GetPar
0700: 61 6d 44 65 66 56 61 6c 75 65 29 28 6c 6f 6e 67 amDefValue)(long
0710: 20 6c 4d 65 74 68 6f 64 4e 75 6d 2c 20 6c 6f 6e lMethodNum, lon
0720: 67 20 6c 50 61 72 61 6d 4e 75 6d 2c 20 56 41 52 g lParamNum, VAR
0730: 49 41 4e 54 20 2a 70 76 61 72 50 61 72 61 6d 44 IANT *pvarParamD
0740: 65 66 56 61 6c 75 65 29 20 3d 20 30 3b 0d 0a 09 efValue) = 0;...
0750: 53 54 44 4d 45 54 48 4f 44 28 48 61 73 52 65 74 STDMETHOD(HasRet
0760: 56 61 6c 29 28 6c 6f 6e 67 20 6c 4d 65 74 68 6f Val)(long lMetho
0770: 64 4e 75 6d 2c 20 6c 6f 6e 67 20 2a 70 62 6f 6f dNum, long *pboo
0780: 6c 52 65 74 56 61 6c 75 65 29 20 3d 20 30 3b 0d lRetValue) = 0;.
0790: 0a 09 53 54 44 4d 45 54 48 4f 44 28 43 61 6c 6c ..STDMETHOD(Call
07a0: 41 73 50 72 6f 63 29 28 6c 6f 6e 67 20 6c 4d 65 AsProc)(long lMe
07b0: 74 68 6f 64 4e 75 6d 2c 20 53 41 46 45 41 52 52 thodNum, SAFEARR
07c0: 41 59 20 2a 2a 70 61 50 61 72 61 6d 73 29 20 3d AY **paParams) =
07d0: 20 30 3b 0d 0a 09 53 54 44 4d 45 54 48 4f 44 28 0;...STDMETHOD(
07e0: 43 61 6c 6c 41 73 46 75 6e 63 29 28 6c 6f 6e 67 CallAsFunc)(long
07f0: 20 6c 4d 65 74 68 6f 64 4e 75 6d 2c 20 56 41 52 lMethodNum, VAR
0800: 49 41 4e 54 20 2a 70 76 61 72 52 65 74 56 61 6c IANT *pvarRetVal
0810: 75 65 2c 20 53 41 46 45 41 52 52 41 59 20 2a 2a ue, SAFEARRAY **
0820: 70 61 50 61 72 61 6d 73 29 20 3d 20 30 3b 0d 0a paParams) = 0;..
0830: 7d 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 5f 64 };....struct __d
0840: 65 63 6c 73 70 65 63 28 75 75 69 64 28 22 61 62 eclspec(uuid("ab
0850: 36 33 34 30 30 35 2d 66 31 33 64 2d 31 31 64 30 634005-f13d-11d0
0860: 2d 61 34 35 39 2d 30 30 34 30 39 35 65 31 64 61 -a459-004095e1da
0870: 65 61 22 29 29 0d 0a 49 53 74 61 74 75 73 4c 69 ea"))..IStatusLi
0880: 6e 65 20 3a 20 49 55 6e 6b 6e 6f 77 6e 0d 0a 7b ne : IUnknown..{
0890: 0d 0a 09 53 54 44 4d 45 54 48 4f 44 28 53 65 74 ...STDMETHOD(Set
08a0: 53 74 61 74 75 73 4c 69 6e 65 29 28 42 53 54 52 StatusLine)(BSTR
08b0: 20 62 73 74 72 53 74 61 74 75 73 4c 69 6e 65 29 bstrStatusLine)
08c0: 20 3d 20 30 3b 0d 0a 09 53 54 44 4d 45 54 48 4f = 0;...STDMETHO
08d0: 44 28 52 65 73 65 74 53 74 61 74 75 73 4c 69 6e D(ResetStatusLin
08e0: 65 29 28 29 20 3d 20 30 3b 0d 0a 7d 3b 0d 0a 0d e)() = 0;..};...
08f0: 0a 73 74 72 75 63 74 20 5f 5f 64 65 63 6c 73 70 .struct __declsp
0900: 65 63 28 75 75 69 64 28 22 65 66 65 31 39 65 61 ec(uuid("efe19ea
0910: 30 2d 30 39 65 34 2d 31 31 64 32 2d 61 36 30 31 0-09e4-11d2-a601
0920: 2d 30 30 38 30 34 38 64 61 30 30 64 65 22 29 29 -008048da00de"))
0930: 0d 0a 49 45 78 74 57 6e 64 73 53 75 70 70 6f 72 ..IExtWndsSuppor
0940: 74 20 3a 20 49 55 6e 6b 6e 6f 77 6e 0d 0a 7b 0d t : IUnknown..{.
0950: 0a 09 53 54 44 4d 45 54 48 4f 44 28 47 65 74 41 ..STDMETHOD(GetA
0960: 70 70 4d 61 69 6e 46 72 61 6d 65 29 28 77 69 72 ppMainFrame)(wir
0970: 65 48 57 4e 44 20 2a 68 77 6e 64 29 20 3d 20 30 eHWND *hwnd) = 0
0980: 3b 0d 0a 09 53 54 44 4d 45 54 48 4f 44 28 47 65 ;...STDMETHOD(Ge
0990: 74 41 70 70 4d 44 49 46 72 61 6d 65 29 28 77 69 tAppMDIFrame)(wi
09a0: 72 65 48 57 4e 44 20 2a 68 77 6e 64 29 20 3d 20 reHWND *hwnd) =
09b0: 30 3b 0d 0a 09 53 54 44 4d 45 54 48 4f 44 28 43 0;...STDMETHOD(C
09c0: 72 65 61 74 65 41 64 64 49 6e 57 69 6e 64 6f 77 reateAddInWindow
09d0: 29 28 0d 0a 09 09 42 53 54 52 20 62 73 74 72 50 )(....BSTR bstrP
09e0: 72 6f 67 49 44 2c 0d 0a 09 09 42 53 54 52 20 62 rogID,....BSTR b
09f0: 73 74 72 57 69 6e 64 6f 77 4e 61 6d 65 2c 0d 0a strWindowName,..
0a00: 09 09 6c 6f 6e 67 20 64 77 53 74 79 6c 65 73 2c ..long dwStyles,
0a10: 0d 0a 09 09 6c 6f 6e 67 20 64 77 45 78 53 74 79 ....long dwExSty
0a20: 6c 65 73 2c 0d 0a 09 09 73 74 72 75 63 74 20 74 les,....struct t
0a30: 61 67 52 45 43 54 20 2a 72 63 74 6c 2c 0d 0a 09 agRECT *rctl,...
0a40: 09 6c 6f 6e 67 20 46 6c 61 67 73 2c 0d 0a 09 09 .long Flags,....
0a50: 77 69 72 65 48 57 4e 44 20 2a 70 48 77 6e 64 2c wireHWND *pHwnd,
0a60: 0d 0a 09 09 49 44 69 73 70 61 74 63 68 20 2a 2a ....IDispatch **
0a70: 70 44 69 73 70 29 20 3d 20 30 3b 0d 0a 7d 3b 0d pDisp) = 0;..};.
0a80: 0a 0d 0a 5f 43 4f 4d 5f 53 4d 41 52 54 50 54 52 ..._COM_SMARTPTR
0a90: 5f 54 59 50 45 44 45 46 28 49 49 6e 69 74 44 6f _TYPEDEF(IInitDo
0aa0: 6e 65 2c 20 5f 5f 75 75 69 64 6f 66 28 49 49 6e ne, __uuidof(IIn
0ab0: 69 74 44 6f 6e 65 29 29 3b 0d 0a 5f 43 4f 4d 5f itDone));.._COM_
0ac0: 53 4d 41 52 54 50 54 52 5f 54 59 50 45 44 45 46 SMARTPTR_TYPEDEF
0ad0: 28 49 50 72 6f 70 65 72 74 79 50 72 6f 66 69 6c (IPropertyProfil
0ae0: 65 2c 20 5f 5f 75 75 69 64 6f 66 28 49 50 72 6f e, __uuidof(IPro
0af0: 70 65 72 74 79 50 72 6f 66 69 6c 65 29 29 3b 0d pertyProfile));.
0b00: 0a 5f 43 4f 4d 5f 53 4d 41 52 54 50 54 52 5f 54 ._COM_SMARTPTR_T
0b10: 59 50 45 44 45 46 28 49 41 73 79 6e 63 45 76 65 YPEDEF(IAsyncEve
0b20: 6e 74 2c 20 5f 5f 75 75 69 64 6f 66 28 49 41 73 nt, __uuidof(IAs
0b30: 79 6e 63 45 76 65 6e 74 29 29 3b 0d 0a 5f 43 4f yncEvent));.._CO
0b40: 4d 5f 53 4d 41 52 54 50 54 52 5f 54 59 50 45 44 M_SMARTPTR_TYPED
0b50: 45 46 28 49 4c 61 6e 67 75 61 67 65 45 78 74 65 EF(ILanguageExte
0b60: 6e 64 65 72 2c 20 5f 5f 75 75 69 64 6f 66 28 49 nder, __uuidof(I
0b70: 4c 61 6e 67 75 61 67 65 45 78 74 65 6e 64 65 72 LanguageExtender
0b80: 29 29 3b 0d 0a 5f 43 4f 4d 5f 53 4d 41 52 54 50 ));.._COM_SMARTP
0b90: 54 52 5f 54 59 50 45 44 45 46 28 49 53 74 61 74 TR_TYPEDEF(IStat
0ba0: 75 73 4c 69 6e 65 2c 20 5f 5f 75 75 69 64 6f 66 usLine, __uuidof
0bb0: 28 49 53 74 61 74 75 73 4c 69 6e 65 29 29 3b 0d (IStatusLine));.
0bc0: 0a 5f 43 4f 4d 5f 53 4d 41 52 54 50 54 52 5f 54 ._COM_SMARTPTR_T
0bd0: 59 50 45 44 45 46 28 49 45 78 74 57 6e 64 73 53 YPEDEF(IExtWndsS
0be0: 75 70 70 6f 72 74 2c 20 5f 5f 75 75 69 64 6f 66 upport, __uuidof
0bf0: 28 49 45 78 74 57 6e 64 73 53 75 70 70 6f 72 74 (IExtWndsSupport
0c00: 29 29 3b 0d 0a 0d 0a 0d 0a 65 78 74 65 72 6e 20 ));......extern
0c10: 22 43 22 20 63 6f 6e 73 74 20 47 55 49 44 20 5f "C" const GUID _
0c20: 5f 64 65 63 6c 73 70 65 63 28 73 65 6c 65 63 74 _declspec(select
0c30: 61 6e 79 29 20 49 49 44 5f 49 49 6e 69 74 44 6f any) IID_IInitDo
0c40: 6e 65 20 3d 20 0d 0a 20 20 20 20 7b 30 78 61 62 ne = .. {0xab
0c50: 36 33 34 30 30 31 2c 30 78 66 31 33 64 2c 30 78 634001,0xf13d,0x
0c60: 31 31 64 30 2c 7b 30 78 61 34 2c 30 78 35 39 2c 11d0,{0xa4,0x59,
0c70: 30 78 30 30 2c 30 78 34 30 2c 30 78 39 35 2c 30 0x00,0x40,0x95,0
0c80: 78 65 31 2c 30 78 64 61 2c 30 78 65 61 7d 7d 3b xe1,0xda,0xea}};
0c90: 0d 0a 65 78 74 65 72 6e 20 22 43 22 20 63 6f 6e ..extern "C" con
0ca0: 73 74 20 47 55 49 44 20 5f 5f 64 65 63 6c 73 70 st GUID __declsp
0cb0: 65 63 28 73 65 6c 65 63 74 61 6e 79 29 20 49 49 ec(selectany) II
0cc0: 44 5f 49 50 72 6f 70 65 72 74 79 50 72 6f 66 69 D_IPropertyProfi
0cd0: 6c 65 20 3d 0d 0a 20 20 20 20 7b 30 78 61 62 36 le =.. {0xab6
0ce0: 33 34 30 30 32 2c 30 78 66 31 33 64 2c 30 78 31 34002,0xf13d,0x1
0cf0: 31 64 30 2c 7b 30 78 61 34 2c 30 78 35 39 2c 30 1d0,{0xa4,0x59,0
0d00: 78 30 30 2c 30 78 34 30 2c 30 78 39 35 2c 30 78 x00,0x40,0x95,0x
0d10: 65 31 2c 30 78 64 61 2c 30 78 65 61 7d 7d 3b 0d e1,0xda,0xea}};.
0d20: 0a 65 78 74 65 72 6e 20 22 43 22 20 63 6f 6e 73 .extern "C" cons
0d30: 74 20 47 55 49 44 20 5f 5f 64 65 63 6c 73 70 65 t GUID __declspe
0d40: 63 28 73 65 6c 65 63 74 61 6e 79 29 20 49 49 44 c(selectany) IID
0d50: 5f 49 41 73 79 6e 63 45 76 65 6e 74 20 3d 0d 0a _IAsyncEvent =..
0d60: 20 20 20 20 7b 30 78 61 62 36 33 34 30 30 34 2c {0xab634004,
0d70: 30 78 66 31 33 64 2c 30 78 31 31 64 30 2c 7b 30 0xf13d,0x11d0,{0
0d80: 78 61 34 2c 30 78 35 39 2c 30 78 30 30 2c 30 78 xa4,0x59,0x00,0x
0d90: 34 30 2c 30 78 39 35 2c 30 78 65 31 2c 30 78 64 40,0x95,0xe1,0xd
0da0: 61 2c 30 78 65 61 7d 7d 3b 0d 0a 65 78 74 65 72 a,0xea}};..exter
0db0: 6e 20 22 43 22 20 63 6f 6e 73 74 20 47 55 49 44 n "C" const GUID
0dc0: 20 5f 5f 64 65 63 6c 73 70 65 63 28 73 65 6c 65 __declspec(sele
0dd0: 63 74 61 6e 79 29 20 49 49 44 5f 49 4c 61 6e 67 ctany) IID_ILang
0de0: 75 61 67 65 45 78 74 65 6e 64 65 72 20 3d 0d 0a uageExtender =..
0df0: 20 20 20 20 7b 30 78 61 62 36 33 34 30 30 33 2c {0xab634003,
0e00: 30 78 66 31 33 64 2c 30 78 31 31 64 30 2c 7b 30 0xf13d,0x11d0,{0
0e10: 78 61 34 2c 30 78 35 39 2c 30 78 30 30 2c 30 78 xa4,0x59,0x00,0x
0e20: 34 30 2c 30 78 39 35 2c 30 78 65 31 2c 30 78 64 40,0x95,0xe1,0xd
0e30: 61 2c 30 78 65 61 7d 7d 3b 0d 0a 65 78 74 65 72 a,0xea}};..exter
0e40: 6e 20 22 43 22 20 63 6f 6e 73 74 20 47 55 49 44 n "C" const GUID
0e50: 20 5f 5f 64 65 63 6c 73 70 65 63 28 73 65 6c 65 __declspec(sele
0e60: 63 74 61 6e 79 29 20 49 49 44 5f 49 53 74 61 74 ctany) IID_IStat
0e70: 75 73 4c 69 6e 65 20 3d 0d 0a 20 20 20 20 7b 30 usLine =.. {0
0e80: 78 61 62 36 33 34 30 30 35 2c 30 78 66 31 33 64 xab634005,0xf13d
0e90: 2c 30 78 31 31 64 30 2c 7b 30 78 61 34 2c 30 78 ,0x11d0,{0xa4,0x
0ea0: 35 39 2c 30 78 30 30 2c 30 78 34 30 2c 30 78 39 59,0x00,0x40,0x9
0eb0: 35 2c 30 78 65 31 2c 30 78 64 61 2c 30 78 65 61 5,0xe1,0xda,0xea
0ec0: 7d 7d 3b 0d 0a 65 78 74 65 72 6e 20 22 43 22 20 }};..extern "C"
0ed0: 63 6f 6e 73 74 20 47 55 49 44 20 5f 5f 64 65 63 const GUID __dec
0ee0: 6c 73 70 65 63 28 73 65 6c 65 63 74 61 6e 79 29 lspec(selectany)
0ef0: 20 49 49 44 5f 49 45 78 74 57 6e 64 73 53 75 70 IID_IExtWndsSup
0f00: 70 6f 72 74 20 3d 0d 0a 20 20 20 20 7b 30 78 65 port =.. {0xe
0f10: 66 65 31 39 65 61 30 2c 30 78 30 39 65 34 2c 30 fe19ea0,0x09e4,0
0f20: 78 31 31 64 32 2c 7b 30 78 61 36 2c 30 78 30 31 x11d2,{0xa6,0x01
0f30: 2c 30 78 30 30 2c 30 78 38 30 2c 30 78 34 38 2c ,0x00,0x80,0x48,
0f40: 30 78 64 61 2c 30 78 30 30 2c 30 78 64 65 7d 7d 0xda,0x00,0xde}}
0f50: 3b 0d 0a 65 78 74 65 72 6e 20 22 43 22 20 63 6f ;..extern "C" co
0f60: 6e 73 74 20 47 55 49 44 20 5f 5f 64 65 63 6c 73 nst GUID __decls
0f70: 70 65 63 28 73 65 6c 65 63 74 61 6e 79 29 20 49 pec(selectany) I
0f80: 49 44 5f 49 50 72 6f 70 65 72 74 79 4c 69 6e 6b ID_IPropertyLink
0f90: 20 3d 0d 0a 20 20 20 20 7b 30 78 35 32 35 31 32 =.. {0x52512
0fa0: 61 36 31 2c 30 78 32 61 39 64 2c 30 78 31 31 64 a61,0x2a9d,0x11d
0fb0: 31 2c 7b 30 78 61 34 2c 30 78 64 36 2c 30 78 30 1,{0xa4,0xd6,0x0
0fc0: 30 2c 30 78 34 30 2c 30 78 39 35 2c 30 78 65 31 0,0x40,0x95,0xe1
0fd0: 2c 30 78 64 61 2c 30 78 65 61 7d 7d 3b 0d 0a 0d ,0xda,0xea}};...
0fe0: 0a 23 70 72 61 67 6d 61 20 70 61 63 6b 28 70 6f .#pragma pack(po
0ff0: 70 29 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20 p)....namespace
1000: 61 64 64 69 6e 7b 0d 0a 2f 2f 20 c4 e5 f2 e0 eb addin{..// .....
1010: e8 20 f0 e5 e0 eb e8 e7 e0 f6 e8 e8 20 ef e5 f0 . .......... ...
1020: e5 f5 e2 e0 f2 e0 0d 0a 6e 61 6d 65 73 70 61 63 ........namespac
1030: 65 20 69 6d 70 6c 5f 74 72 61 70 7b 0d 0a 0d 0a e impl_trap{....
1040: 2f 2f 20 d4 f3 ed ea f6 e8 ff 20 e2 ee e7 e2 f0 // ....... .....
1050: e0 f9 e0 e5 f2 20 e0 e4 f0 e5 f1 20 ef e5 f0 e5 ..... ..... ....
1060: f5 ee e4 ed e8 ea e0 20 e2 20 f2 e0 e1 eb e8 f6 ....... . ......
1070: e5 20 e8 ec ef ee f0 f2 e0 20 f3 ea e0 e7 e0 ed . ....... ......
1080: ed ee e9 20 e4 eb eb 20 e4 eb ff 0d 0a 2f 2f 20 ... ... .....//
1090: f4 f3 ed ea f6 e8 e8 20 73 74 72 46 75 6e 63 2c ....... strFunc,
10a0: 20 e8 ec ef ee f0 f2 e8 f0 ee e2 e0 ed ed ee e9 ...............
10b0: 20 e8 e7 20 73 74 72 45 78 70 6f 72 74 65 72 20 .. strExporter
10c0: e4 eb eb 2e 0d 0a 2f 2f 20 c2 cd c8 cc c0 cd c8 ......// .......
10d0: c5 3a 20 ed e8 ea e0 ea e8 f5 20 ef f0 ee e2 e5 .: ....... .....
10e0: f0 ee ea 20 ed e5 20 e4 e5 eb e0 e5 f2 f1 ff 2e ... .. .........
10f0: 20 c2 fb e7 fb e2 e0 e9 f2 e5 20 ec e5 f2 ee e4 ......... .....
1100: 2c 20 e5 f1 eb e8 20 f2 ee f7 ed ee 20 e7 ed e0 , .... ..... ...
1110: e5 f2 e5 2c 0d 0a 2f 2f 20 f7 f2 ee 20 68 44 6c ...,..// ... hDl
1120: 6c 20 e8 ec ef ee f0 f2 e8 f0 f3 e5 f2 20 73 74 l ........... st
1130: 72 46 75 6e 63 20 e8 e7 20 73 74 72 45 78 70 6f rFunc .. strExpo
1140: 72 74 65 72 0d 0a 73 74 61 74 69 63 20 69 6e 6c rter..static inl
1150: 69 6e 65 20 44 57 4f 52 44 2a 20 47 65 74 54 68 ine DWORD* GetTh
1160: 75 6e 6b 41 64 64 72 65 73 28 48 49 4e 53 54 41 unkAddres(HINSTA
1170: 4e 43 45 20 68 44 6c 6c 2c 20 4c 50 43 53 54 52 NCE hDll, LPCSTR
1180: 20 73 74 72 45 78 70 6f 72 74 65 72 2c 20 4c 50 strExporter, LP
1190: 43 53 54 52 20 73 74 72 46 75 6e 63 29 0d 0a 7b CSTR strFunc)..{
11a0: 0d 0a 09 42 59 54 45 20 2a 70 69 6d 61 67 65 20 ...BYTE *pimage
11b0: 3d 20 72 65 69 6e 74 65 72 70 72 65 74 5f 63 61 = reinterpret_ca
11c0: 73 74 3c 42 59 54 45 2a 3e 28 68 44 6c 6c 29 3b st<BYTE*>(hDll);
11d0: 0d 0a 09 50 49 4d 41 47 45 5f 4f 50 54 49 4f 4e ...PIMAGE_OPTION
11e0: 41 4c 5f 48 45 41 44 45 52 20 69 6f 68 3d 72 65 AL_HEADER ioh=re
11f0: 69 6e 74 65 72 70 72 65 74 5f 63 61 73 74 3c 50 interpret_cast<P
1200: 49 4d 41 47 45 5f 4f 50 54 49 4f 4e 41 4c 5f 48 IMAGE_OPTIONAL_H
1210: 45 41 44 45 52 3e 28 70 69 6d 61 67 65 20 2b 0d EADER>(pimage +.
1220: 0a 09 09 72 65 69 6e 74 65 72 70 72 65 74 5f 63 ...reinterpret_c
1230: 61 73 74 3c 50 49 4d 41 47 45 5f 44 4f 53 5f 48 ast<PIMAGE_DOS_H
1240: 45 41 44 45 52 3e 28 68 44 6c 6c 29 2d 3e 65 5f EADER>(hDll)->e_
1250: 6c 66 61 6e 65 77 20 2b 20 34 20 2b 20 73 69 7a lfanew + 4 + siz
1260: 65 6f 66 28 49 4d 41 47 45 5f 46 49 4c 45 5f 48 eof(IMAGE_FILE_H
1270: 45 41 44 45 52 29 29 3b 0d 0a 09 0d 0a 09 50 49 EADER));......PI
1280: 4d 41 47 45 5f 49 4d 50 4f 52 54 5f 44 45 53 43 MAGE_IMPORT_DESC
1290: 52 49 50 54 4f 52 20 69 69 64 3d 72 65 69 6e 74 RIPTOR iid=reint
12a0: 65 72 70 72 65 74 5f 63 61 73 74 3c 50 49 4d 41 erpret_cast<PIMA
12b0: 47 45 5f 49 4d 50 4f 52 54 5f 44 45 53 43 52 49 GE_IMPORT_DESCRI
12c0: 50 54 4f 52 3e 28 70 69 6d 61 67 65 20 2b 0d 0a PTOR>(pimage +..
12d0: 09 09 28 69 6f 68 2d 3e 44 61 74 61 44 69 72 65 ..(ioh->DataDire
12e0: 63 74 6f 72 79 5b 49 4d 41 47 45 5f 44 49 52 45 ctory[IMAGE_DIRE
12f0: 43 54 4f 52 59 5f 45 4e 54 52 59 5f 49 4d 50 4f CTORY_ENTRY_IMPO
1300: 52 54 5d 2e 56 69 72 74 75 61 6c 41 64 64 72 65 RT].VirtualAddre
1310: 73 73 29 29 3b 0d 0a 09 0d 0a 09 2f 2f 20 c2 20 ss));......// .
1320: f2 e0 e1 eb e8 f6 e5 20 e8 ec ef ee f0 f2 e0 20 ....... .......
1330: e8 f9 e5 ec 20 f1 ee ee f2 e2 e5 f2 f1 f2 e2 f3 .... ...........
1340: fe f9 e8 e9 20 fd eb e5 ec e5 ed f2 20 e4 eb ff .... ....... ...
1350: 20 e1 e8 e1 eb e8 ee f2 e5 ea e8 0d 0a 09 77 68 .............wh
1360: 69 6c 65 28 69 69 64 2d 3e 4e 61 6d 65 29 20 20 ile(iid->Name)
1370: 2f 2f e4 ee 20 f2 e5 f5 20 ef ee f0 20 ef ee ea //.. ... ... ...
1380: e0 20 ef ee eb e5 20 f1 f2 f0 f3 ea f2 f3 f0 fb . .... .........
1390: 20 ed e5 20 f1 ee e4 e5 f0 e6 e8 f2 20 30 0d 0a .. ........ 0..
13a0: 09 7b 0d 0a 09 09 69 66 28 5f 73 74 72 63 6d 70 .{....if(_strcmp
13b0: 69 28 72 65 69 6e 74 65 72 70 72 65 74 5f 63 61 i(reinterpret_ca
13c0: 73 74 3c 63 68 61 72 2a 3e 28 70 69 6d 61 67 65 st<char*>(pimage
13d0: 20 2b 20 69 69 64 2d 3e 4e 61 6d 65 29 2c 20 73 + iid->Name), s
13e0: 74 72 45 78 70 6f 72 74 65 72 29 20 3d 3d 30 20 trExporter) ==0
13f0: 29 0d 0a 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09 ).....break;....
1400: 69 69 64 2b 2b 3b 0d 0a 09 7d 0d 0a 0d 0a 09 50 iid++;...}.....P
1410: 49 4d 41 47 45 5f 54 48 55 4e 4b 5f 44 41 54 41 IMAGE_THUNK_DATA
1420: 20 69 73 64 20 3d 20 72 65 69 6e 74 65 72 70 72 isd = reinterpr
1430: 65 74 5f 63 61 73 74 3c 50 49 4d 41 47 45 5f 54 et_cast<PIMAGE_T
1440: 48 55 4e 4b 5f 44 41 54 41 3e 28 70 69 6d 61 67 HUNK_DATA>(pimag
1450: 65 20 2b 20 69 69 64 2d 3e 4f 72 69 67 69 6e 61 e + iid->Origina
1460: 6c 46 69 72 73 74 54 68 75 6e 6b 29 3b 0d 0a 09 lFirstThunk);...
1470: 44 57 4f 52 44 2a 20 70 52 65 61 6c 3d 72 65 69 DWORD* pReal=rei
1480: 6e 74 65 72 70 72 65 74 5f 63 61 73 74 3c 44 57 nterpret_cast<DW
1490: 4f 52 44 2a 3e 28 70 69 6d 61 67 65 20 2b 20 69 ORD*>(pimage + i
14a0: 69 64 2d 3e 46 69 72 73 74 54 68 75 6e 6b 29 3b id->FirstThunk);
14b0: 0d 0a 09 66 6f 72 28 69 6e 74 20 69 3d 30 3b 3b ...for(int i=0;;
14c0: 69 73 64 2b 2b 2c 20 69 2b 2b 29 0d 0a 09 7b 0d isd++, i++)...{.
14d0: 0a 09 09 4c 50 43 53 54 52 20 6e 61 6d 65 3d 28 ...LPCSTR name=(
14e0: 4c 50 43 53 54 52 29 28 70 69 6d 61 67 65 20 2b LPCSTR)(pimage +
14f0: 20 28 44 57 4f 52 44 29 28 28 50 49 4d 41 47 45 (DWORD)((PIMAGE
1500: 5f 49 4d 50 4f 52 54 5f 42 59 5f 4e 41 4d 45 29 _IMPORT_BY_NAME)
1510: 69 73 64 2d 3e 75 31 2e 41 64 64 72 65 73 73 4f isd->u1.AddressO
1520: 66 44 61 74 61 29 2d 3e 4e 61 6d 65 29 3b 0d 0a fData)->Name);..
1530: 09 09 69 66 28 21 5f 73 74 72 69 63 6d 70 28 6e ..if(!_stricmp(n
1540: 61 6d 65 2c 20 73 74 72 46 75 6e 63 29 29 0d 0a ame, strFunc))..
1550: 09 09 09 72 65 74 75 72 6e 20 70 52 65 61 6c 2b ...return pReal+
1560: 69 3b 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 73 74 61 i;...}..}....sta
1570: 74 69 63 20 69 6e 6c 69 6e 65 20 44 57 4f 52 44 tic inline DWORD
1580: 2a 20 47 65 74 54 68 75 6e 6b 41 64 64 72 65 73 * GetThunkAddres
1590: 28 4c 50 43 53 54 52 20 73 74 72 49 6d 70 6f 72 (LPCSTR strImpor
15a0: 74 65 72 2c 20 4c 50 43 53 54 52 20 73 74 72 45 ter, LPCSTR strE
15b0: 78 70 6f 72 74 65 72 2c 20 4c 50 43 53 54 52 20 xporter, LPCSTR
15c0: 73 74 72 46 75 6e 63 29 0d 0a 7b 0d 0a 09 72 65 strFunc)..{...re
15d0: 74 75 72 6e 20 47 65 74 54 68 75 6e 6b 41 64 64 turn GetThunkAdd
15e0: 72 65 73 28 47 65 74 4d 6f 64 75 6c 65 48 61 6e res(GetModuleHan
15f0: 64 6c 65 28 73 74 72 49 6d 70 6f 72 74 65 72 29 dle(strImporter)
1600: 2c 20 73 74 72 45 78 70 6f 72 74 65 72 2c 20 73 , strExporter, s
1610: 74 72 46 75 6e 63 29 3b 0d 0a 7d 0d 0a 0d 0a 73 trFunc);..}....s
1620: 74 72 75 63 74 20 74 72 61 70 5f 6c 6f 61 64 5f truct trap_load_
1630: 76 6b 0d 0a 7b 0d 0a 09 73 74 61 74 69 63 20 74 vk..{...static t
1640: 72 61 70 5f 6c 6f 61 64 5f 76 6b 2a 26 20 47 65 rap_load_vk*& Ge
1650: 74 54 72 61 70 28 29 0d 0a 09 7b 0d 0a 09 09 73 tTrap()...{....s
1660: 74 61 74 69 63 20 74 72 61 70 5f 6c 6f 61 64 5f tatic trap_load_
1670: 76 6b 2a 20 70 54 72 61 70 3b 0d 0a 09 09 72 65 vk* pTrap;....re
1680: 74 75 72 6e 20 70 54 72 61 70 3b 0d 0a 09 7d 0d turn pTrap;...}.
1690: 0a 0d 0a 09 63 6f 6e 73 74 20 49 49 6e 69 74 44 ....const IInitD
16a0: 6f 6e 65 2a 20 70 41 64 64 69 6e 3b 0d 0a 09 63 one* pAddin;...c
16b0: 6f 6e 73 74 20 43 4c 53 49 44 26 20 70 43 6c 73 onst CLSID& pCls
16c0: 49 44 3b 0d 0a 09 44 57 4f 52 44 20 20 64 77 4f ID;...DWORD dwO
16d0: 6c 64 43 4c 53 49 44 46 72 6f 6d 50 72 6f 67 49 ldCLSIDFromProgI
16e0: 44 3b 0d 0a 09 44 57 4f 52 44 2a 20 70 4f 6c 64 D;...DWORD* pOld
16f0: 43 4c 53 49 44 46 72 6f 6d 50 72 6f 67 49 44 3b CLSIDFromProgID;
1700: 0d 0a 09 44 57 4f 52 44 20 20 64 77 4f 6c 64 43 ...DWORD dwOldC
1710: 6f 43 72 65 61 74 65 49 6e 73 74 61 6e 63 65 3b oCreateInstance;
1720: 0d 0a 09 44 57 4f 52 44 2a 20 70 4f 6c 64 43 6f ...DWORD* pOldCo
1730: 43 72 65 61 74 65 49 6e 73 74 61 6e 63 65 3b 0d CreateInstance;.
1740: 0a 0d 0a 09 73 74 61 74 69 63 20 48 52 45 53 55 ....static HRESU
1750: 4c 54 20 53 54 44 41 50 49 43 41 4c 4c 54 59 50 LT STDAPICALLTYP
1760: 45 20 6d 79 43 4c 53 49 44 46 72 6f 6d 50 72 6f E myCLSIDFromPro
1770: 67 49 44 28 4c 50 43 4f 4c 45 53 54 52 20 6c 70 gID(LPCOLESTR lp
1780: 73 7a 50 72 6f 67 49 44 2c 20 4c 50 43 4c 53 49 szProgID, LPCLSI
1790: 44 20 70 63 6c 73 69 64 29 0d 0a 09 7b 0d 0a 09 D pclsid)...{...
17a0: 09 2a 70 63 6c 73 69 64 3d 47 65 74 54 72 61 70 .*pclsid=GetTrap
17b0: 28 29 2d 3e 70 43 6c 73 49 44 3b 0d 0a 09 09 72 ()->pClsID;....r
17c0: 65 74 75 72 6e 20 53 5f 4f 4b 3b 0d 0a 09 7d 0d eturn S_OK;...}.
17d0: 0a 0d 0a 09 73 74 61 74 69 63 20 48 52 45 53 55 ....static HRESU
17e0: 4c 54 20 53 54 44 41 50 49 43 41 4c 4c 54 59 50 LT STDAPICALLTYP
17f0: 45 20 6d 79 43 6f 43 72 65 61 74 65 49 6e 73 74 E myCoCreateInst
1800: 61 6e 63 65 28 52 45 46 43 4c 53 49 44 20 72 63 ance(REFCLSID rc
1810: 6c 73 69 64 2c 20 4c 50 55 4e 4b 4e 4f 57 4e 20 lsid, LPUNKNOWN
1820: 70 55 6e 6b 4f 75 74 65 72 2c 0d 0a 09 09 09 09 pUnkOuter,......
1830: 09 09 20 20 44 57 4f 52 44 20 64 77 43 6c 73 43 .. DWORD dwClsC
1840: 6f 6e 74 65 78 74 2c 20 52 45 46 49 49 44 20 72 ontext, REFIID r
1850: 69 69 64 2c 20 4c 50 56 4f 49 44 20 2a 70 70 76 iid, LPVOID *ppv
1860: 29 0d 0a 09 7b 0d 0a 09 09 74 72 61 70 5f 6c 6f )...{....trap_lo
1870: 61 64 5f 76 6b 2a 20 70 54 72 61 70 3d 47 65 74 ad_vk* pTrap=Get
1880: 54 72 61 70 28 29 3b 0d 0a 09 09 2a 70 70 76 3d Trap();....*ppv=
1890: 63 6f 6e 73 74 5f 63 61 73 74 3c 49 49 6e 69 74 const_cast<IInit
18a0: 44 6f 6e 65 2a 3e 28 70 54 72 61 70 2d 3e 70 41 Done*>(pTrap->pA
18b0: 64 64 69 6e 29 3b 0d 0a 09 09 64 65 6c 65 74 65 ddin);....delete
18c0: 20 70 54 72 61 70 3b 0d 0a 09 09 72 65 74 75 72 pTrap;....retur
18d0: 6e 20 53 5f 4f 4b 3b 0d 0a 09 7d 0d 0a 0d 0a 09 n S_OK;...}.....
18e0: 74 72 61 70 5f 6c 6f 61 64 5f 76 6b 28 63 6f 6e trap_load_vk(con
18f0: 73 74 20 49 49 6e 69 74 44 6f 6e 65 2a 20 70 41 st IInitDone* pA
1900: 2c 20 63 6f 6e 73 74 20 43 4c 53 49 44 26 20 70 , const CLSID& p
1910: 43 6c 73 29 3a 0d 0a 09 09 70 41 64 64 69 6e 28 Cls):....pAddin(
1920: 70 41 29 2c 20 70 43 6c 73 49 44 28 70 43 6c 73 pA), pClsID(pCls
1930: 29 2c 20 70 4f 6c 64 43 4c 53 49 44 46 72 6f 6d ), pOldCLSIDFrom
1940: 50 72 6f 67 49 44 28 4e 55 4c 4c 29 2c 20 70 4f ProgID(NULL), pO
1950: 6c 64 43 6f 43 72 65 61 74 65 49 6e 73 74 61 6e ldCoCreateInstan
1960: 63 65 28 4e 55 4c 4c 29 0d 0a 09 7b 0d 0a 09 09 ce(NULL)...{....
1970: 47 65 74 54 72 61 70 28 29 3d 74 68 69 73 3b 0d GetTrap()=this;.
1980: 0a 09 09 48 49 4e 53 54 41 4e 43 45 20 68 53 65 ...HINSTANCE hSe
1990: 76 65 6e 3d 47 65 74 4d 6f 64 75 6c 65 48 61 6e ven=GetModuleHan
19a0: 64 6c 65 28 22 73 65 76 65 6e 2e 64 6c 6c 22 29 dle("seven.dll")
19b0: 3b 0d 0a 0d 0a 09 09 70 4f 6c 64 43 4c 53 49 44 ;......pOldCLSID
19c0: 46 72 6f 6d 50 72 6f 67 49 44 20 3d 47 65 74 54 FromProgID =GetT
19d0: 68 75 6e 6b 41 64 64 72 65 73 28 68 53 65 76 65 hunkAddres(hSeve
19e0: 6e 2c 20 22 6f 6c 65 33 32 2e 64 6c 6c 22 2c 20 n, "ole32.dll",
19f0: 22 43 4c 53 49 44 46 72 6f 6d 50 72 6f 67 49 44 "CLSIDFromProgID
1a00: 22 29 3b 0d 0a 09 09 64 77 4f 6c 64 43 4c 53 49 ");....dwOldCLSI
1a10: 44 46 72 6f 6d 50 72 6f 67 49 44 3d 2a 70 4f 6c DFromProgID=*pOl
1a20: 64 43 4c 53 49 44 46 72 6f 6d 50 72 6f 67 49 44 dCLSIDFromProgID
1a30: 3b 0d 0a 09 09 0d 0a 09 09 70 4f 6c 64 43 6f 43 ;........pOldCoC
1a40: 72 65 61 74 65 49 6e 73 74 61 6e 63 65 3d 47 65 reateInstance=Ge
1a50: 74 54 68 75 6e 6b 41 64 64 72 65 73 28 68 53 65 tThunkAddres(hSe
1a60: 76 65 6e 2c 20 22 6f 6c 65 33 32 2e 64 6c 6c 22 ven, "ole32.dll"
1a70: 2c 20 22 43 6f 43 72 65 61 74 65 49 6e 73 74 61 , "CoCreateInsta
1a80: 6e 63 65 22 29 3b 0d 0a 09 09 64 77 4f 6c 64 43 nce");....dwOldC
1a90: 6f 43 72 65 61 74 65 49 6e 73 74 61 6e 63 65 3d oCreateInstance=
1aa0: 2a 70 4f 6c 64 43 6f 43 72 65 61 74 65 49 6e 73 *pOldCoCreateIns
1ab0: 74 61 6e 63 65 3b 0d 0a 0d 0a 09 09 2f 2f 20 c7 tance;......// .
1ac0: e0 ec e5 ed ff e5 ec 20 e0 e4 f0 e5 f1 e0 20 ed ....... ...... .
1ad0: e0 20 f1 e2 ee e8 20 f4 f3 ed ea f6 e8 e8 0d 0a . .... .........
1ae0: 09 09 44 57 4f 52 44 20 6f 70 3b 0d 0a 09 09 56 ..DWORD op;....V
1af0: 69 72 74 75 61 6c 50 72 6f 74 65 63 74 28 70 4f irtualProtect(pO
1b00: 6c 64 43 4c 53 49 44 46 72 6f 6d 50 72 6f 67 49 ldCLSIDFromProgI
1b10: 44 2c 20 34 2c 20 50 41 47 45 5f 45 58 45 43 55 D, 4, PAGE_EXECU
1b20: 54 45 5f 52 45 41 44 57 52 49 54 45 2c 20 26 6f TE_READWRITE, &o
1b30: 70 29 3b 0d 0a 09 09 56 69 72 74 75 61 6c 50 72 p);....VirtualPr
1b40: 6f 74 65 63 74 28 70 4f 6c 64 43 6f 43 72 65 61 otect(pOldCoCrea
1b50: 74 65 49 6e 73 74 61 6e 63 65 2c 20 34 2c 20 50 teInstance, 4, P
1b60: 41 47 45 5f 45 58 45 43 55 54 45 5f 52 45 41 44 AGE_EXECUTE_READ
1b70: 57 52 49 54 45 2c 20 26 6f 70 29 3b 0d 0a 0d 0a WRITE, &op);....
1b80: 09 09 2a 70 4f 6c 64 43 4c 53 49 44 46 72 6f 6d ..*pOldCLSIDFrom
1b90: 50 72 6f 67 49 44 3d 72 65 69 6e 74 65 72 70 72 ProgID=reinterpr
1ba0: 65 74 5f 63 61 73 74 3c 44 57 4f 52 44 3e 28 26 et_cast<DWORD>(&
1bb0: 6d 79 43 4c 53 49 44 46 72 6f 6d 50 72 6f 67 49 myCLSIDFromProgI
1bc0: 44 29 3b 0d 0a 09 09 2a 70 4f 6c 64 43 6f 43 72 D);....*pOldCoCr
1bd0: 65 61 74 65 49 6e 73 74 61 6e 63 65 3d 72 65 69 eateInstance=rei
1be0: 6e 74 65 72 70 72 65 74 5f 63 61 73 74 3c 44 57 nterpret_cast<DW
1bf0: 4f 52 44 3e 28 26 6d 79 43 6f 43 72 65 61 74 65 ORD>(&myCoCreate
1c00: 49 6e 73 74 61 6e 63 65 29 3b 0d 0a 09 7d 0d 0a Instance);...}..
1c10: 09 7e 74 72 61 70 5f 6c 6f 61 64 5f 76 6b 28 29 .~trap_load_vk()
1c20: 0d 0a 09 7b 0d 0a 09 09 2a 70 4f 6c 64 43 6f 43 ...{....*pOldCoC
1c30: 72 65 61 74 65 49 6e 73 74 61 6e 63 65 3d 64 77 reateInstance=dw
1c40: 4f 6c 64 43 6f 43 72 65 61 74 65 49 6e 73 74 61 OldCoCreateInsta
1c50: 6e 63 65 3b 0d 0a 09 09 2a 70 4f 6c 64 43 4c 53 nce;....*pOldCLS
1c60: 49 44 46 72 6f 6d 50 72 6f 67 49 44 3d 64 77 4f IDFromProgID=dwO
1c70: 6c 64 43 4c 53 49 44 46 72 6f 6d 50 72 6f 67 49 ldCLSIDFromProgI
1c80: 44 3b 0d 0a 09 7d 0d 0a 7d 3b 0d 0a 0d 0a 7d 20 D;...}..};....}
1c90: 2f 2f 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 // namespace imp
1ca0: 6c 5f 74 72 61 70 0d 0a 0d 0a 2f 2a 0d 0a d0 e5 l_trap..../*....
1cb0: e0 eb e8 e7 e0 f6 e8 ff 20 ee f1 ed ee e2 ed ee ........ .......
1cc0: e3 ee 20 ee e1 fa e5 ea f2 e0 20 c2 ca 2e 0d 0a .. ....... .....
1cd0: c4 e0 ed ed e0 ff 20 f0 e5 e0 eb e8 e7 e0 f6 e8 ...... .........
1ce0: ff 20 ef f0 e5 e4 ef ee eb e0 e3 e0 e5 f2 20 ed . ............ .
1cf0: e0 eb e8 f7 e8 e5 20 ce c4 cd ce c3 ce 2d c5 c4 ...... ......-..
1d00: c8 cd d1 d2 c2 c5 cd cd ce c3 ce 20 e3 eb ee e1 ........... ....
1d10: e0 eb fc ed ee e3 ee 0d 0a ee e1 fa e5 ea f2 e0 ................
1d20: 20 c2 ca 2e 20 ce e1 e5 f1 ef e5 f7 e8 e2 e0 e5 ... ...........
1d30: f2 20 ea ee f0 f0 e5 ea f2 ed f3 fe 20 e7 e0 e3 . .......... ...
1d40: f0 f3 e7 ea f3 20 c2 ca 20 31 d1 ea ee e9 2c 20 ..... .. 1....,
1d50: e1 e5 e7 20 e8 f1 ef ee eb fc e7 ee e2 e0 ed e8 ... ............
1d60: ff 0d 0a ef ee e4 f1 e8 f1 f2 e5 ec fb 20 43 4f ............. CO
1d70: 4d 20 e8 20 ee e1 f0 e0 f9 e5 ed e8 e9 20 ea 20 M . ......... .
1d80: f0 e5 e5 f1 f2 f0 f3 2e 20 c4 ee f1 f2 f3 ef 20 ........ ......
1d90: ea 20 e5 e4 e8 ed f1 f2 e2 e5 ed ed ee ec f3 20 . .............
1da0: ee e1 fa e5 ea f2 f3 20 c2 ca 0d 0a ee f1 f3 f9 ....... ........
1db0: e5 f1 f2 e2 eb ff e5 f2 f1 ff 20 f1 20 ef ee ec .......... . ...
1dc0: ee f9 fc fe 20 f1 f2 e0 f2 e8 f7 e5 f1 ea ee e9 .... ...........
1dd0: 20 f4 f3 ed ea f6 e8 e8 20 47 65 74 41 64 64 69 ....... GetAddi
1de0: 6e 28 29 3b 0d 0a 0d 0a c8 f1 ef ee eb fc e7 ee n();............
1df0: e2 e0 ed e8 e5 3a 0d 0a 0d 0a c2 e0 ec 20 ed e5 .....:....... ..
1e00: ee e1 f5 ee e4 e8 ec ee 20 ee ef f0 e5 e4 e5 eb ........ .......
1e10: e8 f2 fc 20 f1 e2 ee e9 20 ea eb e0 f1 f1 2c 20 ... .... .....,
1e20: f0 e5 e0 eb e8 e7 f3 fe f9 e8 e9 20 e4 e2 e0 20 ........... ...
1e30: ec e5 f2 ee e4 e0 3a 0d 0a 42 4f 4f 4c 20 49 6e ......:..BOOL In
1e40: 69 74 41 64 64 69 6e 28 49 44 69 73 70 61 74 63 itAddin(IDispatc
1e50: 68 2a 20 70 43 6f 6e 6e 65 63 74 69 6f 6e 29 3b h* pConnection);
1e60: 0d 0a 76 6f 69 64 20 44 6f 6e 65 41 64 64 69 6e ..void DoneAddin
1e70: 28 29 3b 0d 0a c4 eb ff 20 ea eb e0 f1 f1 e0 20 ();..... ......
1e80: e4 ee eb e6 e5 ed 20 e1 fb f2 fc 20 ed e0 e7 ed ...... .... ....
1e90: e0 f7 e5 ed 20 f3 ed e8 ea e0 eb fc ed fb e9 20 .... ..........
1ea0: 43 4c 53 49 44 2c 20 f1 20 ef ee ec ee f9 fc fe CLSID, . .......
1eb0: 20 5f 5f 64 65 63 6c 73 70 65 63 28 75 75 69 64 __declspec(uuid
1ec0: 28 22 22 29 29 0d 0a 0d 0a ca eb e0 f1 f1 20 43 (""))......... C
1ed0: 4f 6e 65 41 64 64 69 6e 49 6d 70 6c 3c c2 e0 f8 OneAddinImpl<...
1ee0: ca eb e0 f1 f1 3e 20 e8 20 e1 f3 e4 e5 f2 20 ef .....> . ..... .
1ef0: f0 e5 e4 f1 f2 e0 e2 eb ff f2 fc 20 ee e1 fa e5 ........... ....
1f00: ea f2 20 c2 ca 0d 0a c4 eb ff 20 e7 e0 e3 f0 f3 .. ....... .....
1f10: e7 ea e8 20 c2 ca 20 ed e5 ee e1 f5 ee e4 e8 ec ... .. .........
1f20: ee 20 e2 20 44 6c 6c 4d 61 69 6e 20 f1 ee e7 e4 . . DllMain ....
1f30: e0 f2 fc 20 ef e5 f0 e2 fb e9 20 e8 20 e5 e4 e8 ... ...... . ...
1f40: ed f1 f2 e2 e5 ed ed fb e9 20 ee e1 fa e5 ea f2 ......... ......
1f50: 2c 0d 0a ec e5 f2 ee e4 ee ec 20 4f 6e 50 72 6f ,......... OnPro
1f60: 63 65 73 73 41 74 74 61 63 68 2c 20 e8 20 f2 e0 cessAttach, . ..
1f70: ec 20 e6 e5 20 f3 ed e8 f7 f2 ee e6 e0 f2 fc 20 . .. ..........
1f80: 4f 6e 50 72 6f 63 65 73 73 44 65 74 61 63 68 3a OnProcessDetach:
1f90: 0d 0a 0d 0a cf f0 e8 ec e5 f0 3a 0d 0a 63 6c 61 ..........:..cla
1fa0: 73 73 20 5f 64 65 63 6c 73 70 65 63 28 75 75 69 ss _declspec(uui
1fb0: 64 28 22 30 30 63 64 39 34 37 65 2d 31 66 36 38 d("00cd947e-1f68
1fc0: 2d 34 62 61 36 2d 61 36 39 66 2d 39 39 30 61 38 -4ba6-a69f-990a8
1fd0: 61 66 66 64 38 31 35 22 29 29 20 43 41 64 64 69 affd815")) CAddi
1fe0: 6e 5f 3b 0d 0a 0d 0a 63 6c 61 73 73 20 43 41 64 n_;....class CAd
1ff0: 64 69 6e 5f 0d 0a 7b 0d 0a 70 72 6f 74 65 63 74 din_..{..protect
2000: 65 64 3a 0d 0a 09 42 4f 4f 4c 20 49 6e 69 74 41 ed:...BOOL InitA
2010: 64 64 69 6e 28 49 44 69 73 70 61 74 63 68 2a 20 ddin(IDispatch*
2020: 70 43 6f 6e 6e 29 3b 0d 0a 09 76 6f 69 64 20 44 pConn);...void D
2030: 6f 6e 65 41 64 64 69 6e 28 29 3b 0d 0a 70 75 62 oneAddin();..pub
2040: 6c 69 63 3a 0d 0a 09 2e 2e 2e 20 ee f1 f2 e0 eb lic:...... .....
2050: fc ed fb e5 20 ec e5 f2 ee e4 fb 0d 0a 7d 3b 0d .... ........};.
2060: 0a 0d 0a 74 79 70 65 64 65 66 20 61 64 64 69 6e ...typedef addin
2070: 3a 3a 43 4f 6e 65 41 64 64 69 6e 49 6d 70 6c 3c ::COneAddinImpl<
2080: 43 41 64 64 69 6e 5f 3e 20 43 41 64 64 69 6e 3b CAddin_> CAddin;
2090: 0d 0a 0d 0a 65 78 74 65 72 6e 20 22 43 22 0d 0a ....extern "C"..
20a0: 69 6e 74 20 41 50 49 45 4e 54 52 59 20 44 6c 6c int APIENTRY Dll
20b0: 4d 61 69 6e 28 48 49 4e 53 54 41 4e 43 45 20 68 Main(HINSTANCE h
20c0: 49 6e 73 74 61 6e 63 65 2c 20 44 57 4f 52 44 20 Instance, DWORD
20d0: 64 77 52 65 61 73 6f 6e 2c 20 4c 50 56 4f 49 44 dwReason, LPVOID
20e0: 20 6c 70 52 65 73 65 72 76 65 64 29 0d 0a 7b 0d lpReserved)..{.
20f0: 0a 09 69 66 28 64 77 52 65 61 73 6f 6e 20 3d 3d ..if(dwReason ==
2100: 20 44 4c 4c 5f 50 52 4f 43 45 53 53 5f 41 54 54 DLL_PROCESS_ATT
2110: 41 43 48 29 0d 0a 09 09 43 41 64 64 69 6e 3a 3a ACH)....CAddin::
2120: 4f 6e 50 72 6f 63 65 73 73 41 74 74 61 63 68 28 OnProcessAttach(
2130: 29 3b 0d 0a 09 65 6c 73 65 20 69 66 28 64 77 52 );...else if(dwR
2140: 65 61 73 6f 6e 20 3d 3d 20 44 4c 4c 5f 50 52 4f eason == DLL_PRO
2150: 43 45 53 53 5f 44 45 54 41 43 48 29 0d 0a 09 09 CESS_DETACH)....
2160: 43 41 64 64 69 6e 3a 3a 4f 6e 50 72 6f 63 65 73 CAddin::OnProces
2170: 73 44 65 74 61 63 68 28 29 3b 0d 0a 09 72 65 74 sDetach();...ret
2180: 75 72 6e 20 31 3b 20 20 20 2f 2f 20 6f 6b 0d 0a urn 1; // ok..
2190: 7d 0d 0a 0d 0a 20 20 cb e8 e1 ee 20 f2 e0 ea 3a }.... .... ...:
21a0: 0d 0a 0d 0a 63 6c 61 73 73 20 43 41 64 64 69 6e ....class CAddin
21b0: 0d 0a 7b 0d 0a 70 72 6f 74 65 63 74 65 64 3a 0d ..{..protected:.
21c0: 0a 09 42 4f 4f 4c 20 49 6e 69 74 41 64 64 69 6e ..BOOL InitAddin
21d0: 28 49 44 69 73 70 61 74 63 68 2a 20 70 43 6f 6e (IDispatch* pCon
21e0: 6e 29 3b 0d 0a 09 76 6f 69 64 20 44 6f 6e 65 41 n);...void DoneA
21f0: 64 64 69 6e 28 29 3b 0d 0a 70 75 62 6c 69 63 3a ddin();..public:
2200: 0d 0a 09 43 41 64 64 69 6e 26 20 47 65 74 41 64 ...CAddin& GetAd
2210: 64 69 6e 28 29 7b 72 65 74 75 72 6e 20 61 64 64 din(){return add
2220: 69 6e 3a 3a 43 4f 6e 65 41 64 64 69 6e 49 6d 70 in::COneAddinImp
2230: 6c 3c 43 41 64 64 69 6e 3e 3a 3a 47 65 74 41 64 l<CAddin>::GetAd
2240: 64 69 6e 28 29 3b 7d 0d 0a 09 2e 2e 2e 20 ee f1 din();}...... ..
2250: f2 e0 eb fc ed fb e5 20 ec e5 f2 ee e4 fb 0d 0a ....... ........
2260: 7d 3b 0d 0a 63 6c 61 73 73 20 5f 64 65 63 6c 73 };..class _decls
2270: 70 65 63 28 75 75 69 64 28 22 30 30 63 64 39 34 pec(uuid("00cd94
2280: 37 65 2d 31 66 36 38 2d 34 62 61 36 2d 61 36 39 7e-1f68-4ba6-a69
2290: 66 2d 39 39 30 61 38 61 66 66 64 38 31 35 22 29 f-990a8affd815")
22a0: 29 20 43 41 64 64 69 6e 3b 0d 0a 2e 2e 2e 2e 0d ) CAddin;.......
22b0: 0a 65 78 74 65 72 6e 20 22 43 22 0d 0a 69 6e 74 .extern "C"..int
22c0: 20 41 50 49 45 4e 54 52 59 20 44 6c 6c 4d 61 69 APIENTRY DllMai
22d0: 6e 28 48 49 4e 53 54 41 4e 43 45 20 68 49 6e 73 n(HINSTANCE hIns
22e0: 74 61 6e 63 65 2c 20 44 57 4f 52 44 20 64 77 52 tance, DWORD dwR
22f0: 65 61 73 6f 6e 2c 20 4c 50 56 4f 49 44 20 6c 70 eason, LPVOID lp
2300: 52 65 73 65 72 76 65 64 29 0d 0a 7b 0d 0a 09 69 Reserved)..{...i
2310: 66 28 64 77 52 65 61 73 6f 6e 20 3d 3d 20 44 4c f(dwReason == DL
2320: 4c 5f 50 52 4f 43 45 53 53 5f 41 54 54 41 43 48 L_PROCESS_ATTACH
2330: 29 0d 0a 09 09 61 64 64 69 6e 3a 3a 43 4f 6e 65 )....addin::COne
2340: 41 64 64 69 6e 49 6d 70 6c 3c 43 41 64 64 69 6e AddinImpl<CAddin
2350: 3e 3a 3a 4f 6e 50 72 6f 63 65 73 73 41 74 74 61 >::OnProcessAtta
2360: 63 68 28 29 3b 0d 0a 09 65 6c 73 65 20 69 66 28 ch();...else if(
2370: 64 77 52 65 61 73 6f 6e 20 3d 3d 20 44 4c 4c 5f dwReason == DLL_
2380: 50 52 4f 43 45 53 53 5f 44 45 54 41 43 48 29 0d PROCESS_DETACH).
2390: 0a 09 09 61 64 64 69 6e 3a 3a 43 4f 6e 65 41 64 ...addin::COneAd
23a0: 64 69 6e 49 6d 70 6c 3c 43 41 64 64 69 6e 3e 3a dinImpl<CAddin>:
23b0: 3a 4f 6e 50 72 6f 63 65 73 73 44 65 74 61 63 68 :OnProcessDetach
23c0: 28 29 3b 0d 0a 09 72 65 74 75 72 6e 20 31 3b 20 ();...return 1;
23d0: 20 20 2f 2f 20 6f 6b 0d 0a 7d 0d 0a 0d 0a c4 e0 // ok..}......
23e0: ed ed e0 ff 20 f0 e5 e0 eb e8 e7 e0 f6 e8 ff 20 .... ..........
23f0: ed e5 20 ef ee e7 e2 ee eb ff e5 f2 20 e8 ec e5 .. ......... ...
2400: f2 fc 20 f1 f2 f0 e0 ed e8 f6 f3 20 f1 e2 ee e9 .. ........ ....
2410: f1 f2 e2 20 e4 eb ff 20 c2 ca 2c 0d 0a f7 f2 ee ... ... ..,.....
2420: 20 e5 f1 f2 fc 20 ed e5 e1 ee eb fc f8 e0 ff 20 .... .........
2430: ef eb e0 f2 e0 20 e7 e0 20 e7 e0 e3 f0 f3 e7 ea ..... .. .......
2440: f3 20 c2 ca 20 e1 e5 e7 20 f0 e5 e3 e8 f1 f2 f0 . .. ... .......
2450: e0 f6 e8 e8 20 e8 20 e0 e4 ec e8 ed f1 ea e8 f5 .... . .........
2460: 20 ef f0 e0 e2 2e 0d 0a 0d 0a 2a 2f 0d 0a 0d 0a .........*/....
2470: 74 65 6d 70 6c 61 74 65 3c 74 79 70 65 6e 61 6d template<typenam
2480: 65 20 54 3e 0d 0a 63 6c 61 73 73 20 43 4f 6e 65 e T>..class COne
2490: 41 64 64 69 6e 49 6d 70 6c 20 3a 20 70 75 62 6c AddinImpl : publ
24a0: 69 63 20 54 2c 20 70 75 62 6c 69 63 20 49 49 6e ic T, public IIn
24b0: 69 74 44 6f 6e 65 0d 0a 7b 0d 0a 09 2f 2f 20 c7 itDone..{...// .
24c0: e0 ea f0 ee e5 ec 20 ea ee ed f1 f2 f0 f3 ea f2 ...... .........
24d0: ee f0 2c 20 fd f2 ee 20 f1 e8 ed e3 eb f2 ee ed .., ... ........
24e0: 0d 0a 09 43 4f 6e 65 41 64 64 69 6e 49 6d 70 6c ...COneAddinImpl
24f0: 28 29 7b 6e 65 77 20 69 6d 70 6c 5f 74 72 61 70 (){new impl_trap
2500: 3a 3a 74 72 61 70 5f 6c 6f 61 64 5f 76 6b 28 74 ::trap_load_vk(t
2510: 68 69 73 2c 20 5f 5f 75 75 69 64 6f 66 28 54 29 his, __uuidof(T)
2520: 29 3b 7d 0d 0a 70 72 6f 74 65 63 74 65 64 3a 0d );}..protected:.
2530: 0a 09 2f 2f 20 d0 e5 e0 eb e8 e7 e0 f6 e8 ff 20 ..// ..........
2540: 49 55 6e 6b 6e 6f 77 6e 0d 0a 09 53 54 44 4d 45 IUnknown...STDME
2550: 54 48 4f 44 28 51 75 65 72 79 49 6e 74 65 72 66 THOD(QueryInterf
2560: 61 63 65 29 28 52 45 46 49 49 44 20 72 69 69 64 ace)(REFIID riid
2570: 2c 20 76 6f 69 64 20 2a 2a 70 70 76 4f 62 6a 65 , void **ppvObje
2580: 63 74 29 0d 0a 09 7b 0d 0a 09 09 69 66 28 72 69 ct)...{....if(ri
2590: 69 64 3d 3d 49 49 44 5f 49 49 6e 69 74 44 6f 6e id==IID_IInitDon
25a0: 65 29 0d 0a 09 09 09 2a 70 70 76 4f 62 6a 65 63 e).....*ppvObjec
25b0: 74 3d 73 74 61 74 69 63 5f 63 61 73 74 3c 49 49 t=static_cast<II
25c0: 6e 69 74 44 6f 6e 65 2a 3e 28 74 68 69 73 29 3b nitDone*>(this);
25d0: 0d 0a 09 09 65 6c 73 65 20 69 66 28 72 69 69 64 ....else if(riid
25e0: 3d 3d 49 49 44 5f 49 55 6e 6b 6e 6f 77 6e 29 0d ==IID_IUnknown).
25f0: 0a 09 09 09 2a 70 70 76 4f 62 6a 65 63 74 3d 73 ....*ppvObject=s
2600: 74 61 74 69 63 5f 63 61 73 74 3c 49 55 6e 6b 6e tatic_cast<IUnkn
2610: 6f 77 6e 2a 3e 28 74 68 69 73 29 3b 0d 0a 09 09 own*>(this);....
2620: 65 6c 73 65 0d 0a 09 09 09 72 65 74 75 72 6e 20 else.....return
2630: 45 5f 4e 4f 49 4e 54 45 52 46 41 43 45 3b 0d 0a E_NOINTERFACE;..
2640: 09 09 72 65 74 75 72 6e 20 53 5f 4f 4b 3b 0d 0a ..return S_OK;..
2650: 09 7d 0d 0a 09 53 54 44 4d 45 54 48 4f 44 5f 28 .}...STDMETHOD_(
2660: 55 4c 4f 4e 47 2c 20 41 64 64 52 65 66 29 28 29 ULONG, AddRef)()
2670: 7b 72 65 74 75 72 6e 20 31 3b 7d 0d 0a 09 53 54 {return 1;}...ST
2680: 44 4d 45 54 48 4f 44 5f 28 55 4c 4f 4e 47 2c 20 DMETHOD_(ULONG,
2690: 52 65 6c 65 61 73 65 29 28 29 7b 72 65 74 75 72 Release)(){retur
26a0: 6e 20 31 3b 7d 0d 0a 0d 0a 09 2f 2f 20 d0 e5 e0 n 1;}.....// ...
26b0: eb e8 e7 e0 f6 e8 ff 20 49 49 6e 69 74 44 6f 6e ....... IInitDon
26c0: 65 0d 0a 20 20 20 20 53 54 44 4d 45 54 48 4f 44 e.. STDMETHOD
26d0: 28 49 6e 69 74 29 28 49 44 69 73 70 61 74 63 68 (Init)(IDispatch
26e0: 20 2a 70 43 6f 6e 6e 65 63 74 69 6f 6e 29 0d 0a *pConnection)..
26f0: 09 7b 0d 0a 09 09 72 65 74 75 72 6e 20 54 3a 3a .{....return T::
2700: 49 6e 69 74 41 64 64 69 6e 28 70 43 6f 6e 6e 65 InitAddin(pConne
2710: 63 74 69 6f 6e 29 20 3f 20 53 5f 4f 4b 20 3a 20 ction) ? S_OK :
2720: 45 5f 46 41 49 4c 3b 0d 0a 09 7d 0d 0a 20 20 20 E_FAIL;...}..
2730: 20 53 54 44 4d 45 54 48 4f 44 28 44 6f 6e 65 29 STDMETHOD(Done)
2740: 28 29 0d 0a 09 7b 0d 0a 09 09 54 3a 3a 44 6f 6e ()...{....T::Don
2750: 65 41 64 64 69 6e 28 29 3b 0d 0a 09 09 72 65 74 eAddin();....ret
2760: 75 72 6e 20 53 5f 4f 4b 3b 0d 0a 09 7d 0d 0a 20 urn S_OK;...}..
2770: 20 20 20 53 54 44 4d 45 54 48 4f 44 28 47 65 74 STDMETHOD(Get
2780: 49 6e 66 6f 29 28 53 41 46 45 41 52 52 41 59 20 Info)(SAFEARRAY
2790: 2a 2a 70 49 6e 66 6f 29 0d 0a 09 7b 0d 0a 09 09 **pInfo)...{....
27a0: 6c 6f 6e 67 20 6c 49 6e 64 20 3d 20 30 3b 0d 0a long lInd = 0;..
27b0: 09 09 56 41 52 49 41 4e 54 20 76 61 72 56 65 72 ..VARIANT varVer
27c0: 73 69 6f 6e 3b 0d 0a 09 09 56 5f 56 54 28 26 76 sion;....V_VT(&v
27d0: 61 72 56 65 72 73 69 6f 6e 29 20 3d 20 56 54 5f arVersion) = VT_
27e0: 49 34 3b 0d 0a 09 09 56 5f 49 34 28 26 76 61 72 I4;....V_I4(&var
27f0: 56 65 72 73 69 6f 6e 29 20 3d 20 32 30 30 30 3b Version) = 2000;
2800: 0d 0a 09 09 53 61 66 65 41 72 72 61 79 50 75 74 ....SafeArrayPut
2810: 45 6c 65 6d 65 6e 74 28 2a 70 49 6e 66 6f 2c 26 Element(*pInfo,&
2820: 6c 49 6e 64 2c 26 76 61 72 56 65 72 73 69 6f 6e lInd,&varVersion
2830: 29 3b 0d 0a 09 09 72 65 74 75 72 6e 20 53 5f 4f );....return S_O
2840: 4b 3b 0d 0a 09 7d 0d 0a 09 73 74 61 74 69 63 20 K;...}...static
2850: 43 4f 6e 65 41 64 64 69 6e 49 6d 70 6c 3c 54 3e COneAddinImpl<T>
2860: 2a 26 20 67 65 74 70 74 72 28 29 7b 73 74 61 74 *& getptr(){stat
2870: 69 63 20 43 4f 6e 65 41 64 64 69 6e 49 6d 70 6c ic COneAddinImpl
2880: 3c 54 3e 2a 20 70 74 72 3b 72 65 74 75 72 6e 20 <T>* ptr;return
2890: 70 74 72 3b 7d 0d 0a 70 75 62 6c 69 63 3a 0d 0a ptr;}..public:..
28a0: 09 73 74 61 74 69 63 20 76 6f 69 64 20 4f 6e 50 .static void OnP
28b0: 72 6f 63 65 73 73 41 74 74 61 63 68 28 29 7b 67 rocessAttach(){g
28c0: 65 74 70 74 72 28 29 3d 6e 65 77 20 43 4f 6e 65 etptr()=new COne
28d0: 41 64 64 69 6e 49 6d 70 6c 3c 54 3e 3b 7d 0d 0a AddinImpl<T>;}..
28e0: 09 73 74 61 74 69 63 20 76 6f 69 64 20 4f 6e 50 .static void OnP
28f0: 72 6f 63 65 73 73 44 65 74 61 63 68 28 29 7b 64 rocessDetach(){d
2900: 65 6c 65 74 65 20 67 65 74 70 74 72 28 29 3b 7d elete getptr();}
2910: 0d 0a 09 2f 2f 20 cf ee eb f3 f7 e5 ed e8 e5 20 ...// .........
2920: f1 f1 fb eb ea e8 20 ed e0 20 e5 e4 e8 ed f1 f2 ...... .. ......
2930: e2 e5 ed ed fb e9 20 fd ea e7 e5 ec ef eb ff f0 ...... .........
2940: 20 e0 e4 e4 e8 ed e0 0d 0a 09 73 74 61 74 69 63 .........static
2950: 20 43 4f 6e 65 41 64 64 69 6e 49 6d 70 6c 3c 54 COneAddinImpl<T
2960: 3e 26 20 47 65 74 41 64 64 69 6e 28 29 7b 72 65 >& GetAddin(){re
2970: 74 75 72 6e 20 2a 67 65 74 70 74 72 28 29 3b 7d turn *getptr();}
2980: 0d 0a 7d 3b 0d 0a 0d 0a 7d 2f 2f 20 6e 61 6d 65 ..};....}// name
2990: 73 70 61 63 65 20 61 64 64 69 6e 0d 0a space addin..