Visual C# .NET kullanarak Office COM eklentisi oluşturma yöntemlerini

Makale çevirileri Makale çevirileri
Makale numarası: 302901 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Microsoft Office 2007 Microsoft Office XP ve Microsoft Office 2003 uygulama eklentileri geliştirmek ve Office uygulamalarını denetlemek için oluşturmak için bir Tekdüzen tasarım mimarisini destekler. Bu eklenti Microsoft Bileşen Nesne Modeli (COM) adı verilen ek bileşenler. Bu adım adım makalede, Office COM eklentileri anlatılır ve Microsoft Visual C# .NET kullanarak Office COM eklentisi oluşturma yöntemlerini açıklar.

IDTExensibility2 arabirimi

Bir COM eklentisi bir işlem içi COM sunucusu ya da Microsoft Add-in Tasarımcısı Tür kitaplığında (Msaddndr.dll) açıklandığı gibi IDTExensibility2 arabirimini uygulayan ActiveX dinamik bağlantı kitaplığı (DLL) olur. Tüm COM eklentilerini Bu arabirimden devralır ve her beş yöntemlerinden biri uygulamalıdır.

OnConnection

COM eklentisini bağlı her OnConnection olayı harekete. Eklentiyi başlatma sırasında son kullanıcı tarafından ya da Otomasyon yoluyla bağlı olabilir. OnConnection olay başarıyla dönerse, eklentinin yüklenmesi denir. Bir hata iletisi döndürdü, ana uygulama eklenti için başvuru hemen serbest bırakır ve nesne yok edilir.

OnConnection olay aşağıdaki dört parametre yer alır:
  • Uygulama: ana uygulama nesnesine BIR başvuru.
  • ConnectMode: eklentinin nasıl bağlanacağını belirleyen BIR sabit. Eklenti aşağıdaki yollarla bağlanabilir:
    • ext_cm_AfterStartup: eklenti <a0>COM eklentileri</a0> iletişim kutusundan son kullanıcı tarafından başlatılır.
    • ext_cm_CommandLine: eklentisini komut satırından bağlıdır. Bu Office uygulamaları için COM eklentileri oluşturma için geçerli değildir not alın.
    • ext_cm_External: eklenti Otomasyon yoluyla bir dış uygulamayla bağlı. Bu Office için COM eklentileri oluşturma için geçerli değildir Not uygulamaları.
    • ext_cm_Startup: eklenti uygulama başlangıçta ana makinesi tarafından başlatılır. Bu davranış, kayıt defterindeki bir ayar tarafından denetlenir.
  • AddInInst: Bu eklenti ana bilgisayar uygulamasının <a1>COM eklentileri</a1> koleksiyonunda başvurduğu COMAddIn nesnesine BIR başvuru.
  • Özel: bir kullanıcı tanımlı veri saklayabilen bir Variant türü değerleri dizisi.

OnDisconnection

COM eklentisini kesildiğinde ve yalnızca bu belleği kaldırır önce OnDisconnection olayı harekete. Eklenti herhangi bir temizleme kaynakların bu olayda gerçekleştirin ve ana uygulamaya yapılan değişiklikleri geri.

OnDisconnection olay aşağıdaki iki parametre alır:
  • RemoveMode: eklentinin nasıl kesildi belirten BIR sabit. Eklenti aşağıdaki yollarla kesilebilir:
    • ext_dm_HostShutdown: eklenti ana bilgisayar uygulamasının kapattığında kesildi.
    • ext_dm_UserClosed: son kullanıcı ya da bir Otomasyon eklenti bağlantısı kesilir denetleyicisi.
  • Özel: bir kullanıcı tanımlı veri saklayabilen bir Variant türü değerleri dizisi.

Onaddınsupdate

Kümesini COM kaydolurken Onaddınsupdate olayı harekete eklentileri değişiklikleri. Her bir COM eklentisi yüklenmiş veya ana bilgisayar uygulamadan kaldırıldı, başka bir deyişle, bu olay harekete.

OnStartupComplete ve OnBeginShutdown

Hem ana bilgisayar uygulamasının ayrıldı veya yükleme ya da kendisi bellekten kaldırılması uygulama meşgul olduğundan kullanıcı etkileşimi kaçınılmalıdır bir duruma girerken OnStartupComplete yöntemi ve OnBeginShutdown yöntemi olarak adlandırılır. OnStartupComplete yöntemi, yalnızca başlangıç sırasında eklentinin bağlandı, ve yalnızca ana eklenti kapatma sırasında keser, OnBeginShutdown yöntemi çağrılırsa denir.

