Jak vytvořit doplněk aplikace modelu COM sady Office pomocí aplikace Visual C#.NET

Překlady článku Překlady článku
ID článku: 302901 - 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 XP a Microsoft Office 2003 a Microsoft Office 2007 podporují architekturu jednotně pro vytváření aplikací doplňků zvýšení a řízení aplikací sady Office. Tyto doplňky se nazývají server Microsoft COM (Component Object Model) doplňky. Tento podrobný článek Tento článek popisuje doplňky modelu COM sady Office a jak sestavit doplněk aplikace modelu COM sady Office pomocí pomocí jazyka Microsoft Visual C#.NET.

Rozhraní IDTExensibility2

Doplněk modelu COM je serveru COM v procesu nebo ActiveX DLL Knihovna (DLL), který implementuje IDTExensibility2 rozhraní, jak je popsáno v doplňku Microsoft návrháře typu Knihovna (Msaddndr.dll). Všechny doplňky modelu COM, dědí z tohoto rozhraní a musí Každá z jeho pět metod provádění.

OnConnection

Na OnConnection událost je aktivována, vždy, když doplněk modelu COM připojen. Doplněk mohou být připojeny při spuštění koncovým uživatelem, nebo prostřednictvím Automatizace. Pokud OnConnection Vrátí událost úspěšně, že doplněk bude označen jako načíst. Pokud je vrácena chybová zpráva, okamžitě hostitelské aplikace vydání jeho odkaz na požadovaný doplněk a objekt zničen.

Na OnConnection událost trvá čtyři následující parametry:
  • Aplikace: Odkaz na objekt application host.
  • ConnectMode: Konstanta, která určuje, jak je doplněk připojen. Na doplněk lze připojit následujícími způsoby:
    • ext_cm_AfterStartup: Doplněk spuštěn koncovým uživatelem z Doplňky modelu COM Dialogové okno.
    • ext_cm_CommandLine: Z příkazového řádku je připojen doplněk. Poznámka: touto nevztahuje se na vytváření doplňků modelu COM pro aplikace sady Office.
    • ext_cm_External: Doplněk je připojen prostřednictvím externí aplikace Automatizace. Všimněte si, že to však neplatí pro vytváření doplňků modelu COM pro sadu Office aplikace.
    • ext_cm_Startup: Hostitel při spuštění aplikace je spuštěna doplněk. To chování je řízeno nastavením registru.
  • AddInInst: Odkaz na COMAddIn objekt, který odkazuje na tento doplněk COMAddIns kolekce pro hostitelské aplikace.
  • Vlastní: Matice Varianty Zadejte hodnoty, které mohou obsahovat data definovaná uživatelem.

OnDisconnection

Na OnDisconnection událost je aktivována, po doplňku modelu COM odpojení a těsně před uvolnění z paměti. Doplněk má provádět jakékoli vyčištění zdrojů v této události a obnovení provedené změny hostitelské aplikace.

Na OnDisconnection Událost má následující dva Parametry:
  • RemoveMode: Konstanta, která určuje, jak doplněk byl odpojen. Na doplněk můžete odpojit následujícími způsoby:
    • ext_dm_HostShutdown: Doplněk je odpojena, pokud hostitelské aplikace zavře.
    • ext_dm_UserClosed: Doplněk odpojení koncového uživatele nebo automatizaci řadič.
  • Vlastní: Matice Varianty Zadejte hodnoty, které mohou obsahovat data definovaná uživatelem.

OnAddInsUpdate

Na OnAddInsUpdate událost je aktivována, při registraci sady COM změny doplňky. Jinými slovy kdykoliv COM doplněk je instalace nebo odebrání z hostitelské aplikaci dojde k této události.

OnStartupComplete a OnBeginShutdown

Obě OnStartupComplete Metoda a OnBeginShutdown je volána metoda Když opustil hostitelské aplikace, nebo je přejít do stavu, ve které uživatel interakce se měli vyhnout, protože aplikace je zaneprázdněna načítání nebo Odinstalováním sám z paměti. Na OnStartupComplete pouze pokud je volána metoda doplněk byl připojen při spuštění a OnBeginShutdown pouze pokud je volána metoda hostitele Odpojí doplněk během vypnutí.

Protože uživatelského rozhraní při požáru v těchto událostí, je plně aktivním hostitelské aplikace, mohou být jediným způsobem, jak provádět určité akce, které by jinak byly k dispozici od OnConnection události a OnDisconnection událost.

COM doplněk registrace

Vedle normální registrace COM doplněk modelu COM potřebuje registrovat s každou aplikaci sady Office, ve kterém běží. Zaregistrovat sama s konkrétní aplikace doplněk by měly vytvořit podklíč, použití jeho identifikátor ProgID jako název klíče, nachází v následujícím umístění:
HKEY_CURRENT_USER\Software\Microsoft\Office\<officeapp>\Addins\<progid></progid></officeapp>
Doplněk můžete zadat hodnoty v tomto umístění klíče popisný název a úplný popis. Kromě toho doplněk by jeho načtení požadovaného chování pomocí zadat hodnotu DWORD s názvem LoadBehavior. Tato hodnota určuje, jak doplněk načten hostitele aplikace a je tvořena kombinací následujících hodnot:
  • 0 = Odpojit - není načten.
  • 1 = Připojeno - je načten.
  • 2 = Bootload - zatížení při spuštění aplikace.
  • 8 = DemandLoad - načíst pouze v případě požadavku uživatel.
  • 16 = ConnectFirstTime - načíst pouze jednou (na další spuštění).
