Jak sestavit doplněk aplikace Office 2000 COM v jazyka

Překlady článku Překlady článku
ID článku: 238228 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Microsoft Office 2000 a novější podporu a nové, uniform návrhu architektury pro vytváření aplikací doplňky vylepšit a řídit aplikace Office. Tyto doplňky jsou nazývá doplňky COM. Tento článek bude ukazují, jak sestavit COM doplněk Visual Basic.

Další informace

Doplněk COM je inprocess server COM (ActiveX DLL), která implementuje rozhraní IDTExensibility2 popsaným v doplňku Návrhář typ knihovně Microsoft (Msaddndr.dll). Všechny doplňky COM dědí z tohoto rozhraní a každá z jeho pět metod musí implementovat.

OnConnection

Událost OnConnection je vždy připojen doplněk COM. Doplněk mohou být připojeny na spuštění koncovým uživatelem, nebo prostřednictvím automatizace. Pokud OnConnection vrátí úspěšně, je doplněk je označováno být načten. Pokud je vrácena chyba hostitelské aplikace okamžitě uvolní jeho odkaz doplněk a zničení objektu.

OnConnection trvá následující čtyři parametry:
  • Aplikace - odkaz na aplikační objekt hostitele.
  • ConnectMode - konstantu, která určuje, jak připojena doplněk.
    • ext_cm_AfterStartup - Started koncového uživatele z dialogového okna Doplňky COM
    • ext_cm_CommandLine - připojení z příkazového řádku. (Nevztahuje k vytváření doplňků modelu COM pro aplikace sady Office.)
    • ext_cm_External - připojení externích aplikací prostřednictvím automatizace. (Nevztahuje k vytváření doplňků modelu COM pro aplikace sady Office.)
    • ext_cm_Startup - Started hostitele při spuštění aplikace. (Toto chování je řízena nastavením v registru).
  • AddInInst - odkaz na objekt COMAddIn odkazující na tento doplněk v kolekci COMAddIns hostitelské aplikace.
  • Vlastní - matice variant může pojmout dat definované uživatelem.

OnDisconnection

Událost OnDisconnection je při odpojení doplněk COM a těsně před uvolnění z paměti. Doplněk byste provádět jakékoli Vyčištění prostředky této události a obnovit všechny změny provedené do hostitelské aplikace.

OnDisconnection trvá následující dva parametry:
  • RemoveMode - konstantu, která určuje, jak doplněk byl odpojen.
    • ext_dm_HostShutdown - odpojeno při zavření hostitelské aplikace.
    • ext_dm_UserClosed - odpojeno podle řadič automatizace nebo koncového uživatele.
  • Vlastní - matice variant může pojmout dat definované uživatelem.

OnAddInsUpdate

Událost OnAddInsUpdate je při změně sady registrovaných doplňky COM. Jinými slovy kdykoli doplněk COM je nainstalovány nebo odebrány z hostitelské aplikace, tato událost je.

OnStartupComplete a OnBeginShutdown

Metody OnStartupComplete a OnBeginShutdown nazývají při opustil hostitelské aplikaci nebo zadávání stavu, kde by měl interakce uživatele vyhnout protože aplikace je zaneprázdněna načítání nebo samotný uvolnění z paměti. Pokud doplněk byl připojen během spuštění a OnBeginShutdown nazývá pouze pokud vaše doplněk je odpojen hostitelem během vypnutí pouze nazývá OnStartupComplete.

Protože je uživatelského rozhraní hostitele aplikace při těchto událostech Požární plně aktivní, jejich může být pouze způsobem provádět určité akce jinak by nedostupné z OnConnection a OnDisconnection.

Registrace doplněk COM

Na normální registrace COM doplněk COM musí registrovat sám s každou aplikaci sady Office, ve kterém běží. Samotný zaregistrovat s konkrétní aplikace, doplněk byste vytvořit podklíč pomocí jeho ID jako název klíče pod následujícím umístění:
HKEY_CURRENT_USER\Software\Microsoft\Office\<OfficeApp>\Addins\<ProgID>
doplněk můžete zadat hodnoty v tomto umístění klíče pro zobrazení popisný název a úplný popis. Navíc doplněk byste určete jeho chování požadované zatížení pomocí hodnotu DWORD s názvem "LoadBehavior" Tato hodnota určuje, jak doplněk je zaveden hostitelské aplikace a je tvořena kombinací následujících hodnot:
  • 0 = Odpojit - není načten.
  • 1 = Připojeno - je načten.
  • 2 = Zatížení aplikace spouštěcí bootload.
  • 8 = DemandLoad - načíst pouze v případě požadavku uživatele.
  • 16 = ConnectFirstTime - načíst pouze jednou (na další spuštění).
Typické zadaná hodnota je 0x03 (připojeno | Bootload).

Doplňky, které implementují IDTExtensibility2 byste také určit DWORD hodnota nazývané "CommandLineSafe" označte, zda jsou bezpečné pro operace, které nepodporují uživatelského rozhraní. Hodnota 0x00 znamená FALSE, 0x01 je TRUE.

Vytváření doplněk COM

Můžete sestavit COM doplněk v níže uvedené třemi způsoby:

Vytváření doplněk COM pomocí šablon doplňku COM

Pokud máte Microsoft Office 2000 Developer nebo Microsoft Office XP Developer a Visual Basic 6.0, je nejsnadnější způsob vytvoření doplňku COM použít šablonu přidat in.vbp COM. Tento projekt je umístěn v podsložce ODETools\V9\Samples\OPG\Samples\CH11\VB_COM_AddIn na disku CD-ROM Office 2000 Developer. Zkopírujte soubory v této složce složku Template\Projects Visual Basic 6.0, která je obvykle C:\Program Files\Microsoft Visual Studio\VB98\Template\Projects. Kopírování projektu šablony do tohoto umístění zajistíte šablony se zobrazí v dialogovém okně Nový projekt Visual Basic 6.0. Naleznete v kapitole 11 příručky Microsoft Office 2000 Visual Basic Programmer's Další informace o této šablony a doplňky modelu COM vytvořením.