Bu olaylar ba?latmak için kullanıcı arabirimi için ana bilgisayar uygulamasının tam etkin olduğundan, aksi durumda OnConnection olayı ve olayın OnDisconnection kullanılamaz olacak belirli eylemleri gerçekleştirmek için tek yol olabilirler.

Eklenti, COM kayıt

Normal COM kayıt ek olarak, bir COM eklentisi kendisi içinde çalışan her Office uygulaması ile kaydetmeniz gerekir. Kendisini, belirli bir uygulama ile kaydetmek için <a0></a0>, eklenti, Progıd anahtarının altında aşağıda belirtilen konumda, adı kullanarak bir alt anahtarı oluşturmanız gerekir:
HKEY_CURRENT_USER\Software\Microsoft\Office\<OfficeApp>\Addins\<ProgID>
Eklenti kolay görünen ad hem de tam bir açıklaması için anahtar bu konumda bir değer sağlar. Buna ek olarak, eklentiyi istenen yükleme davranışı LoadBehavior adlı bir DWORD değeri'ni kullanarak belirtmeniz gerekir. Bu değer, nasıl eklenti ana bilgisayar uygulaması tarafından yüklenir ve aşağıdaki değerlerin birleşimini yapılan belirler:
  • 0 Bağlantıyı Kes'i = - yüklü değil.
  • 1 Bağlı = - yüklenen.
  • 2 Bootload - uygulama başlangıçta yükle =.
  • 8 - DemandLoad kullanıcı tarafından istendiğinde yükle =.
  • 16 - ConnectFirstTime yalnızca bir kez (başlangıçta sonraki) yük =.
Belirtilen normal 0x03 değeridir (bağlı | Bootload).

Ayrıca, ıdtextensibility2 uygulayan eklentileri eklentileri desteklemeyen bir kullanıcı arabirimi, operasyonlar için güvenli olup olmadığını belirtmek için
CommandLineSafe
adlı bir DWORD değeri belirtmeniz gerekir. Yanlış 0x00 değeri gösterir; true değerini 0x01 gösterir.

Visual C#. NET'i kullanarak bir COM eklentisi oluşturma yöntemlerini

Office COM eklenti daha önce belirtildiği gibi bir işlem içi COM olduğu sunucu COM çalıştırma katmanı üzerinden bir Office uygulaması tarafından etkinleştirildi. Bu nedenle, bir COM eklenti .NET geliştirme eklenti bileşeni. NET'te uygulanan ve sonra COM istemcileri için açık olmasını gerektirir (diğer bir deyişle, Office uygulamalarının) üzerinden COM birlikte çalışabilirlik katmanı.

Visual C# .NET ile farklı bir COM eklentisi oluşturmak için aşağıdaki adımları izleyin:
  1. Visual C# .NET, bir sınıf kitaplığı oluşturma proje.
  2. ıdtextensibility2 uygulayan türündeki kitaplığa bir başvuru ekleyin. Bu bir ana birlikte çalışma derlemesi zaten Extensibility adıyla edinilebilir.
  3. Microsoft Office nesne kitaplığına bir başvuru ekleyin. Bu bir ana birlikte çalışma derlemesi zaten Office adıyla edinilebilir.
  4. Ortak bir sınıf içinde ıdtextensibility2 uygulayan sınıf kitaplığı oluşturun.
  5. Sonra sınıf kitaplığı yerleşik olarak bulunur, bu kitaplık COM birlikte çalışma için kaydolun. Bunu yapmak için <a0></a0>, COM birlikte çalışma ile kaydetmek ve güçlü bir derlemesi için bu sınıf kitaplığı adlı oluşturur. Regasm.exe, bir .NET bileşeni, COM birlikte çalışma için kaydetmek için kullanabilirsiniz.
  6. Kayıt defteri girdilerini oluşturun, böylece Office uygulamaları tanımak ve eklenti yüklenemedi.
Tüm bu adımları tamamlamak seçim yapabilirsiniz veya <a1>Tür</a1> Eklentisi paylaşılan bir .NET projesi oluşturabilirsiniz. Bu,. NET'te bir COM eklentisini oluşturmaya yardımcı genişletilebilirlik Sihirbazı başlar.