Typické zadaná hodnota je 0x03 (připojeno | Bootload).

Doplňky, které implementují IDTExtensibility2 rovněž určí hodnotu DWORD s názvem
CommandLineSafe
k Označte, zda doplňky jsou bezpečné pro operace, které nepodporují uživatele rozhraní. Hodnota bajtu 0x00 označuje hodnotu False a hodnotu 0x01 označuje hodnotu True.

Jak vytvořit doplněk modelu COM pomocí aplikace Visual C#.NET

Jak bylo uvedeno výše, doplněk modelu COM sady Office je modelu COM v průběhu procesu Server, který je aktivován aplikace sady Office prostřednictvím běhu modelu COM vrstva. Proto je vývoj doplňku modelu COM v.NET vyžaduje, aby doplněk součást provádí.NET a poté vystaven klientů modelu COM (tj., aplikace sady Office) prostřednictvím vrstvě COM interop.

Vytvoření Doplněk modelu COM v aplikaci Visual C#.NET, postupujte takto:
  1. V aplikaci Visual C#.NETTO, vytvořte knihovnu tříd projekt.
  2. Přidat odkaz na typ knihovny, která implementuje IDTExtensibility2. Primární sestavení interop pro to je již k dispozici v rámci název Rozšiřitelnost.
  3. Přidáte odkaz na knihovnu objektů Microsoft Office. Na Primární sestavení interop pro to je již k dispozici pod názvem Office.
  4. Vytvoření knihovny třídy, která implementuje veřejné třídy IDTExtensibility2.
  5. Po vytvoření knihovny tříd Zaregistrujte knihovnu pro Volání interop modelu COM.. Chcete-li to provést, generování silných s názvem sestavení pro tuto třídu knihovny a zaregistrujte jej COM interop. Můžete použít Regasm.exe na Zaregistrujte.Součást pro volání interop modelu COM, NET.
  6. Vytvoření položky registru tak, aby byly aplikace sady Office můžete rozpoznat a zavést doplněk.
Můžete provést všechny tyto kroky nebo můžete vytvoření.NET projektu typu Doplněk Sdílené. Spustí se Průvodce rozšíření, které vám pomůže vytvořit doplňku modelu COM v.NET.

Vytvoří rozšíření Visual C# .Třídy NET knihovny projektu spolu s Připojit Třída, která implementuje IDTExtensibility2 rozhraní. Kód obalu, který implementuje prázdné členy IDTExtensibility je také generovány. Tento projekt obsahuje odkazy na rozšíření a sestavení sady Office. Nastavení sestavení projektu Registr pro volání Interop modelu COM. vybrané. Soubor klíče (.snk) sestavení je generován a je zaměřují AssemblyKeyfile atribut Assemblyinfo.vb.

Spolu s třídou knihovní projekt průvodce vygeneruje instalační projekt, který můžete použít k zavedení doplňku modelu COM v jiných počítačích. Pokud může dojít k odebrání tohoto projektu požadované.

