- 0
- 0
- 约3.91千字
- 约 4页
- 2023-07-20 发布于上海
- 举报
VB6.0 开发 ActiveX 实现 IObjectSafety
VB6.0 开发 ActiveX 实现 IObjectSafety
VB6.0 开发的 ActiveX 控件应用与 Web 程序中时必须实现 IObjectSafety 接口.否则不能够正常使用.
步骤:
1:新建文件 Objsafe.odl 文件
[
uuid(C67830E0-D11D-11cf-BD80-00A,
helpstring(VB IObjectSafety Interface), version(1.0)
]
library IObjectSafetyTLB
{
importlib(stdole2.tlb); [
uuid(CB5BDC81-93C1-11cf-8F20-00805F2CD064),
helpstring(IObjectSafety Interface), odl
]
interface IObjectSafety:IUnknown { [helpstring(GetInterfaceSafetyOptions)] HRESULT GetInterfaceSafetyOptions(
[in] long riid,
[in] long *pdwSupportedOptions, [in] long *pdwEnabledOptions);
[helpstring(SetInterfaceSafetyOptions)] HRESULT SetInterfaceSafetyOptions(
[in] long riid,
[in] long dwOptionsSetMask, [in] long dwEnabledOptions);
}
}
2:运行 MKTYPLIB( 在本目录中)
选择刚建立的文件(Objsafe.odl), 改程序将生成文件 Objsafe.tlb. 3:在工程中引用文件 Objsafe.tlb
4:在工程中新建模块 basSafeCtl.bas
代码:
Attribute VB_Name = basSafeCtl Option Explicit
Public Const IID_IDispatch = 0000-0000-C000-000000000046}
Public Const IID_IPersistStorage = _ {0000010A-0000-0000-C000-000000000046}
Public Const IID_IPersistStream = _ 0000-0000-C000-000000000046}
Public Const IID_IPersistPropertyBag = _ {37D84F60-42CB-11CE-8135-00AA004BB851}
Public Const INTERFACESAFE_FOR_UNT RUSTED_CALLER = H1 Public Const INTERFACESAFE_FOR_UNT RUSTED_DATA = H2
Public Const E_NOINTERFACE = Public Const E_FAIL = Public Const MAX_GUIDLEN = 40
Public Declare Sub CopyMemory Lib kernel32 Alias Rt lMoveMemory _ (pDest As Any, pSource As Any, ByVal ByteLen As Long)
Public Declare Function StringFromGUID2 Lib ole32.dll (rguid As _ Any, ByVal lpstrClsId As Long, ByVal cbMax As Integer) As Long
Public Type udtGUID Data1 As Long Data2 As Integer Data3 As Integer Data4(7) As Byte End Type
Public m_fSafeForScripting As Boolean Public m_fSafeForInitializing As Boolean
Sub Main() m_fSafeForScripting = True m_fSafeForInitializing = True End Sub
5:在控件的代码区域中写入如下代码 :
Implements IObjectSafety
Private Sub IObjectSafety_GetInterfaceSafet
原创力文档

文档评论(0)