Microsoft Office 2000 ve sonraki uygulama eklentileri geliştirmek ve Office uygulamalarını denetlemek için oluşturmak için bir yeni, tutarlı bir tasarım mimarisini destekler. Bu eklentiler, COM eklentilerini olarak adlandırılır. Bu adım adım makalede, Office COM eklentileri açıklanır ve bir Office COM nasıl açıklar eklenti Microsoft Visual Basic .NET kullanarak.
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
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
aşağıdaki dört parametre yer alır:
- Uygulama - BIR ana uygulama nesnesine 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ıldı.
- komut satırından ext_cm_CommandLine - eklenti bağlandı. Bu Office uygulamaları için COM eklentileri oluşturma için geçerli değildir not alın.
- Otomasyon yoluyla bir dış uygulama tarafından ext_cm_External - eklenti bağlandı. Bu Office için COM eklentileri oluşturma için geçerli değildir Not uygulamaları.
- ext_cm_Startup - eklenti, uygulamanın başlangıcında ana makinesi tarafından başlatıldı. 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 durumda çalışmalıdır ve ana uygulamaya yapılan değişiklikleri geri yüklemelisiniz. OnDisconnection
aşağıdaki iki parametre alır:
- RemoveMode - eklentinin nasıl kesildi belirten BIR sabit. Eklenti aşağıdaki yollarla kesilebilir:
- ana uygulama kapatıldığında ext_dm_HostShutdown - eklenti bağlantısı kesildi.
- ext_dm_UserClosed - eklenti-, son kullanıcı ya da bir Otomasyon bağlantısı kesildi 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
ve OnBeginShutdown
yöntemleri olarak adlandırılır. Eklenti başlatılırken bağlandı ve ana bilgisayar kapatma sırasında eklentinin keser OnBeginShutdown
yalnızca adlandırılır, OnStartupComplete
yalnızca denir.
Bu olaylar baþlatmak için kullanıcı arabirimi için ana bilgisayar uygulamasının tam etkin olduğundan, aksi durumda OnConnection
ve OnDisconnection
kullanılamaz olacak belirli eylemleri gerçekleştirmek için tek yol olabilirler.
COM eklentisi, 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 Basic .NET kullanarak COM eklentisi oluşturma hakkında
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 add-in Visual Basic. NET'te 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ı.
Bir COM eklentisi, Visual Basic. NET'te oluşturmak için aşağıdaki adımları izleyin:
- Visual Basic. NET'te bir sınıf kitaplığı oluşturma proje.
- ıdtextensibility2 uygulayan türündeki kitaplığa bir başvuru ekleyin. Bu bir ana birlikte çalışma derlemesi zaten Extensibility adıyla edinilebilir.
- Microsoft Office nesne kitaplığına bir başvuru ekleyin. Bu bir ana birlikte çalışma derlemesi zaten Office adıyla edinilebilir.
- Ortak bir sınıf içinde ıdtextensibility2 uygulayan sınıf kitaplığı oluşturun.
- 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.
- 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ı ile birlikte bir Connect
sınıf ıdtextensibility2
arabirimini uygulayan Visual Basic .NET sınıf kitaplığı proje oluşturur. 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
- Microsoft Visual Studio. NET'te Dosya menüsünden Yeni ' yi tıklatın ve sonra Project ' i tıklatın.
- 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.
- MyCOMAddin eklenti yazın ve Tamam ' ı tıklatın.
- Genişletilebilirlik Sihirbazı görüntülendiğinde, şu adımları izleyin:
- Sayfa 1'de, bir eklenti oluştur, Visual Basic kullanarak seçin ve ileri ' yi tıklatın.
- 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 Sayfa, ad ve açıklama için eklentinin girin ve ileri ' yi tıklatın.
NotCOM eklentisi iletişim kutusunda Office uygulamasında adını ve eklentinin açıklaması görüntülenir.
- Sayfa 4'de, tüm kullanılabilir olan seçenekleri seçin ve ileri ' yi tıklatın.
- Son ' u tıklatın.
- Aşağıdaki üye Bağlan sınıfına ekleyin:
Dim WithEvents MyButton As CommandBarButton
- Aşağıdaki kodu ıdtextensibility2Bağlan sınıfındaki tüm üyelerinin uygulamak:
Public Sub OnBeginShutdown(ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnBeginShutdown
On Error Resume Next
' Notify the user you are shutting down, and delete the button.
MsgBox("Our custom Add-in is unloading.")
MyButton.Delete()
MyButton = Nothing
End Sub
Public Sub OnAddInsUpdate(ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnAddInsUpdate
'
End Sub
Public Sub OnStartupComplete(ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnStartupComplete
Dim oCommandBars As CommandBars
Dim oStandardBar As CommandBar
On Error Resume Next
' Set up a custom button on the "Standard" command bar.
oCommandBars = applicationObject.CommandBars
If oCommandBars Is Nothing Then
' Outlook has the CommandBars collection on the Explorer object.
oCommandBars = applicationObject.ActiveExplorer.CommandBars
End If
oStandardBar = oCommandBars.Item("Standard")
If oStandardBar Is Nothing Then
' Access names its main toolbar Database.
oStandardBar = oCommandBars.Item("Database")
End If
' In case the button was not deleted, use the exiting one.
MyButton = oStandardBar.Controls.Item("My Custom Button")
If MyButton Is Nothing Then
MyButton = oStandardBar.Controls.Add(1)
With MyButton
.Caption = "My Custom Button"
.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.
.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 clicks 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 show which application you started in.
MsgBox("Started in " & applicationObject.Name & ".")
oStandardBar = Nothing
oCommandBars = Nothing
End Sub
Public Sub OnDisconnection(ByVal RemoveMode As Extensibility.ext_DisconnectMode, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnDisconnection
On Error Resume Next
If RemoveMode <> Extensibility.ext_DisconnectMode.ext_dm_HostShutdown Then _
Call OnBeginShutdown(custom)
applicationObject = Nothing
End Sub
Public Sub OnConnection(ByVal application As Object, ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnConnection
MsgBox("On Connection In MyAddin")
applicationObject = application
addInInstance = addInInst
' If you aren't in startup, manually call OnStartupComplete.
If (connectMode <> Extensibility.ext_ConnectMode.ext_cm_Startup) Then _
Call OnStartupComplete(custom)
End Sub
Private Sub MyButton_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, ByRef CancelDefault As Boolean) Handles MyButton.Click
MsgBox("Our CommandBar button was pressed!")
End Sub
- Oluşturmak ve bir COM eklentisini sınayın. Bunu yapmak için şu adımları izleyin:
- Yapı) menüsünde, MyCOMAddin oluştur) tıklatın. COM eklentisi oluşturma kullanılacak .NET sınıfını COM birlikte çalışma'ile kaydedeceğini unutmayın.
- Bir ana bilgisayar uygulaması olarak, eklentiniz için (örneğin, Microsoft Word veya Microsoft Excel) seçili Office uygulamalarından biri başlatın.
- Eklenti başladıktan sonra OnConnection olayı harekete geçirilir ve bir ileti kutusu görüntülenir. Ne zaman OnStartupComplete olayı harekete geçirilir, ileti kutusunu kapatmak ve ikinci bir ileti kutusu görüntülenir. Ileti kutusunu kapatmak.
- Eklenti "My özel düğme" başlığını yeni bir özel düğme eklediğinizi, standart araç çubuğuna unutmayın.
- 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.
- Office uygulaması'nden çıkın.
- Uygulamanın OnBeginShutDown çıktığınızda olay geçirilir ve bir ileti kutusu görüntülenir. Ileti kutusu gösteri sona erdirmek için iptal.
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:
190253
(https://support.microsoft.com/kb/190253/EN-US/
)
BILGI: VB6 tasarımcıları VB5'de çalışmıyor
Microsoft ınternet Explorer için Web tabanlı çözümler geliştirme hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitelerini ziyaret edin:
(c) Microsoft Corporation 2001, tüm hakları saklıdır. Katkıyı Ranjit R'ye Sawant, Microsoft Corporation.
Makale numarası: 302896 - Last Review: 25 Aralık 2006 Pazartesi - Gözden geçirme: 11.3
Bu makaledeki bilginin uygulandığı durum:
- Microsoft Visual Basic .NET 2002 Standard Edition
- Microsoft Office Excel 2003
- Microsoft Excel 2002 Standard Edition
- Microsoft Office Outlook 2003
- Microsoft Outlook 2002 Standard Edition
- Microsoft Office PowerPoint 2003
- Microsoft PowerPoint 2002 Standard Edition
- Microsoft Office Word 2003
- Microsoft Word 2002 Standard Edition
|kbmt kbautomation kbhowtomaster KB302896 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:302896
(https://support.microsoft.com/kb/302896/en-us/
)