Ako Vybuduj Office 2000 COM doplnok programu v jazyku Visual Basic

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

Na tejto stránke

SUHRN

Microsoft Office 2000 a neskôr podporu nový, jednotné dizajn architektúry pre budovanie uplatňovanie doplnky na zvýšenie a kontrolu aplikácie balíka Office. Tieto doplnky sa označujú ako doplnky COM. Tento článok ukáže ako Vybuduj doplnok COM pomocou Visual Basic.

DALSIE INFORMACIE

Doplnok COM je inprocess COM server (DLL ActiveX), ktorý implementuje rozhranie IDTExensibility2, ako je opísané v Microsoft Add-In Designer Type Library (Msaddndr.dll). Všetky doplnky COM dedia z tohto rozhrania a musí vykonávať každej z jeho piatich metód.

OnConnection

OnConnection udalosť požiare keď doplnok COM je pripojený. Doplnok môže byť pripojený na spustení koncovým užívateľom, alebo prostredníctvom automatizácie. Ak OnConnection vracia úspešne, doplnok je povedal zaťaží. Ak je vrátená chyba, hostiteľská aplikácia okamžite uvoľňuje jeho odkaz na doplnok a objekt sa zničí.

OnConnection má nasledujúce štyri parametre:
  • Aplikácia - odkaz na objekt application hostiteľa.
  • ConnectMode - konštanta, ktorý určuje, ako doplnok bol pripojený.
    • ext_cm_AfterStartup - začal konečným užívateľom z dialógového okna doplnky COM.
    • ext_cm_CommandLine - pripojený z príkazového riadka. (Nevzťahuje na budovaní doplnky COM pre aplikácie balíka Office.)
    • ext_cm_External - pripojený Externá aplikácia prostredníctvom automatizácie. (Nevzťahuje na budovaní doplnky COM pre aplikácie balíka Office.)
    • ext_cm_Startup - začal hostiteľom pri spustení aplikácie. (Toto správanie je ovládaný nastavenia v databáze registry).
  • AddInInst - odkaz na objekt COMAddIn, odkazujúci na tento doplnok v kolekcii COMAddIns pre hostiteľská aplikácia.
  • Vlastné - pole varianty, ktoré môžete uchovať užívateľské dáta.

OnDisconnection

OnDisconnection udalosť požiare keď doplnok COM je odpojená a tesne pred uvoľní z pamäte. Doplnok by mali vykonávať žiadne čistenie zdrojov v tomto prípade a obnoviť všetky zmeny vykonané hostiteľská aplikácia.

OnDisconnection má nasledujúce dva parametre:
  • RemoveMode - konštanta, ktorý určuje, ako doplnok bol odpojený.
    • ext_dm_HostShutdown - odpojí pri zatvorení hostiteľa aplikácie.
    • ext_dm_UserClosed - odpojený koncového používateľa alebo automatizácia radič.
  • Vlastné - pole varianty, ktoré môžete uchovať užívateľské dáta.

OnAddInsUpdate

OnAddInsUpdate udalosť požiare, keď súbor registrovaných doplnky COM zmení. Inými slovami, kedykoľvek COM doplnok je nainštalované alebo odstránené z hostiteľská aplikácia, táto udalosť požiare.

OnStartupComplete a OnBeginShutdown

OnStartupComplete a OnBeginShutdown metódy sa nazývajú keď hostiteľská aplikácia opustil alebo vstupuje do štátu, kde interakcie užívateľa by mali vyhnúť, pretože aplikácia je zaneprázdnená nakládky alebo vykládky sám z pamäte. OnStartupComplete je volaná iba ak váš doplnok bol pripojený počas spustenia a OnBeginShutdown nazýva iba rozpojení doplnok je hostiteľom počas vypnutia.

Pretože používateľské rozhranie pre hostiteľskou aplikáciou je plne aktívnym, keď tieto udalosti požiaru, môžu byť jediným spôsobom vykonávať určité činnosti, ktoré by sa inak nedostupné z OnConnection a OnDisconnection.

Registrujú sa doplnok COM

