????? ????? IObjectSafety ?? Visual Basic ????? ??????

?????? ????????? ?????? ?????????
???? ???????: 182598 - ??? ???????? ???? ????? ????? ??? ???????.
????? ???? | ?? ????

??????

???? ??? ??????? ????? ????? ????? IObjectSafety ?? ????? ?????? Visual Basic ???? ????? ??? ??????? ???? ??????? ??? ????? ??????. ???? ???????? ?????? ????? ???? Visual Basic ????????? ?? ??? ???????? ?? ??????? ???? ????? ??? ??????? ???? ??????? ??? ???? ??????. ????? ????? IObjectSafety ?? ??????? ??????. ????? ??? ??????? ??? ???? ????????? ???????? ???????? ?????? ??? ??????? ?? ????? ?????? Visual Basic.

?????? ?? ?? ???????? ??? ????? ??? ??? ???? ???? ??? ??? ???????? ??? ??? ???? ?????? ?? ???????? ?????. ?? ???? ??? ?????? ?????? ??? ????? ??? ????? ???? ??? ??????? ???? ???????; ?????? ???? ????? ?????? ??? ?? ????????? ????????. ?????? ?????? ??? ??????? ?????? ???? ??????? ?????? ????? (SDK) ?????? ??? ??? ???? ???. ???? "????? ????? ? ????? ???? ?????? ??? ????? ???? ActiveX" ??? ?????? "????? ????????".

??????? ????