Vytváření doplněk COM pomocí Návrháře doplněk Visual Basic 6

Pokud máte nainstalován a chcete použít obálky, takže nepotřebujete přímo implementovat IDTExtensibility2 právě Microsoft Visual Basic 6.0, můžete použít stejné doplněk Návrhář, které by použít k sestavení VB6 In. přidat podle těchto kroků vytvořit například doplněk pro Microsoft Excel 2000 nebo 2002:
  1. Spusťte Microsoft Visual Basic 6.0 a jako typ projektu vybrat doplněk. To by Přidat návrháře třídy projektu (připojit) a formulář (frmAddin).
  2. Otevřete okno Návrhář pro připojení a vyberte z rozevíracího seznamu aplikaceMicrosoft Excel.
  3. V seznamu Počáteční chování zatížení vyberte spouštění.
  4. FrmAddin odebrat z projektu.
  5. Z okna Project klepněte pravým tlačítkem myši na položku připojit a vyberte Kód zobrazení.
  6. Odebrat všechny kód v okně Kód na návrháře. Tento kód funguje pro doplňky VB, ale není Office doplňky.
  7. Přidejte následující kód Návrhář:
       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. Projekt uložit a vytvořit MyAddin.dll. Návrhář bude registrovat doplněk pro vás.
  9. Otevřít uzavřený a patrné zprávou při doplněk je zaveden a uvolněn. Na panelu nástrojů Standardní máte nové tlačítko označené Tento vlastní tlačítko naše doplňku bude zpracovávat při výběru.

Vytváření doplněk COM pomocí implementuje

Zatímco nikoli jako jednoduchý, můžete vytvořit doplněk COM pomocí Microsoft Visual Basic 5.0 a klíčové slovo Implements přímo implementovat rozhraní IDTExtensibility2. Downside pouze na tento přístup je registrace. Od jazyka Microsoft neví, jak přidat klíče potřebné k registraci doplněk se sadou Office, bude nutné provést samostatně (v vlastní instalační nástroj nebo pomocí skriptu REG).

Výhodou použití Implements je však je více přímé a efektivnější než použití návrháře a umožňuje nám vytvoření jednoho objektu COM, které mohou pracovat v několika aplikacích sady Office (namísto vytváření samostatný objekt připojit pro každou jsme chcete pracovat aplikaci).

Zde jsou kroky pro psaní přidat - V pomocí Implements:
  1. Otevřete jazyka a vytvoření nového projektu ActiveX DLL. Název projektu MyCOMAddin a název třídy veřejné připojit.
  2. V dialogovém okně References (Project | odkazy), přidejte odkaz na objektové knihovny Microsoft Office 9.0 (nebo 10.0 pro sadu Office XP) a knihovna typů Microsoft doplněk Designer. Pokud návrhář doplněk nemůžete najít v seznamu odkazy, které by měl vyhledat Msaddndr.dll nebo Msaddndr.tlb obvykle umístěn ve složce "C:\Program Files\Common Files\Designer".
  3. V okně Kód pro připojení přidat následující:
       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. Projekt uložit a vytvořit MyCOMAddin.dll. Však před bude funkční doplněk potřebujete spojit s každou aplikací Office, které chcete spustit. V reálném světě instalačního nástroje dosáhnete při instalaci DLL. Pro tento příklad bude volat funkci registrace z jazyka IDE.
  5. Do projektu přidat nový modul. V kódu pro Module1 přidat následující:
       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 okna Immediate (View | okno Immediate) zadejte RegisterAll a stiskněte klávesu ENTER. To bude doplněk zaregistrovat u všech aplikací sady Office podporovány (Access, Excel, FrontPage, Outlook, PowerPoint a Word).
  7. Otevřít kterýkoli předchozího uvedených aplikací Office. Všimněte si zprávou na spuštění a vypnutí a vlastní tlačítko přidán panel nástrojů Standardní.
  8. Pokud chcete zrušit registraci doplněk, zadejte v okně Immediate jazyka UnregisterAll a stiskněte klávesu ENTER.

Odkazy

„ Microsoft Office 2000 Visual Basic Programmer's Guide „, kapitole 11. Doplňky, šablony, průvodci a knihovny.

Další informace o psaní doplňky COM klepněte na následující čísla následujících článcích databáze Microsoft Knowledge Base:
230689UKÁZKOVÝ: Comaddin.exe Office 2000 doplněk COM napsané v jazyce C++
190253Návrháři VB6 nefungují v VB5
Další informace o vývoji řešení založených na webu pro aplikaci Microsoft Internet Explorer naleznete na následujícím webu:
http://msdn.microsoft.com/ie/
Poznámka: Po přidání položky nabídky do Office Word z doplňku COM jazyka kroky uvedené v tomto článku nebo podobnou metodou, položka nabídky nefunguje podle očekávání. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
313948Word ztratí odkaz položky nabídky objektu COM (CommandBarControl)

Vlastnosti

ID článku: 238228 - Poslední aktualizace: 24. ledna 2007 - Revize: 6.2
Informace v tomto článku jsou určeny pro produkt:
  • 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
  • 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
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Klíčová slova: 
kbmt kbautomation kbhowto KB238228 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:238228

Dejte nám zpětnou vazbu

 

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