Genişletilebilirlik Sihirbazı oluşturur Visual bir C# .NET sınıf kitaplığının proje ıdtextensibility2 arabirimini uygulayan bir Connect sınıf birlikte. Boş IDTExtensibility üyeleri uygulayan skeleton kodunu da oluşturulur. Bu proje Extensibility ve Office birleştirmeler için başvuru var. Proje oluşturma ayarlarını, seçilen COM birlikte çalışma için kaydı vardır. Birleştirme anahtarı (.snk) dosyası oluşturulur ve Assemblyinfo.vb AssemblyKeyfile özniteliğinde başvuruda bulunulan.

Sınıf kitaplığı birlikte proje, sihirbaz başka bilgisayarlardaki COM eklentisini dağıtmak için kullanabileceğiniz bir kurulum projesi oluşturur. Isterseniz, bu proje çıkarabilirsiniz.

Adım adım örnek

  1. Microsoft Visual Studio. NET'te Dosya menüsünden Yeni ' yi tıklatın ve sonra Project ' i tıklatın.
  2. Yeni proje) iletişim kutusunda, Diğer projelerProje türleri altında) genişletin, Extensibility Projects seçin ve sonra paylaşılan eklenti şablonu seçin.
  3. MyCOMAddin eklenti yazın ve Tamam ' ı tıklatın.
  4. Genişletilebilirlik Sihirbazı görüntülendiğinde, şu adımları izleyin:
    1. Sayfa 1'de, bir eklenti Oluştur'ı kullanarak Visual C# seçin ve ileri ' yi tıklatın.
    2. Sayfa 2, aşağıdaki ana bilgisayar uygulamaları seçin ve ileri ' yi tıklatın:
      • Microsoft Word
      • Microsoft PowerPoint
      • Microsoft Outlook
      • Microsoft Excel
      • Microsoft Access
    3. 3 Sayfa, ad ve açıklama için eklentinin girin ve ileri ' yi tıklatın.

      NotCOM eklentisi iletişim kutusunda Office uygulamasında, ad ve eklentinin açıklaması görüntülenir.

    4. Sayfa 4'de, tüm kullanılabilir olan seçenekleri seçin ve ileri ' yi tıklatın.
    5. Son ' u tıklatın.
  5. Proje) menüsünde Add Reference ' ı tıklatın. Bileşenler listesinde System.Windows.Forms.DLL ' ı tıklatın, Seç ' i tıklatın ve sonra Tamam ' ı tıklatın.
  6. Ad <a0>Bağlan</a0> sınıfındaki listesine aşağıdakileri ekleyin:
    using System.Reflection;
  7. Aşağıdaki üye Bağlan sınıfına ekleyin:
    private CommandBarButton MyButton; 
  8. Aşağıdaki kodu ıdtextensibility2 üyelerinin Bağlan sınıfında uygulamak:
    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. Oluşturmak ve bir COM eklentisini sınayın. Bunu yapmak için şu adımları izleyin:
    1. Yapı) menüsünde, Build Solution ' ı tıklatın. COM eklentisi oluşturma kullanılacak .NET sınıfını COM birlikte çalışma'ile kaydedeceğini unutmayın.
    2. Bir ana bilgisayar uygulaması olarak, eklentiniz için (örneğin, Microsoft Word veya Microsoft Excel) seçili Office uygulamalarından biri başlatın.
    3. Eklenti, OnStartupComplete başladıktan sonra eklentinin olayı harekete geçirilir ve bir ileti alırsınız. Ileti kutusunu kapatmak. Eklenti "My özel düğme" başlığını yeni bir özel düğme eklediğinizi, standart araç çubuğuna unutmayın.
    4. Benim özel düğmesini tıklatın. Düğmeyi tıklatarak olayı eklenti tarafından işlenen ve bir ileti kutusu görüntülenir. Ileti kutusunu kapatmak.
    5. Office uygulaması'nden çıkın.
    6. Uygulamanın OnBeginShutDown çıktığınızda olay geçirilir ve bir ileti alıyorum. Ileti kutusu gösteri sona erdirmek için iptal.

Referanslar

COM eklentileri yazma hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
190253BILGI: VB6 tasarımcıları VB5'de çalışmıyor

Özellikler

Makale numarası: 302901 - Last Review: 11 Mayıs 2007 Cuma - Gözden geçirme: 10.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • 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 Office Word 2003
  • Microsoft Word 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbautomation kbhowtomaster KB302901 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:302901

Geri Bildirim Ver

 

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