Popri bežných registráciu COM, COM doplnok musí sám zaregistruje každá aplikácia balíka Office, v ktorom beží. Zaregistrovať najmä aplikáciou, doplnok by vytvorte podpriečinok kľúč, pomocou jeho ProgID ako názov kľúča, podľa nasledovného umiestnenia:
HKEY_CURRENT_USER\Software\Microsoft\Office\<OfficeApp>\Addins\<ProgID>
Doplnok môže poskytnúť hodnoty toto kľúčové umiestnenie pre priateľské zobrazované meno a úplný opis. Okrem toho doplnok by mali špecifikovať jeho požadovaný zaťaženie správania pomocou hodnotu DWORD s názvom "LoadBehavior." Táto hodnota určuje ako doplnok je naložené hostiteľská aplikácia a pozostáva z kombinácie nasledujúcich hodnôt:
  • 0 = Odpojiť - nie je zavedený.
  • 1 = Pripojené - je načítaný.
  • 2 = Bootload - zaťaženie na aplikáciu pri spustení.
  • 8 = DemandLoad - zaťaženie iba ak požaduje užívateľ.
  • 16 = ConnectFirstTime - zaťaženie len raz (pri ďalšom spustení).
Typická hodnota zadaná je 0x03 (pripojené | Bootload).

Doplnky, ktoré implementujú IDTExtensibility2 by malo tiež vyšpecifikovať DWORD hodnotu nazýva "CommandLineSafe" na označenie, či sú bezpečné pre operácie, ktoré nepodporujú používateľské rozhranie. Hodnota 0x00 znamená NEPRAVDA, 0x01 je pravda.

Budovanie COM doplnok

Môžete vytvoriť doplnok COM jedným z troch spôsobov uvedených nižšie:

Budovanie COM doplnok pomocou Com doplnok šablóny

Ak máte program Microsoft Office 2000 Developer alebo Microsoft Office XP Developer a Visual Basic 6.0, najjednoduchší spôsob, ako vybudovať doplnok COM je použitie šablóny pridať in.vbp COM. Tento projekt sa nachádza v podpriečinku ODETools\V9\Samples\OPG\Samples\CH11\VB_COM_AddIn na Office 2000 Developer CD. Skopírujte súbory v tomto priečinku do Visual Basic 6.0 Template\Projects priečinka, ktorý je obyčajne C:\Program Files\Microsoft Visual Studio\VB98\Template\Projects. Kopírovanie projekt šablóny na toto umiestnenie sa zabezpečí, že daná šablóna sa zobrazí v dialógovom okne nový projekt Visual Basic 6.0. Pozri Kapitola 11 Microsoft Office 2000 Visual Basic Programmer's Guide ďalšie informácie o tejto šablóny a vytváranie doplnkov architektúry COM.

Budovanie COM doplnok pomocou Návrhára Visual Basic 6 doplnok

