// Decal.idl : IDL source for Decal.dll // // This file will be processed by the MIDL tool to // produce the type library (Decal.tlb) and marshalling code. import "oaidl.idl"; import "ocidl.idl"; interface IPluginSite2; [ object, uuid(A51CEB03-B59F-4302-B125-A0846EA537DD), helpstring("IPlugin2 Interface - All plugin components are required to implement this interface"), pointer_default(unique) ] interface IPlugin2 : IUnknown { [helpstring("Create all objects and views within your plugin. The assigned ID can be used for self termiantion and the plugin site should be stored.")] HRESULT Initialize(IPluginSite2 *Site); [helpstring("Release all your objects including the stored IPluginSite2")] HRESULT Terminate(); }; [ object, uuid(256DF70B-0B87-45e4-96EE-043E2254CC95), helpstring("IRenderSink Interface"), pointer_default(unique) ] interface IKitchenSink : IUnknown { [helpstring("method AddToQueue")] HRESULT AddToQueue([in]long lObjectID); [helpstring("method ShortcircuitID")] HRESULT ShortcircuitID([in] long lObjectID); }; [ object, uuid(FFA32A7A-EFAF-484A-B358-8802DBBAB0EC), helpstring("IDecalEnum Interface"), pointer_default(unique) ] interface IDecalEnum : IUnknown { [propget, helpstring("Human Readable Name")] HRESULT FriendlyName([out, retval] BSTR *pVal); [propget, helpstring("CLSID for the object")] HRESULT ComClass([out, retval] CLSID *pVal); [propget, helpstring("If the object is enabled")] HRESULT Enabled([out, retval] VARIANT_BOOL *pVal); [propput, helpstring("Set the object enabled")] HRESULT Enabled([in] VARIANT_BOOL newVal); [helpstring("Create an instance of this object")] HRESULT CreateInstance(REFIID iid, [out, retval, iid_is(iid)] LPVOID *ppvItf); [helpstring("Move to the next entry, returns S_FALSE when complete")] HRESULT Next(); [propget, helpstring("If this object is a surrogate, returns the surrogate CLSID, otherwise GUID_NULL")] HRESULT SurrogateClass([out, retval] CLSID *pVal); [propget, helpstring("Resource path for this object, if not specified the decal resource path")] HRESULT ResourcePath([out, retval] BSTR *pVal); [propget, helpstring("property Property")] HRESULT Property(BSTR Name, [out, retval] VARIANT *pVal); [propget, helpstring("property Group")] HRESULT Group([out, retval] BSTR *pVal); [helpstring("Advance to a specific class")] HRESULT Skip ([in] REFCLSID clsid); [helpstring("method MoveBefore")] HRESULT MoveBefore(REFCLSID clsidBefore); }; [ object, uuid(9337777E-3079-47E3-8B6A-EDCB1ECABC27), helpstring("IACHooks Interface"), dual, pointer_default(unique), oleautomation ] interface IACHooks : IDispatch { [id(1), propget, helpstring("property CurrentSelection")] HRESULT CurrentSelection([out, retval] long* pVal); [id(1), propput, helpstring("property CurrentSelection")] HRESULT CurrentSelection([in] long pVal); [id(2), propget, helpstring("property PreviousSelection")] HRESULT PreviousSelection([out, retval] long* pVal); [id(2), propput, helpstring("property PreviousSelection")] HRESULT PreviousSelection([in] long pVal); [id(3), helpstring("method ChatOut")] HRESULT ChatOut([in]BSTR szText, long lColor); [id(4), helpstring("method RawChatOut")] HRESULT RawChatOut([in]BSTR szText, long lColor); [id(5), helpstring("method SetCursorPosition")] HRESULT SetCursorPosition([in] long lX, long lY); [id(6), helpstring("method CastSpell")] HRESULT CastSpell([in]long lSpellID, long lObjectID); [id(7), helpstring("method MoveItem")] HRESULT MoveItem([in] long lObjectID, long lPackID, long lSlot, VARIANT_BOOL bStack); [id(8), helpstring("method SelectItem")] HRESULT SelectItem([in]long lObjectID); [id(9), helpstring("method UseItem")] HRESULT UseItem([in]long lObjectID, long lUseState); [propget, id(10), helpstring("property CombatState")] HRESULT CombatState([out, retval] long *pVal); [propget, id(12), helpstring("property ChatState")] HRESULT ChatState([out, retval] VARIANT_BOOL *pVal); [id(13), helpstring("method UseItemEx")] HRESULT UseItemEx([in] long UseThis, long OnThis); [id(14), helpstring("method GetFellowStats")] HRESULT GetFellowStats([in] long lCharID); [propget, id(15), helpstring("property SelectedStackCount")] HRESULT SelectedStackCount(long lStackCount, [out, retval] long *pVal); [propput, id(15), helpstring("property SelectedStackCount")] HRESULT SelectedStackCount(long lStackCount, [in] long newVal); [propget, id(16), helpstring("property VendorID")] HRESULT VendorID([out, retval] long *pVal); [propget, id(17), helpstring("property BusyState")] HRESULT BusyState([out, retval] long *pVal); [propget, id(18), helpstring("property BusyStateID")] HRESULT BusyStateID([out, retval] long *pVal); [propget, id(19), helpstring("property PointerState")] HRESULT PointerState([out, retval] long *pVal); [id(20), helpstring("method MoveItemEx")] HRESULT MoveItemEx([in]long lObjectID, long lDestinationID); [propget, id(21), helpstring("property Heading")] HRESULT Heading([out, retval] double *pVal); [propget, id(22), helpstring("property Landblock")] HRESULT Landblock([out, retval] long *pVal); [propget, id(23), helpstring("property LocationX")] HRESULT LocationX([out, retval] double *pVal); [propget, id(24), helpstring("property LocationY")] HRESULT LocationY([out, retval] double *pVal); [propget, id(25), helpstring("property LocationZ")] HRESULT LocationZ([out, retval] double *pVal); [propget, id(26), helpstring("property HooksAvailable")] HRESULT HooksAvail([out, retval] long *pVal); [id(27), helpstring("method DropItem")] HRESULT DropItem([in]long lObjectID); [id(28), helpstring("method FaceHeading")] HRESULT FaceHeading([in] float fHeading, [in] VARIANT_BOOL bUnknown, [out,retval] VARIANT_BOOL *pVal); [propget, id(29), helpstring("property Screen3DWidth")] HRESULT Area3DWidth([out, retval] long *pVal); [propget, id(30), helpstring("property Screen3DHeight")] HRESULT Area3DHeight([out, retval] long *pVal); [id(31), helpstring("method ItemIsKnown")] HRESULT ItemIsKnown([in] long lGUID, [out,retval] VARIANT_BOOL *pVal); [id(32), helpstring("method SendTell")] HRESULT SendTell([in]long lPlayerID, BSTR Message); [id(33), helpstring("method SetAutorun")] HRESULT SetAutorun([in] VARIANT_BOOL bOnOff); [id(34), helpstring("method SendTellEx")] HRESULT SendTellEx([in]BSTR Name, BSTR Message); [id(35), helpstring("Gets known MemLocs from the xml.")] HRESULT QueryMemLoc([in] BSTR bstrName, [out, retval] long *pVal); [propget, id(36), helpstring("property Vital")] HRESULT Vital([in] long Vital, [out, retval] long* pVal); [propget, id(37), helpstring("property Attribute")] HRESULT Attribute([in] long Attribute, [out, retval] long* pVal); [propget, id(38), helpstring("property Skill")] HRESULT Skill([in] long Skill, [out, retval] long* pVal); [id(39), helpstring("method LocalChatText")] HRESULT LocalChatText([in] BSTR Text); [id(40), helpstring("method LocalChatEmote")] HRESULT LocalChatEmote([in] BSTR EmoteText); [id(41), helpstring("method SetCombatState")] HRESULT SetCombatState([in] long pVal); [propget, id(42), helpstring("property HooksAvailEx")] HRESULT HooksAvailEx([in] enum eAvailableHooksEx HookID,[out, retval] VARIANT_BOOL *pVal); [id(43), helpstring("method Logout")] HRESULT Logout(); [id(44), helpstring("method SetDecal")] HRESULT SetDecal([in] IUnknown *pDecal); [id(45), helpstring("method SecureTrade_Add")] HRESULT SecureTrade_Add([in] long ItemID, [out, retval] VARIANT_BOOL *pVal); [propget, id(46), helpstring("property SkillTrainLevel")] HRESULT SkillTrainLevel([in] enum eSkill SkillID, [out, retval] enum eTrainLevel *pVal); [propget, id(47), helpstring("property SkillTotalXP")] HRESULT SkillTotalXP([in] enum eSkill SkillID, [out, retval] int *pVal); [propget, id(48), helpstring("property SkillFreePoints")] HRESULT SkillFreePoints([in] enum eSkill SkillID, [out, retval] int *pVal); [propget, id(49), helpstring("property SkillClicks")] HRESULT SkillClicks([in] enum eSkill SkillID, [out, retval] int *pVal); [propget, id(50), helpstring("property AttributeTotalXP")] HRESULT AttributeTotalXP([in] enum eAttribute AttributeID, [out, retval] int *pVal); [propget, id(51), helpstring("property AttributeClicks")] HRESULT AttributeClicks([in] enum eAttribute AttributeID, [out, retval] int *pVal); [propget, id(52), helpstring("property AttributeStart")] HRESULT AttributeStart([in] enum eAttribute AttributeID, [out, retval] int *pVal); [propget, id(53), helpstring("property VitalTotalXP")] HRESULT VitalTotalXP([in] enum eVital VitalD, [out, retval] int *pVal); [propget, id(54), helpstring("property VitalClicks")] HRESULT VitalClicks([in] enum eVital VitalID, [out, retval] int *pVal); [id(55), helpstring("method RequestID")] HRESULT RequestID([in] long lObjectID); [id(56), helpstring("method IDQueueAdd")] HRESULT IDQueueAdd([in] long lObjectID); [id(57), helpstring("method SetIDFilter")] HRESULT SetIDFilter([in] IKitchenSink* pIDFilter); [id(58), helpstring("method UstAddItem")] HRESULT UstAddItem([in] long lObjectID); [id(59), helpstring("method SendMessageByMask")] HRESULT SendMessageByMask([in] LONG lMask, [in] BSTR szMessage); [id(60), helpstring("Display a message in the upper left hand corner as either white text or yellow with the busy/error sound.")] HRESULT ToolText([in] BSTR Text, [in] VARIANT_BOOL bError); [id(61), helpstring("Appends text to the message in the upper left hand corner as either white text or yellow with the busy/error sound.")] HRESULT ToolTextAppend([in] BSTR Text, [in] VARIANT_BOOL bError); [id(62), helpstring("Raw Use Item (3rd param)")] HRESULT UseItemRaw([in]long lObjectID, long lUseState, long lUseMethod); [id(63), helpstring("Use the Casting Foci's Spell")] HRESULT UseFociSpell([in]long UseThis, long OnThis); [id(64), helpstring("Set the idle time required to log out")] HRESULT SetIdleTime([in] double dIdleTimeout); [id(65), helpstring("Set /day")] HRESULT SetDay([in] VARIANT_BOOL bDay); [propget, id(66), helpstring("property Misc")] HRESULT Misc([in] long Vital, [out, retval] long* pVal); [id(67), helpstring("Give an item")] HRESULT GiveItem([in] long lObject, long lDestination); [id(68), helpstring("Raw MoveItemEx")] HRESULT MoveItemExRaw([in] long lObject, long lDestination, long lMoveFlags); }; [ object, uuid(5C36D41D-1DDD-4315-97CA-75095DDFF8BB), helpstring("IDecal Interface"), pointer_default(unique) ] interface IDecal : IUnknown { [helpstring("Initialize the graphics library")] HRESULT InitGraphics( IUnknown *pDirectDraw, IUnknown *pD3DDevice ); [propget, helpstring("The DirectDraw object used by AC")] HRESULT DirectDraw(REFIID iid, [iid_is(iid)] void **ppvItf); [propget, helpstring("The Direct3DDevice used by AC")] HRESULT D3DDevice(REFIID iid, [iid_is(iid)] void **ppvItf); [propget, helpstring("The main AC window")] HRESULT HWND([out, retval] long *pVal); [propput, helpstring("The main AC window")] HRESULT HWND(long nVal); [propget, helpstring("If a Decal control current has keyboard focus")] HRESULT Focus([out, retval] VARIANT_BOOL *pVal); [propget, helpstring("Returns the current resolution, in windowed mode it is the client area")] HRESULT ScreenSize([out] long *pWidth, [out] long *pHeight); [helpstring("Converts a tokenized path into a real path")] HRESULT MapPath(BSTR pPath, [out, retval] BSTR *pMapped); [helpstring("Starts all plugins")] HRESULT StartPlugins(); [helpstring("Stops all plugins")] HRESULT StopPlugins(); [propget, helpstring("Get one fo the singleton objects")] HRESULT Object(BSTR strPath, REFIID iid, [out, retval, iid_is(iid)] LPVOID *pVal); [helpstring("Starts services, should be called once and before starting plugins")] HRESULT StartServices(); [propget, helpstring("Returns an enumerator for child objects, the optional GUID advances the iterator to a particular object.")] HRESULT Configuration(BSTR strType, REFCLSID clsidAdvance, [out, retval] IDecalEnum * *pVal); [helpstring("method StopServices")] HRESULT StopServices(); [propget, helpstring("property Plugin")] HRESULT Plugin(REFCLSID clsid, REFIID iid, [out, retval, iid_is(iid)] LPVOID *pVal); [propget, helpstring("property Service")] HRESULT Service(REFCLSID clsid, REFIID iid, [out, retval, iid_is(iid)] LPVOID *pVal); [helpstring("method Render2D")] HRESULT Render2D(); [helpstring("method Render3D")] HRESULT Render3D(); [propget, helpstring("property Hooks")] HRESULT Hooks([out, retval] IACHooks** pVal); }; [ object, uuid(5DBD2180-4B88-440e-9706-E6159A39D014), helpstring("IDecalDirectory Interface"), pointer_default(unique) ] interface IDecalDirectory : IUnknown { [helpstring("method Lookup")] HRESULT Lookup(BSTR strName, [out, retval] IUnknown **ppvItf); }; [ object, uuid(0F95468D-5071-4e28-A223-D83FDFED99E2), helpstring("Interface for a decal service object"), pointer_default(unique) ] interface IDecalService : IUnknown { [helpstring("Prepare the service")] HRESULT Initialize(IDecal *pDecal); [helpstring("Before plugins are loaded")] HRESULT BeforePlugins(); [helpstring("After plugins are terminates")] HRESULT AfterPlugins(); [helpstring("method Terminate")] HRESULT Terminate(); }; [ object, uuid(B66985FA-8CB0-48e5-A2A9-7B232D609B9C), helpstring("Service interface for services that perform an action each frame"), pointer_default(unique) ] interface IDecalRender : IUnknown { [helpstring("method Render2D")] HRESULT Render2D(); [helpstring("method Render3D")] HRESULT Render3D(); [helpstring("method ChangeHWND")] HRESULT ChangeHWND(); [helpstring("method ChangeDirectX")] HRESULT ChangeDirectX(); }; [ object, uuid(4FA5D6DF-6169-4F9C-B286-F863D4DA2357), dual, helpstring("IPluginSite2 Interface"), pointer_default(unique) ] interface IPluginSite2 : IUnknown { [helpstring("method Unload")] HRESULT Unload(); [propget, helpstring("property Object")] HRESULT Object(BSTR Path, [out, retval] LPDISPATCH *pVal); [propget, helpstring("property Decal")] HRESULT Decal([out, retval] IDecal * *pVal); }; [ object, uuid(DA98635C-A312-463b-A746-2CF62AF7413A), helpstring("IDecalSurrogate Interface"), pointer_default(unique) ] interface IDecalSurrogate : IUnknown { [helpstring("method CreateInstance")] HRESULT CreateInstance(IDecalEnum *pInitData, REFIID iid, [out, retval, iid_is(iid)] LPVOID *pObject); }; [ object, uuid(E182005F-6A67-48b5-A50F-464340105330), helpstring("IDecalFileSurrogate Interface"), pointer_default(unique) ] interface IDecalFileSurrogate : IUnknown { [helpstring("method Register")] HRESULT Register(BSTR Filename); [propget, helpstring("property Extension")] HRESULT Extension([out, retval] BSTR *pVal); [propget, helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal); }; [ object, uuid(6A188D19-EC3D-409d-8190-7975FEEE2081), helpstring("IDecalUninstall Interface"), pointer_default(unique) ] interface IDecalUninstall : IUnknown { [helpstring("This is the uninstallers last chance to see the configuration data. Record everything useful")] HRESULT Prepare(IDecalEnum *pEnum); [helpstring("Perform the remove operation")] HRESULT Uninstall(); }; [ object, uuid(A074F83A-32AB-46FC-9E4E-7E9DAFCD5D18), dual, helpstring("IDecalRes Interface"), pointer_default(unique) ] interface IDecalRes : IDispatch { }; [ uuid(EB282FE5-7170-4a37-A26E-92AF36385D2C), helpstring("IACHooksEvents Interface") ] dispinterface IACHooksEvents { properties: methods: [id(1), helpstring("method ObjectDestroyed")] HRESULT ObjectDestroyed([in] LONG lGuid); [id(2), helpstring("method OnChatBoxMessage")] VARIANT_BOOL OnChatBoxMessage([in] BSTR bstrText, [in] LONG lColor, [in,out] VARIANT_BOOL *bEat ); [id(3), helpstring("method OnCommandLineText")] VARIANT_BOOL OnCommandLineText([in] BSTR bstrText, [in,out] VARIANT_BOOL *bEat ); [id(4), helpstring("method OnSelectItem")] HRESULT OnSelectItem([in] LONG lGuid); [id(5), helpstring("method OnToolText")] void OnToolText([in] BSTR bstrText, [in] VARIANT_BOOL bError); [id(6), helpstring("method OnToolTextAppend")] void OnToolTextAppend([in] BSTR bstrText, [in] VARIANT_BOOL bError); }; [ uuid(FF7F5F6D-34E0-4B6F-B3BB-8141DE2EF732), version(1.0), helpstring("Decal 1.0 Type Library") ] library Decal { // For SendMessageByMask enum eMessageMasks { eFellowship = 0x800, eVassals = 0x1000, ePatron = 0x2000, eMonarch = 0x4000, eCovassals = 0x1000000, eAllegiance = 0x2000000, eMasks_DWORD = 0x7FFFFFFF }; enum eTrainLevel { eUntrained = 1, eTrained = 2, eSpecialized = 3, eTrainLevel_DWORD = 0x7FFFFFFF }; enum eVital { eCurrentHealth = 1, eMaximumHealth = 2, eCurrentStamina = 3, eMaximumStamina = 4, eCurrentMana = 5, eMaximumMana = 6, eBaseHealth = 7, eBaseStamina = 8, eBaseMana = 9, eVital_DWORD = 0x7FFFFFFF }; enum eAttribute { eCurrentStrength = 1, eCurrentEndurance = 2, eCurrentQuickness = 3, eCurrentCoordination = 4, eCurrentFocus = 5, eCurrentSelf = 6, eBaseStrength = 7, eBaseEndurance = 8, eBaseQuickness = 9, eBaseCoordination = 10, eBaseFocus = 11, eBaseSelf = 12, eAttribute_DWORD = 0x7FFFFFFF }; enum eSkill { eCurrentAxe = 1, eCurrentBow = 2, eCurrentCrossbow = 3, eCurrentDagger = 4, eCurrentMace = 5, eCurrentMeleeDefense = 6, eCurrentMissileDefense = 7, eCurrentSpear = 9, eCurrentStaff = 10, eCurrentSword = 11, eCurrentThrownWeapons = 12, eCurrentUnarmed = 13, eCurrentArcaneLore = 14, eCurrentMagicDefense = 15, eCurrentManaConversion = 16, eCurrentItemTinkering = 18, eCurrentAssessPerson = 19, eCurrentDeception = 20, eCurrentHealing = 21, eCurrentJump = 22, eCurrentLockpick = 23, eCurrentRun = 24, eCurrentAssessCreature = 27, eCurrentWeaponTinkering = 28, eCurrentArmorTinkering = 29, eCurrentMagicItemTinkering = 30, eCurrentCreatureEnchantment = 31, eCurrentItemEnchantment = 32, eCurrentLifeMagic = 33, eCurrentWarMagic = 34, eCurrentLeadership = 35, eCurrentLoyalty = 36, eCurrentFletchingSkill = 37, eCurrentAlchemySkill = 38, eCurrentCookingSkill = 39, eBaseAxe = 51, eBaseBow = 52, eBaseCrossbow = 53, eBaseDagger = 54, eBaseMace = 55, eBaseMeleeDefense = 56, eBaseMissileDefense = 57, eBaseSpear = 59, eBaseStaff = 60, eBaseSword = 61, eBaseThrownWeapons = 62, eBaseUnarmed = 63, eBaseArcaneLore = 64, eBaseMagicDefense = 65, eBaseManaConversion = 66, eBaseItemTinkering = 68, eBaseAssessPerson = 69, eBaseDeception = 70, eBaseHealing = 71, eBaseJump = 72, eBaseLockpick = 73, eBaseRun = 74, eBaseAssessCreature = 77, eBaseWeaponTinkering = 78, eBaseArmorTinkering = 79, eBaseMagicItemTinkering = 80, eBaseCreatureEnchantment = 81, eBaseItemEnchantment = 82, eBaseLifeMagic = 83, eBaseWarMagic = 84, eBaseLeadership = 85, eBaseLoyalty = 86, eBaseFletchingSkill = 87, eBaseAlchemySkill = 88, eBaseCookingSkill = 89, eSkill_DWORD = 0x7FFFFFFF }; enum eAvailableHooks { ePrevSelect = 0x00000001, eCurrentSelect = 0x00000002, eMouse = 0x00000004, eCastSpell = 0x00000008, eMoveItem = 0x00000010, eSelectItem = 0x00000020, eUseItem = 0x00000040, eCombatState = 0x00000080, eChatState = 0x00000100, eGetFellowStats = 0x00000200, eStackCount = 0x00000400, eTestFormula = 0x00000800, eVendorID = 0x00001000, eBusyState = 0x00002000, eBusyStateID = 0x00004000, ePointerState = 0x00008000, eMoveItemEx = 0x00010000, ePosition = 0x00020000, eFaceHeading = 0x00040000, eArea3DWidth = 0x00080000, eArea3DHeight = 0x00100000, eObjectDestroyed = 0x00200000, eSendTell = 0x00400000, eSetAutorun = 0x00800000, eGetVital = 0x01000000, eSendTellEx = 0x02000000, eLocalChatText = 0x04000000, eLocalChatEmote = 0x08000000, eSetCombatState = 0x10000000, eGetAttribute = 0x20000000, eGetSkill = 0x40000000, eHooksAvailEx = 0x80000000 }; // Items in here go in sequence (0, 1, 2, 3, ...), not as a bit-field enum eAvailableHooksEx { eLogout = 0, eSecureTrade_Add = 1, eColorEx = 2, eSkillInfo = 3, eAttributeInfo = 4, eVitalInfo = 5, eObjectFromGUID = 6, eObjectFromGUIDClass = 7, eOnSelectItemEvent = 8, eRequestID = 9, eIDQueueAdd = 10, eUstAddItem = 11, eSendMessageByMask = 12, eToolText = 13, eToolText2 = 14, eUseItemRaw = 15, eUseFociSpell = 16, eSetIdleTime = 17, eSetDay = 18, eGiveItem = 19, eMoveItemExRaw = 20, eAvailableHooksEx_DWORD = 0x7FFFFFFF // coerce enums into 4 byte instead of two }; importlib("stdole32.tlb"); importlib("stdole2.tlb"); interface IDecalSurrogate; interface IDecalFileSurrogate; interface IDecalUninstall; interface IPlugin2; interface IDecalService; interface IDecalRender; interface IKitchenSink; dispinterface IACHooksEvents; [ uuid(4557D5A1-00DB-48F6-ACB3-4FEF30E2F358), helpstring("Decal Class") ] coclass Decal { [default] interface IDecal; }; [ uuid(E2284FC7-17E5-4846-ADAB-07953273C5FB), helpstring("PluginSite Class"), noncreatable ] coclass PluginSite2 { [default] interface IPluginSite2; }; [ uuid(6DE65A82-C451-46E6-A82D-92137BE851AD), helpstring("DecalEnum Class"), noncreatable ] coclass DecalEnum { [default] interface IDecalEnum; }; [ uuid(144FBF76-E7FB-4B41-AE19-6B5AB0E0A89B), helpstring("SurrogateRemove Class") ] coclass SurrogateRemove { [default] interface IDecalUninstall; }; [ uuid(7559F22F-C56F-4621-AE08-9C354D799D4B), helpstring("ActiveXSurrogate Class") ] coclass ActiveXSurrogate { [default] interface IDecalFileSurrogate; interface IDecalUninstall; }; [ uuid(EA7BE91B-C98A-4138-8985-E22364BE8207), noncreatable, helpstring("DecalRes Class") ] coclass DecalRes { [default] interface IDecalRes; }; [ uuid(CB8875CD-ABC2-42AD-8175-8908706EED37), helpstring("ACHooks Class") ] coclass ACHooks { [default] interface IACHooks; [default, source] interface IACHooksEvents; }; };