?????: ???? ?? ???? ?? ??????? ??????? ???? ??? ???????? ?? ??? ???????: VarPtrStringArray VarPtr VarPtrArray ? StrPtr, ? ObjPtr. ??? ??????? ??? ?????? ?? ??? ????? ?????? ?? Microsoft. ?? ??? ??????? ?? ????? Visual Basic ??? ?? ??????? ?? ????? ????? ??????? "??? ??." ??? ???? Microsoft ?? ?????? ?? ????????? ?????????? ?? Visual Basic. ?????? ??? ??????? ?????? ??? ??? ??????? ???? ??? ??? ??????? ????? ?????? ?? "????? ??????? ?? Microsoft" (????? ?? ??? ???????? ??? ???? ?? ???? ??????? ??? ?? ??? ??? ?????? ??????????):
199824????? ?????? ??? ????? ????????? ?? Visual Basic
???? ??????? ??????? ????? ????? ???? ???? Visual Basic ????? ??? ????? ??? ??????? ???? ???????.
  1. ????? ???? ???? ??? ????? ??? ???? ??????? ???? ???? ???????? ?? ??? ??????.
  2. ?????? ??? ????? ????? ??? ??????? ???????? ?? OLE ?? ????? ??????? ?? Visual Basic 6.0. ?????? ????? ??? ???? ??????? ??????? ?? ?????? \Common\Tools\VB\Unsupprt\Typlib\ ??? ???? ???????. ??????: ??? ???? ??????? ?? ???? \VB5.0\Tools\Unsupprt\Typlib\ ?? 5.0 Basic ???????.
  3. ?? ???? ???? ?????? ?? ??????? ?? ???? ????? ?? ???? ??????? ?? Objsafe.odl:
          [
              uuid(C67830E0-D11D-11cf-BD80-00AA00575603),
              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);
               }
           }
    					
  4. ?? ???? ???????? ?????? ????? ??????? <path> ????? ??? ??? ???? ??????? ?? ???? ????? ?????? ?????? ??? .tlb:
    objsafe.tlb /tlb objsafe.odl MKTYPLIB
  5. ????? ????? ???? ???? ActiveX ???? Visual Basic. ?? ??????? ????? ????? ??? ??????? IObjSafety ???? ???? ?????? ??? DemoCtl. ??? CommandButton ?????? cmdTest ??? ???? ??????. ?? ????? Click ????? cmdTest, ?? ????? MsgBox "??????".
  6. ?? ??????? ??????? ???? "?????" ? ??????? ?? ???? ?????? Objsafe.tlb ??? ???????? ??????.
  7. ????? ???? ????? ????? ??? ??????? ???????? ????????? ???????? ??????? ???????? basSafeCtl ?????? ???????:
          Option Explicit
    
          Public Const IID_IDispatch = "{00020400-0000-0000-C000-000000000046}"
          Public Const IID_IPersistStorage = _
            "{0000010A-0000-0000-C000-000000000046}"
          Public Const IID_IPersistStream = _
            "{00000109-0000-0000-C000-000000000046}"
          Public Const IID_IPersistPropertyBag = _
            "{37D84F60-42CB-11CE-8135-00AA004BB851}"
    
          Public Const INTERFACESAFE_FOR_UNTRUSTED_CALLER = &H1
          Public Const INTERFACESAFE_FOR_UNTRUSTED_DATA = &H2
          Public Const E_NOINTERFACE = &H80004002
          Public Const E_FAIL = &H80004005
          Public Const MAX_GUIDLEN = 40
    
          Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
             (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
    					
  8. ????? ??????? ?? ????? "???? ??? ???????" ??? ??????? Sub ?????? "??????? ' Sub '" ?????. ??????? m_fSafeForScripting ?????????? m_fSafeForInitializing ?????? ??? ????? ??????? ??????? ?????? ?/?? ???????.
  9. ??? ???? ????????? ???????? ?????? ?? ???? ??????. ????? ????? ?????? ?? ???????? ???????? ??? ???? ??????? (?????? ??? Option Explicit ?? ???? ??????):
    Implements IObjectSafety
    					
  10. ??? ????????? ????? ??????? ??? ????? ???? ????????? ????????:
          Private Sub IObjectSafety_GetInterfaceSafetyOptions(ByVal riid As _
          Long, pdwSupportedOptions As Long, pdwEnabledOptions As Long)
    
              Dim Rc      As Long
              Dim rClsId  As udtGUID
              Dim IID     As String
              Dim bIID()  As Byte
    
              pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER Or _
                                    INTERFACESAFE_FOR_UNTRUSTED_DATA
    
              If (riid <> 0) Then
                  CopyMemory rClsId, ByVal riid, Len(rClsId)
    
                  bIID = String$(MAX_GUIDLEN, 0)
                  Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)
                  Rc = InStr(1, bIID, vbNullChar) - 1
                  IID = Left$(UCase(bIID), Rc)
    
                  Select Case IID
                      Case IID_IDispatch
                          pdwEnabledOptions = IIf(m_fSafeForScripting, _
                        INTERFACESAFE_FOR_UNTRUSTED_CALLER, 0)
                          Exit Sub
                      Case IID_IPersistStorage, IID_IPersistStream, _
                         IID_IPersistPropertyBag
                          pdwEnabledOptions = IIf(m_fSafeForInitializing, _
                        INTERFACESAFE_FOR_UNTRUSTED_DATA, 0)
                          Exit Sub
                      Case Else
                          Err.Raise E_NOINTERFACE
                          Exit Sub
                  End Select
              End If
          End Sub
    
          Private Sub IObjectSafety_SetInterfaceSafetyOptions(ByVal riid As _
          Long, ByVal dwOptionsSetMask As Long, ByVal dwEnabledOptions As Long)
              Dim Rc          As Long
              Dim rClsId      As udtGUID
              Dim IID         As String
              Dim bIID()      As Byte
    
              If (riid <> 0) Then
                  CopyMemory rClsId, ByVal riid, Len(rClsId)
    
                  bIID = String$(MAX_GUIDLEN, 0)
                  Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)
                  Rc = InStr(1, bIID, vbNullChar) - 1
                  IID = Left$(UCase(bIID), Rc)
    
                  Select Case IID
                      Case IID_IDispatch
                          If ((dwEnabledOptions And dwOptionsSetMask) <> _
                       INTERFACESAFE_FOR_UNTRUSTED_CALLER) Then
                              Err.Raise E_FAIL
                              Exit Sub
                          Else
                              If Not m_fSafeForScripting Then
                                  Err.Raise E_FAIL
                              End If
                              Exit Sub
                          End If
    
                      Case IID_IPersistStorage, IID_IPersistStream, _
                    IID_IPersistPropertyBag
                          If ((dwEnabledOptions And dwOptionsSetMask) <> _
                        INTERFACESAFE_FOR_UNTRUSTED_DATA) Then
                              Err.Raise E_FAIL
                              Exit Sub
                          Else
                              If Not m_fSafeForInitializing Then
                                  Err.Raise E_FAIL
                              End If
                              Exit Sub
                          End If
    
                      Case Else
                          Err.Raise E_NOINTERFACE
                          Exit Sub
                  End Select
              End If
          End Sub
    					
  11. ?? ??????? ???? ?? ???? ??????? ???????? ?????? ??. ??? ??? OCX ?? ???????. ?????? ????? ?????? ????? IObjectSafety ????. ??????? ??? ????? ???? ?????? ?? ??? .htm.