Ak máte len Microsoft Visual Basic 6.0 nainštalované a chcete používať obalu, takže nemusíte vykonávať priamo IDTExtensibility2, môžete použiť rovnaký doplnok projektanta, ktorý by ste použili vybudovať VB6 doplnok nainštalujte postupujte podľa týchto krokov na vybudovanie takýchto doplnok pre program Microsoft Excel 2000 alebo 2002:
  1. Spustite program Microsoft Visual Basic 6.0 a vyberte Doplnok programu ako typu projektu. To by mali pridávať návrhár triedy projektu (pripojiť) a formulár (frmAddin).
  2. Otvorené Dizajnér okno pre pripojenie a vyberte Microsoft Excel z Aplikácia Rozbaľovací zoznam.
  3. V Počiatočné zaťaženie správanie kvapka-down list, vyberte Spustenie.
  4. Odstránenie frmAddin z projektu.
  5. Z Project okno, kliknite pravým tlačidlom myši Pripojte položky a vyberte Zobraziť kód.
  6. Odstráňte celý kód v okne kód projektanta. Tento kód funguje pre doplnky VB, ale nie Office doplnky.
  7. Do návrhára, pridajte nasledujúci kód:
       Option Explicit
    
       Dim oXL As Object
       Dim WithEvents MyButton As Office.CommandBarButton
    
       Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
        ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
        ByVal AddInInst As Object, custom() As Variant)
          On Error Resume Next
          MsgBox "My Addin started in " & Application.Name
       
          Set oXL = Application
       
          Set MyButton = oXL.CommandBars("Standard").Controls.Add(1)
             With MyButton
                .Caption = "My Custom Button"
                .Style = msoButtonCaption
    
              ' The following items are optional, but recommended. 
              ' The Tag property lets you quickly find the control 
              ' and helps MSO keep track of it when there is more than
              ' one application window visible. The property is required
              ' by some Office applications and should be provided.
    
                .Tag = "My Custom Button"
     
              ' The OnAction property is optional but recommended. 
              ' It should be set to the ProgID of the add-in, such that if
              ' the add-in is not loaded when a user presses the button,
              ' MSO loads the add-in automatically and then raises
              ' the Click event for the add-in to handle. 
    
                .OnAction = "!<" & AddInInst.ProgId & ">"
    
                .Visible = True
             End With
       
       End Sub
    
       Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As _
          AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
          On Error Resume Next
          MsgBox "My Addin was disconnected by " & _
             IIf(RemoveMode = ext_dm_HostShutdown, _
             "Excel shutdown.", "end user.")
          
          MyButton.Delete
          Set MyButton = Nothing
          Set oXL = Nothing
        End Sub
    
       Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton, _
         CancelDefault As Boolean)
          MsgBox "Our CommandBar button was pressed!"
       End Sub
  8. Uložiť projekt a vytvoriť MyAddin.dll. Návrhár zaregistruje doplnok pre vás.
  9. Otvoriť program Microsoft Excel a vy všimnete okno s hlásením, keď doplnok je naložené a vyložené. Na paneli s nástrojmi Štandardný bude mať nové tlačidlo označené Moje vlastné tlačidlo že náš doplnok bude spracovávať pri výbere.

Budovanie COM doplnok pomocou implementuje

Zatiaľ čo nie ako jednoduché, môžete vytvoriť doplnok COM pomocou programu Microsoft Visual Basic 5.0 a Implementuje Kľúčové slovo priamo implementovať rozhranie IDTExtensibility2. Jedinou nevýhodou tohto prístupu je registrácia. Pretože jazyka Microsoft Visual Basic nevie, ako pridať kľúče potrebné registrovať doplnok balíka Office, musíte to urobiť oddelene (v pomôcka vlastnej inštalácie, alebo pomocou skriptu REG).

Výhodou používania implementuje je však, že je priame a účinné než pomocou návrhára, a umožňuje nám vytvoriť jeden objekt COM, ktoré môžu pracovať vo viacerých aplikáciách balíka Office (namiesto od vytvorením samostatných pripojiť objektu pre každú aplikáciu chceme pracovať v).

