Sposób tworzenia dodatku COM pakietu Office przy użyciu programu Visual C#.NET

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 302901 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

Pakiet Microsoft Office XP, pakietu Microsoft Office 2003 i Microsoft Office 2007 obsługują jednolitego architekturę do budowania aplikacji dodatków wzmocnienie i kontrolować aplikacje pakietu Office. Te dodatki są nazywane Microsoft Component Object Model (COM) dodatki. W tym artykule krok po kroku w tym artykule omówiono dodatków COM pakietu Office i w tym artykule opisano sposób tworzenia pakietu Office dodatku COM przez za pomocą programu Microsoft Visual C#.NET.

Interfejs IDTExensibility2

Dodatek COM jest to serwer COM w trakcie lub dołączanej ActiveX biblioteki (DLL), która implementuje IDTExensibility2 Interfejs zgodnie z opisem w polu Typ dodatku Microsoft Designer Biblioteka (Msaddndr.dll). Wszystkie dodatki COM dziedziczą z tego interfejsu i musi każde pięć metod implementacji.

OnConnection

W OnConnection Zdarzenie uruchamiany przy każdym dodatku COM jest połączenie. Dodatek może być podłączony uruchamianie przez użytkownika końcowego lub za pośrednictwem Automatyzacji. Jeśli OnConnection Zdarzenie zwraca pomyślnie, dodatek jest nazywany załadowane. Jeśli zostanie zwrócony komunikat o błędzie, bezpośrednio do aplikacji hosta wydanie jego odwołanie do dodatku i obiekt jest niszczony.

W OnConnection Zdarzenie ma cztery następujące parametry:
  • Aplikacja: Odwołanie do obiektu aplikacji hosta.
  • ConnectMode: Stała określająca sposób połączenia dodatku. W Dodatek mogą być połączone w następujący sposób:
    • ext_cm_AfterStartup: Add-in do uruchomienia przez użytkownika końcowego z Dodatki COM okno dialogowe.
    • ext_cm_CommandLine: Dodatek jest połączony z wiersza polecenia. Uwaga ta to nie ma zastosowania do budowania dodatków COM dla aplikacji pakietu Office.
    • ext_cm_External: Dodatek jest połączony za pomocą zewnętrznej aplikacji za pomocą Automatyzacji. Należy zauważyć, że to nie stosuje się do budowania dodatków COM pakietu Office aplikacje.
    • ext_cm_Startup: Dodatek jest uruchamiany przez hosta przy uruchamianiu aplikacji. To zachowanie jest sterowane przez ustawienie w rejestrze.
  • AddInInst: Odwołanie do COMAddIn obiekt, który odnosi się do tego dodatku w COMAddIns Kolekcja aplikacji hosta.
  • Niestandardowe: Tablica Wariant Wpisz wartości, które mogą zawierać dane zdefiniowane przez użytkownika.

OnDisconnection

W OnDisconnection Zdarzenie uruchamiany po dodatku COM odłączony i bezpośrednio przed zwalnia z pamięci. Dodatek należy wykonać oczyszczania zasobów w tym zdarzeń oraz wszelkie zmiany wprowadzone do przywracania Aplikacja hosta.

W OnDisconnection Zdarzenie ma dwa następne Parametry:
  • RemoveMode: Stała określająca, w jaki sposób dodatek został odłączony. W dodatek może być rozłączany w następujący sposób:
    • ext_dm_HostShutdown: Dodatek jest rozłączana aplikacji hosta Zamyka.
    • ext_dm_UserClosed: Dodatek jest rozłączane przez użytkownika końcowego lub automatyzacji Kontroler.
  • Niestandardowe: Tablica Wariant Wpisz wartości, które mogą zawierać dane zdefiniowane przez użytkownika.

OnAddInsUpdate

W OnAddInsUpdate Zdarzenie uruchamiany, gdy zestaw zarejestrowany COM zmiany dodatków. Innymi słowy ilekroć COM dodatek po zainstalowaniu lub odinstalowaniu z aplikacji hosta to zdarzenie fires.

OnStartupComplete i OnBeginShutdown

Oba OnStartupComplete Metoda i OnBeginShutdown wywołana metoda gdy aplikacja hosta opuścił lub jest przechodzenia do stanu, w którym użytkownik interakcji należy unikać, ponieważ aplikacja jest zajęta, ładowania lub Zwalnianie sam z pamięci. W OnStartupComplete tylko wtedy, gdy wywoływana jest metoda dodatek był podłączony podczas uruchamiania oraz OnBeginShutdown tylko wtedy, gdy wywoływana jest metoda hosta Odłącza dodatek podczas zamykania systemu.