?????

?? MkTypLib.exe ???? ???? ??????? ?? ?????? ??????? ????? ????? ?????? (SDK) ???? ???? ?? Microsoft Visual Studio 6.0 ??????. ?????? ?? ???? Platform SDK ????? MkTypLib.exe.

?????? ??? ??????? ??? ????? ??????? MkTypLib ???? ???? Microsoft ?????? ??? ?????:
http://www.microsoft.com/msj/0297/visualprog/visualprog0297.aspx
?????? ??? ??????? ??????? ???? ??? ????? ???????? ??????? ?????? ?? "????? ??????? ?? Microsoft" (????? ?? ??? ???????? ??? ???? ?? ???? ??????? ??? ?? ??? ??? ?????? ??????????):
161873????? MFC ??? ????? ??? ????? ?????? ??????/????? ????? ????
143258????? ????? ??????? ? DLL Declarations ?? ????? ???
131105????: TYPEBLD: ????? ??????? ICreateTypeLib ? ICreateTypeInfo
????? ?? ????????? ??? ????? IObjectSafety ???? ???? Microsoft ?????? ??? ?????:
http://msdn.microsoft.com/en-us/library/aa911729.aspx
????? ?? ????????? ??? ????? ??????? ???????? ?????? ?????? ???? ActiveX ???? ???? Microsoft ?????? ??? ?????:
http://msdn2.microsoft.com/en-us/library/Aa751977.aspx
????? ?? ????????? ??? ????? ?????? ???? ????? ??? ??? ??????? Microsoft Internet Explorer? ?? ?????? ????? Microsoft ???????? ??? ?????:
http://msdn.microsoft.com/ie/

http://support.microsoft.com/iep

???????

???? ???????: 182598 - ????? ??? ??????: 04/????/1428 - ??????: 5.3
????? ???
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.01
  • Microsoft Internet Explorer (Programming) 5.01 SP1
  • Microsoft Internet Explorer 5.5
????? ??????: 
kbmt kbfaq kbhowto KB182598 KbMtar
????? ????
???: ??? ????? ??? ?????? ???????? ?????? ????? ???? ????? ?????????? ????? ?? ????????? ?????? ????. ???? ???? ?????????? ???? ?? ???????? ???????? ?????? ????????? ????? ????????? ???????? ????? ???????? ?????? ?? ?????? ??? ?? ???????? ???????? ?? ????? ??????? ?????? ??? ??????? ?????? ??. ?????? ?? ???? ??? ??????? ???????? ????? ?? ???? ????? ?????? ??? ????? ??? ????? ??????? ?? ????? ?? ?????? ??? ??? ??????? ??????? ?? ????? ????? ????? ????? ?????. ?? ????? ???? ?????????? ??????? ??? ????? ?? ??????? ?? ????? ?????? ?? ??? ????? ?? ????? ??????? ?? ???????? ?? ??? ???????. ???? ???? ?????????? ???????? ??? ????? ?????? ??????? ??????
???? ??? ????? ??????? ?????? ??????????182598

????? ???????

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com