Ako IObjectSafety, vďaka implementovať v kontrolách jazyku Visual Basic

Preklady článku Preklady článku
ID článku: 182598 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

SUHRN

Tento článok popisuje implementovať IObjectSafety, vďaka rozhranie v jazyku Visual Basic kontrolách označiť ovládacie prvky bezpečné na skriptovanie a Inicializácia. V predvolenom nastavení jazyka Visual Basic ovládacie prvky používajú kategórii komponentu položky v databáze registry označiť kontrolu bezpečné na skriptovanie a Inicializácia. Vykonávacie IObjectSafety, vďaka rozhranie je uprednostňovanou metódou. Tento článok obsahuje kód, ktorý je potrebný na realizáciu tohto rozhrania v kontrolách jazyku Visual Basic.

Majte na pamäti, že ovládací prvok by len byť označené ako bezpečné, ak je, v skutočnosti, bezpečné. Tento článok nepopisuje podrobnosti o označenie Ovládacie prvky, ako bezpečné pre skriptovanie a inicializáciu; jednoducho demonštruje, ako to urobiť v kóde. Nájdete v dokumentácii k internetu klienta Software Development Kit (SDK) podrobný opis tejto. Pozri „bezpečné Inicializácia a skriptovanie pre ovládacie prvky ActiveX"časti zložky rozvoj.

DALSIE INFORMACIE

UPOZORNENIE: Jednej alebo viacerých z týchto funkcií sú diskutované v tomto článku: VarPtr, VarPtrArray, VarPtrStringArray, StrPtr, a ObjPtr. Tieto funkcie nie sú podporované technickej podpory spoločnosti Microsoft. Nie sú zdokumentované v dokumentácii programu Visual Basic a sú uvedené v tomto článku databázy Knowledge Base "ako"je. Spoločnosť Microsoft nezaručuje, že bude k dispozícii v ďalších vydaniach jazyka Visual Basic. Ďalšie informácie o týchto funkciách nájdete kliknutím na nasledujúce číslo článku databázy Microsoft Knowledge Base:
199824 Ako získať adresu premenných v jazyku Visual Basic
Nasledovné kroky ukazujú ako vytvoriť jednoduchá kontrola jazyka Visual Basic a označiť ako bezpečné pre skriptovanie a inicializáciu.
  1. Vytvoriť nový priečinok, kde môžete uložiť všetky súbory, ktoré vytvoríte v tomto príklade.
  2. Získajte OLE automatizácie typ knižnice generátor z disku CD-ROM programu Visual Basic 6.0. Vykonáte to skopírujte všetky štyri súbory z priečinka \Common\Tools\VB\Unsupprt\Typlib\ do priečinka projekt. Poznámka:: Kopírovanie všetkých súborov z priečinka \VB5.0\Tools\Unsupprt\Typlib\ VIsual Basic 5.0.
  3. Nasledujúci text skopírujte do programu Poznámkový blok a uložte súbor do priečinka projekt ako 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. Do príkazového riadka, použite CD<path></path> príkaz Premiestniť do priečinka projekt a zadajte nasledovný príkaz generovať .tlb súbor:
    MKTYPLIB objsafe.odl /tlb objsafe.tlb
  5. Z programu Visual Basic, vytvoriť ovládací prvok ActiveX projektu. V Vlastnosti zoznam, zmeniť názov projektu IObjSafety a názov ovládacieho prvku DemoCtl. Dať CommandButton s názvom cmdTest na ovládanie. V obsluhe udalostí kliknite cmdTest, dal "Test" vyhlásenie OknoHlásenia.
  6. Na Project ponuky, kliknite na tlačidlo Odkazy, vyhľadajte a pridať Objsafe.tlb, ktorý ste vytvorili predtým.
  7. Pridať nový modul do projektu s nasledujúci kód a názov modulu 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. Od vlastnosti projektu, zmeniť objekt pri spustení K písmenu Main na vykonanie Sub hlavné vyššie. Použitie m_fSafeForScripting a m_fSafeForInitializing premenné špecifikovať hodnoty bezpečné pre skriptovanie a/alebo Inicializácia premenných.
  9. Otvorte okno kód vašej kontrolou. Pridajte nasledujúci riadok kódu do sekcie vyhlásenie (hneď po možnosť výslovného alebo ako prvý):
    Implements IObjectSafety
    					
  10. Kopírovanie sa tieto dva postupy k kóde ovládacie prvky:
          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. Na Súbor ponuka uložiť projekt a súbory. Aby OCX súbor z vášho projektu. Teraz plní vaše ovládanie IObjectSafety, vďaka rozhranie. Chcete vyskúšať, vložte ovládací prvok súbor .htm.

ODKAZY

MkTypLib.exe je staré nástroj, ktorý dopravoval s Platform Software Development Kit (SDK) ktorý prichádza s Microsoft Visual Studio 6.0. Súčasný Platform SDK nepochádza s MkTypLib.exe nástroj.

Informácie o dovolania MkTypLib, nájdete na nasledujúcej webovej lokalite spoločnosti Microsoft:
http://www.Microsoft.com/MSJ/0297/visualprog/visualprog0297.aspx
Dodatočné informácie, po kliknutí na nasledovné čísla článkov databázy Microsoft Knowledge Base:
161873 Ako Mark MFC kontroly bezpečné na skriptovanie a inicializáciu
143258 Ako vytvoriť konštánt a DLL vyhlásenia v Type Library
131105 VZORKA: TYPEBLD: ako používať ICreateTypeLib a ICreateTypeInfo
Ďalšie informácie o IObjectSafety, vďaka rozhranie, nájdete na nasledujúcej webovej lokalite spoločnosti Microsoft:
http://msdn.Microsoft.com/en-us/library/aa911729.aspx
Ďalšie informácie o núdzovom Inicializácia a skriptovanie ovládacích prvkov ActiveX nájdete na nasledujúcej webovej lokalite spoločnosti Microsoft:
http://msdn2.Microsoft.com/en-us/library/Aa751977.aspx
Ďalšie informácie o vývoji riešení založených na Web pre program Microsoft Internet Explorer, nájdete na nasledovných webových lokalitách spoločnosti Microsoft:
http://msdn.Microsoft.com/IE/

http://support.Microsoft.com/IEP

Vlastnosti

ID článku: 182598 - Posledná kontrola: 18. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • 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 5.0 Learning Edition
  • Microsoft Internet Explorer 4.01 Service Pack 1
Kľúčové slová: 
kbFAQ kbhowto kbmt KB182598 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:182598

Odošlite odozvu

 

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