Ponieważ interfejs użytkownika dla aplikacji hosta jest całkowicie aktywne podczas pożaru te zdarzenia, może być Jedynym sposobem wykonywania pewnych działań, które w przeciwnym razie są niedostępne z OnConnection zdarzenia i OnDisconnection zdarzenie.

Rejestracji dodatku COM

Oprócz normalnych rejestracji COM dodatek COM wymaga zarejestrowanie się w każdej aplikacji pakietu Office, w którym działa. Aby zarejestrować sam z określonej aplikacji dodatku, należy utworzyć podklucz, przy użyciu jego identyfikator ProgID jako nazwa klucza w następującej lokalizacji:
HKEY_CURRENT_USER\Software\Microsoft\Office\<officeapp>\Addins\<progid></progid></officeapp>
Dodatek można podać wartości w tej lokalizacji klucza wyświetlana przyjazna nazwa i pełny opis. Ponadto Dodatek należy określić jego zachowanie żądane obciążenia przy użyciu wartości DWORD o nazwie LoadBehavior. Ta wartość określa, w jaki sposób dodatek jest ładowany przez hosta aplikacji i składa się z kombinacji następujących wartości:
  • 0 = Rozłącz - nie jest załadowany.
  • 1 = Połączono - jest ładowany.
  • 2 = Bootload - obciążenia przy uruchamianiu aplikacji.
  • 8 = DemandLoad - obciążenia tylko wtedy, gdy jest to wymagane przez użytkownik.
  • 16 = ConnectFirstTime - obciążenie tylko raz (dalej Uruchamianie).
Typowy podana jest 0x03 (połączono | Bootload).

Dodatki, które implementują IDTExtensibility2 należy również określić wartość DWORD o nazwie
CommandLineSafe
Aby Wskazuje, czy dodatki są bezpieczne dla operacji, które nie obsługują użytkownika interfejs. Wartość 0x00 wskazuje wartość False, a wartość 0x01 wskazuje wartość True.

Sposób tworzenia dodatku COM przy użyciu programu Visual C#.NET

Jak wspomniano wcześniej, dodatek COM pakietu Office jest COM w trakcie serwer jest uruchamiany przez aplikację pakietu Office za pośrednictwem czasu wykonywania COM Warstwa. W związku z tym rozwój dodatki COM w programie.NET wymaga dodatku składnik realizowane w.NET i następnie udostępniane klientom COM (to znaczy aplikacje pakietu Office) za pośrednictwem warstwy współdziałania COM.

Aby utworzyć Dodatek COM w środowisku Visual C#.NET, wykonaj następujące kroki:
  1. W środowisku Visual C#.NET, tworzenie biblioteki klas Projekt.
  2. Dodaj odwołanie do biblioteki typów, która implementuje IDTExtensibility2. Podstawowy zestaw współdziałania w tym jest już dostępna w obszarze Nazwa Rozszerzalności.
  3. Dodaj odwołanie do biblioteki obiektów Microsoft Office. W podstawowy zestaw współdziałania w tym jest już dostępna pod nazwą Office.
  4. Tworzenie klasy publicznego w bibliotece klasy, która implementuje IDTExtensibility2.
  5. Po zbudowaniu Biblioteka klas zarejestrować biblioteki dla Współdziałania z modelem. Aby to zrobić, generowanie silna nazwany zestaw dla tej klasy Biblioteka, a następnie zarejestrować je współdziałania z modelem COM. Użyj Regasm.exe do Zarejestruj się.Składnik netto do współdziałania z modelem.
  6. Utworzyć wpisów rejestru, tak aby aplikacje pakietu Office można rozpoznaje i załadować dodatek.
Istnieje możliwość wykonania tych kroków lub możesz Tworzenie.NET projekt typu Dodatek do udostępnionego. Spowoduje to uruchomienie kreatora rozszerzeń, który pomaga utworzyć Dodatek COM w.NET.