Tu sú kroky pre písanie doplnok pomocou implementuje:
  1. Otvorte program Visual Basic a vytvoriť nový projekt ActiveX DLL. Názov projektu MyCOMAddin, a názov verejné triedy Pripojte.
  2. Z Odkazy dialógové okno (projekt | Odkazy), pridať odkaz na Objektová knižnica programu Microsoft Office 9.0 (alebo 10.0 balíka Office XP) a typ knižnice Microsoft Add-In Designer. Ak nemôžete nájsť návrhára doplnok v zozname odkazov, by Prehľadávať pre Msaddndr.dll alebo Msaddndr.tlb, obyčajne nachádza v priečinku "C:\Program Files\Common Files\Designer".
  3. V Kód okno pre pripojenie, doplní sa nasledujúce:
       Option Explicit
       Implements IDTExtensibility2
    
       Dim oHostApp As Object
       Dim WithEvents MyButton As Office.CommandBarButton
    
      Private Sub IDTExtensibility2_OnConnection(ByVal Application As Object, _
         ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
    
         ByVal AddInInst As Object, custom() As Variant)
      
          On Error Resume Next
        ' Set a reference to the host application...
          Set oHostApp = Application
       
        ' If you aren't in startup, then manually call OnStartupComplete...
          If (ConnectMode <> ext_cm_Startup) Then _
             Call IDTExtensibility2_OnStartupComplete(custom)
          
       End Sub
    
       Private Sub IDTExtensibility2_OnStartupComplete(custom() As Variant)
          Dim oCommandBars As Office.CommandBars
          Dim oStandardBar As Office.CommandBar
       
          On Error Resume Next
        ' Set up a custom button on the "Standard" commandbar...
          Set oCommandBars = oHostApp.CommandBars
          If oCommandBars Is Nothing Then
           ' Outlook has the CommandBars collection on the Explorer object
             Set oCommandBars = oHostApp.ActiveExplorer.CommandBars
          End If
       
          Set oStandardBar = oCommandBars.Item("Standard")
          If oStandardBar Is Nothing Then
           ' Access names it's main toolbar Database
    
             Set oStandardBar = oCommandBars.Item("Database")
          End If
       
        ' In case the button was not deleted, use the exiting one...
          Set MyButton = oStandardBar.Controls.Item("My Custom Button")
             If MyButton Is Nothing Then
    
                Set MyButton = oStandardBar.Controls.Add(1)
                With MyButton
                   .Caption = "My Custom Button"
                   .Style = msoButtonCaption
     
              ' The following items are optional, but recommended. 
              ' The Tag property lets you quickly find the control 
              ' and helps MSO keep track of it when there is more than
              ' one application window visible. The property is required
              ' by some Office applications and should be provided.
    
                .Tag = "My Custom Button"
     
              ' The OnAction property is optional but recommended. 
              ' It should be set to the ProgID of the add-in, such that if
              ' the add-in is not loaded when a user presses the button,
              ' MSO loads the add-in automatically and then raises
              ' the Click event for the add-in to handle. 
    
                   .OnAction = "!<MyCOMAddin.Connect>"
    
                   .Visible = True
                End With
             End If
     
        ' Display a simple message to know which application you started in...
          MsgBox "Started in " & oHostApp.Name & "."
    
          Set oStandardBar = Nothing
          Set oCommandBars = Nothing
       End Sub
    
       Private Sub IDTExtensibility2_OnDisconnection(ByVal RemoveMode As _
         AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
    
          On Error Resume Next
          If RemoveMode <> ext_dm_HostShutdown Then _
             Call IDTExtensibility2_OnBeginShutdown(custom)
          
          Set oHostApp = Nothing
    
       End Sub
    
       Private Sub IDTExtensibility2_OnBeginShutdown(custom() As Variant)
          On Error Resume Next
        ' Notify the user you are shutting down, and delete the button...
          MsgBox "Our custom Add-In is unloading."
          MyButton.Delete
          Set MyButton = Nothing
       End Sub
    
       Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton,    CancelDefault As Boolean)
          MsgBox "Our CommandBar button was pressed!"
       End Sub
    
       Private Sub IDTExtensibility2_OnAddInsUpdate(custom() As Variant)
          'You do nothing if this is called, but you need to
          'add a comment so Visual Basic properly implements the function...
       End Sub
  4. Uložiť projekt a vytvoriť MyCOMAddin.dll. Však pred doplnok bude fungovať musíte priradiť každá aplikácia balíka Office, ktorý chcete ho spustiť. V reálnom svete, pomôckou na nastavenie môžete to urobiť po nainštalovaní DLL. Pre túto vzorku budú volať funkciu registrácie priamo z Visual Basic IDE.
  5. Pridať nový modul do projektu. V kódexe pre Module1 pridať nasledujúce:
       Option Explicit
    
       Private Declare Function RegCreateKeyEx Lib "advapi32.dll" _
       Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
       ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As _
       Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, _
       phkResult As Long, lpdwDisposition As Long) As Long
       
       Private Declare Function RegSetValueEx Lib "advapi32.dll" _
       Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As _
       String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, _
       ByVal cbData As Long) As Long
       
       Private Declare Function RegDeleteKey Lib "advapi32.dll" _
       Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) _
       As Long
       
       Private Declare Function RegCloseKey Lib "advapi32.dll" _
       (ByVal hKey As Long) As Long
    
       Private Const HKEY_CURRENT_USER = &H80000001
       Private Const KEY_ALL_ACCESS = &H1F0037
       Private Const REG_CREATED_NEW_KEY = &H1
       Private Const REG_SZ = 1
       Private Const REG_DWORD = 4
    
       'These are the settings for your Add-in...
       Private Const PROGID As String = "MyCOMAddin.Connect"
       Private Const DESCRIPTION As String = "My VB5/6 COM Add-In Sample"
       Private Const LOADBEHAVIOR As Long = 3
       Private Const SAFEFORCOMMANDLINE As Long = 0
    
    
       Public Sub RegisterAll()
          RegisterOfficeAddin "Access"
          RegisterOfficeAddin "Excel"
          RegisterOfficeAddin "FrontPage"
          RegisterOfficeAddin "Outlook"
          RegisterOfficeAddin "PowerPoint"
          RegisterOfficeAddin "Word"
       End Sub
    
       Public Sub UnregisterAll()
          UnRegisterOfficeAddin "Access"
          UnRegisterOfficeAddin "Excel"
          UnRegisterOfficeAddin "FrontPage"
          UnRegisterOfficeAddin "Outlook"
          UnRegisterOfficeAddin "PowerPoint"
          UnRegisterOfficeAddin "Word"
       End Sub
    
       Public Sub RegisterOfficeAddin(sTargetApp As String)
          Dim sRegKey As String
          Dim nRet As Long, dwTmp As Long
          Dim hKey As Long
       
          sRegKey = "Software\Microsoft\Office\" & sTargetApp _
             & "\Addins\" & PROGID
       
          nRet = RegCreateKeyEx(HKEY_CURRENT_USER, sRegKey, 0, _
             vbNullString, 0, KEY_ALL_ACCESS, 0, hKey, dwTmp)
          
          If nRet = 0 Then
             If dwTmp = REG_CREATED_NEW_KEY Then
                Call RegSetValueEx(hKey, "FriendlyName", 0, _
                   REG_SZ, ByVal PROGID, Len(PROGID))
                Call RegSetValueEx(hKey, "Description", 0, _
                   REG_SZ, ByVal DESCRIPTION, Len(DESCRIPTION))
                Call RegSetValueEx(hKey, "LoadBehavior", 0, _
                   REG_DWORD, LOADBEHAVIOR, 4)
                Call RegSetValueEx(hKey, "CommandLineSafe", 0, _
                   REG_DWORD, SAFEFORCOMMANDLINE, 4)
             End If
             Call RegCloseKey(hKey)
          End If
       
       End Sub
    
       Public Sub UnRegisterOfficeAddin(sTargetApp As String)
          Dim sRegKey As String
          sRegKey = "Software\Microsoft\Office\" & sTargetApp _
             & "\Addins\" & PROGID
       
           Call RegDeleteKey(HKEY_CURRENT_USER, sRegKey)
       
       End Sub
  6. Z Okamžité okno (zobrazenie | Okamžité okna), typu RegisterAlla stlačte kláves ENTER. To bude zaregistruje doplnok všetky Office aplikácie podporované (Access, Excel, FrontPage, Outlook, PowerPoint a Word).
  7. Otvorené ktorejkoľvek aplikácie Office vymenovaných pred. Oznámenie v okne s hlásením na spúšťanie a vypínanie a vlastné tlačidlo Pridať na panel s nástrojmi Štandardný.
  8. Ak chcete zrušiť registráciu doplnok, zadajte UnregisterAll v jazyku Visual Basic okamžitom okne a potom stlačte kláves ENTER.

ODKAZY

„Microsoft Office 2000 Visual Basic Programmer's Guide", kapitola 11. Doplnky, šablóny, Sprievodcovia a knižníc.

Ďalšie informácie o písaní doplnky COM, po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
230689VZORKA: Comaddin.exe Office 2000 COM doplnok napísané vo Visual c ++
190253 VB6 návrhári nefungujú v VB5
Ďalšie informácie o vývoji riešení založených na Web pre program Microsoft Internet Explorer, navštívte nasledujúcu webovú lokalitu spoločnosti Microsoft:
http://msdn.Microsoft.com/IE/
Poznámka: Keď pridáte položku ponuky Office Word z Visual Basic COM doplnok pomocou krokov, ktoré sú uvedené v tomto článku alebo pomocou podobnou metódou, položka ponuky nefunguje podľa očakávaní. Ďalšie informácie získate po kliknutí na nasledujúce číslo článku databázy Microsoft Knowledge Base:
313948Word stráca odkaz na COM objekt položky menu (CommandBarControl)

Vlastnosti

ID článku: 238228 - Posledná kontrola: 23. októbra 2011 - Revízia: 3.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Kľúčové slová: 
kbautomation kbhowto kbmt KB238228 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:238228

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