Podrobný příklad

  1. V Soubor nabídka Microsoft Visual Studio.ČISTÁ, klepněte na tlačítko Novýa klepněte na tlačítko Projekt.
  2. V Nový projekt Dialogové okno pole, rozbalte položku Ostatní projekty ve skupinovém rámečku Typy projektů, vyberte Rozšiřitelnost projektůa pak vyberte Sdílené doplněk Šablona.
  3. Typ MyCOMAddin jako název doplněk a potom klepněte na tlačítko OK.
  4. Pokud se zobrazí Průvodce rozšiřitelnost, postupujte takto:
    1. Vyberte na stránce 1, Vytvořit doplněk pomocí aplikace Visual C#a klepněte na tlačítko Další.
    2. Na stránce 2 vyberte následující hostitelské aplikace, a Klepněte na tlačítko Další:
      • Aplikace Microsoft Word
      • Aplikace Microsoft PowerPoint
      • Aplikace Microsoft Outlook
      • Aplikace Microsoft Excel
      • Aplikace Microsoft Access
    3. Na stránce 3, zadejte název a popis doplněk a potom klepněte na tlačítko Další.

      Poznámka: Název a popis doplněk se zobrazí v Doplněk modelu COM Dialogové okno v aplikaci sady Office.

    4. Na stránce 4, vyberte všechny dostupné možnosti a poté Klepněte na tlačítko Další.
    5. Klepněte na tlačítko Dokončit.
  5. V Projekt nabídky, klepněte na tlačítko Přidat odkaz. Klepněte na tlačítko System.Windows.Forms.dll v seznamu součásti klepněte na položku Vybrata klepněte na tlačítko OK.
  6. Přidejte následující obory názvů v seznamu Připojit Třída:
    using System.Reflection;
  7. Následující člena, kterého chcete přidat Připojit Třída:
    private CommandBarButton MyButton; 
  8. Provádění kódu pro členy IDTExtensibility2 v Připojit Třída takto:
    public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom) {
       applicationObject = application;
       addInInstance = addInInst;
    
       if(connectMode != Extensibility.ext_ConnectMode.ext_cm_Startup)
       {
          OnStartupComplete(ref custom);
       }
    
    }
    
    public void OnDisconnection(Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom) {
       if(disconnectMode != Extensibility.ext_DisconnectMode.ext_dm_HostShutdown)
       {
          OnBeginShutdown(ref custom);
       }
       applicationObject = null;
    }
    
    
    public void OnAddInsUpdate(ref System.Array custom)
    {
    }
    
    public void OnStartupComplete(ref System.Array custom)
    {
       CommandBars oCommandBars;
       CommandBar oStandardBar;
    
       try
       {
       oCommandBars = (CommandBars)applicationObject.GetType().InvokeMember("CommandBars", BindingFlags.GetProperty , null, applicationObject ,null);
       }
       catch(Exception)
       {
       // Outlook has the CommandBars collection on the Explorer object.
       object oActiveExplorer;
       oActiveExplorer= applicationObject.GetType().InvokeMember("ActiveExplorer",BindingFlags.GetProperty,null,applicationObject,null);
       oCommandBars= (CommandBars)oActiveExplorer.GetType().InvokeMember("CommandBars",BindingFlags.GetProperty,null,oActiveExplorer,null);
       }
    
       // Set up a custom button on the "Standard" commandbar.
       try
       {
       oStandardBar = oCommandBars["Standard"];        
       }
       catch(Exception)
       {
       // Access names its main toolbar Database.
       oStandardBar = oCommandBars["Database"];      
       }
    
       // In case the button was not deleted, use the exiting one.
       try
       {
       MyButton = (CommandBarButton)oStandardBar.Controls["My Custom Button"];
       }
       catch(Exception)
       {
          object omissing = System.Reflection.Missing.Value ;
          MyButton = (CommandBarButton) oStandardBar.Controls.Add(1, omissing , omissing , omissing , omissing);
          MyButton.Caption = "My Custom Button";
          MyButton.Style = MsoButtonStyle.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 more than
       //one application window is visible. The property is required
       //by some Office applications and should be provided.
       MyButton.Tag = "My Custom Button";
    
       // The OnAction property is optional but recommended. 
       //It should be set to the ProgID of the add-in, so 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. 
       MyButton.OnAction = "!<MyCOMAddin.Connect>";
    
       MyButton.Visible = true;
       MyButton.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.MyButton_Click);
    
    
       object oName = applicationObject.GetType().InvokeMember("Name",BindingFlags.GetProperty,null,applicationObject,null);
    
       // Display a simple message to show which application you started in.
       System.Windows.Forms.MessageBox.Show("This Addin is loaded by " + oName.ToString()   , "MyCOMAddin");
       oStandardBar = null;
       oCommandBars = null;
    }
    
    public void OnBeginShutdown(ref System.Array custom)
    {
       object omissing = System.Reflection.Missing.Value ;
       System.Windows.Forms.MessageBox.Show("MyCOMAddin Add-in is unloading.");
       MyButton.Delete(omissing);
       MyButton = null;
    }
    
    private void MyButton_Click(CommandBarButton cmdBarbutton,ref bool cancel) {
       System.Windows.Forms.MessageBox.Show("MyButton was Clicked","MyCOMAddin"); }
    					
  9. Vytvoření a otestování doplňku modelu COM. Chcete-li to provést, postupujte kroky:
    1. V Sestavení nabídky, klepněte na tlačítko Řešení. Všimněte si, že vytváření registrů doplněk modelu COM.Třídy NET s Volání interop modelu COM..
    2. Spustit některou z aplikací sady Office, které jste vybrali. jako hostitele aplikací pro doplněk (například Microsoft Word nebo Microsoft Excel).
    3. Po doplněk spuštění OnStartupCompleteje aktivována v případě doplněk a zobrazí se zpráva. Zavřete zprávu pole. Všimněte si, že doplněk přidány nové vlastní tlačítko s "Moje vlastní tlačítko" titulek na panelu nástrojů Standardní.
    4. Klepněte na tlačítko Mé vlastní tlačítko. Na Klepněte na tlačítko Událost tlačítka jsou zpracována doplněk a zobrazí okno se zprávou. Zavřete okno zprávy.
    5. Ukončete aplikaci sady Office.
    6. Při ukončení aplikace, OnBeginShutDownudálost je aktivována a zobrazí se zpráva. Zavřete okna se zprávou ukončit demonstrace.

Odkazy

Další informace o vytváření doplňků modelu COM klepněte na následující číslo článku databáze Microsoft Knowledge Base:
190253INFO: VB6 návrháři nefungují v VB5

Vlastnosti

ID článku: 302901 - Poslední aktualizace: 18. května 2011 - Revize: 12.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
Klíčová slova: 
kbautomation kbhowtomaster kbmt KB302901 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:302901

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