Kreator rozszerzenia tworzy Visual C# .Klasa netto biblioteki projektu wraz z Łączenie z klasy, która implementuje IDTExtensibility2 interfejs. Skeleton kod, który implementuje pusty członków IDTExtensibility jest również generowany. Ten projekt zawiera odwołania do rozszerzania i zespoły pakietu Office. Ustawienia kompilacji projektu Rejestr współdziałania z modelem COM. zaznaczone. Plik zestawu (.snk) klucz jest generowany i jest odwołanie w AssemblyKeyfile atrybut w Assemblyinfo.vb.

Wraz z klasą Biblioteka projektu, Kreator generuje Projekt instalacji, który umożliwia wdrożenie dodatku COM na innych komputerach. Może usunąć tego projektu, jeśli Żądana.

Przykład krok po kroku

  1. Na Plik menu programu Microsoft Visual Studio.Kliknij netto, Nowy, a następnie kliknij przycisk Projekt.
  2. W Nowy projekt okno dialogowe rozwiń Inne projekty w obszarze Typy projektów, wybierz Projekty rozszerzalności, a następnie wybierz Dodatek udostępnionych szablon.
  3. Typ MyCOMAddin jako nazwa dodatek a następnie kliknij przycisk OK.
  4. Gdy pojawi się Kreator rozszerzenia, wykonaj następujące kroki:
    1. Na stronie 1 wybierz Tworzenie dodatku przy użyciu programu Visual C#, a następnie kliknij przycisk Dalej.
    2. Na stronie 2 zaznacz następujące aplikacje hosta i następnie kliknij przycisk Dalej:
      • Program Microsoft Word
      • Program Microsoft PowerPoint
      • Program Microsoft Outlook
      • Program Microsoft Excel
      • Program Microsoft Access
    3. Na stronie 3 należy podać nazwę i opis dodatek, a następnie kliknij przycisk Dalej.

      Uwaga Nazwa i Opis dodatku Dodatek COM okno dialogowe w aplikacji pakietu Office.

    4. Na stronie 4 Zaznacz wszystkie dostępne opcje, a następnie Kliknij przycisk Dalej.
    5. Kliknij przycisk Zakończ.
  5. Na Projekt menu, kliknij przycisk Dodaj odwołanie. Kliknij przycisk System.Windows.Forms.dll na liście składników kliknij Wybierz, a następnie kliknij przycisk OK.
  6. Dodaj do listy obszarów nazw w Łączenie z klasy:
    using System.Reflection;
  7. Dodaj następujący element członkowski do Łączenie z klasy:
    private CommandBarButton MyButton; 
  8. Wdrożenie kod dla członków IDTExtensibility2 w Łączenie z klasy, w następujący sposób:
    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. Tworzenie i testowanie dodatku COM. Aby to zrobić, wykonaj następujące kroki:
    1. Na Kompilacja menu, kliknij przycisk Tworzenie rozwiązania. Należy zwrócić uwagę, tworzenie dodatku COM rejestrów.Klasa netto z COM interop.
    2. Uruchom jeden z aplikacji pakietu Office, które zostały wybrane w aplikacji hosta dla dodatku (na przykład Microsoft Word lub Microsoft Excel).
    3. Po dodatku jest rozpoczęta, OnStartupCompleteZdarzenie dodatek jest uruchamiany, a komunikat o błędzie. Odrzuć wiadomość pole. Należy zauważyć, że dodatek dodaje nowy niestandardowy przycisk z "Mój przycisk niestandardowy" podpis na pasku narzędzi Standardowy.
    4. Kliknij przycisk Przycisk Moje niestandardowe. W Kliknij przycisk Zdarzenie przycisku jest obsługiwane przez dodatek i jest wyświetlany okno komunikatu. Zamknąć okno komunikatu.
    5. Zamknij aplikację pakietu Office.
    6. Podczas zamykania aplikacji, OnBeginShutDownZdarzenie pożarów i zostanie wyświetlony komunikat. Zamknąć okno komunikatu, aby zakończyć wykazanie.

Materiały referencyjne

Dodatkowe informacje na temat pisania dodatki COM kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
190253INFORMACJE: Projektanci VB6 nie działają w VB5

Właściwości

Numer ID artykułu: 302901 - Ostatnia weryfikacja: 23 czerwca 2011 - Weryfikacja: 2.0
Informacje zawarte w tym artykule dotyczą:
  • 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
Słowa kluczowe: 
kbautomation kbhowtomaster kbmt KB302901 KbMtpl
Przetłumaczone maszynowo
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Anglojęzyczna wersja tego artykułu to:302901

Przekaż opinię

 

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