Làm th? nào đ? xây d?ng m?t văn ph?ng COM Add-in b?ng cách s? d?ng Visual Basic.NET

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 302896 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Microsoft Office 2000 và sau đó h? tr? m?t m?i, th?ng nh?t thi?t k? ki?n trúc cho vi?c xây d?ng ?ng d?ng add-in đ? tăng cư?ng và ki?m soát ?ng d?ng văn ph?ng. Add-in ? đây đư?c g?i là COM add-in. Này t?ng bư?c bài báo th?o lu?n v? văn ph?ng COM add-in và mô t? làm th? nào đ? xây d?ng m?t văn ph?ng COM Add-in b?ng cách s? d?ng Microsoft Visual Basic.NET.

Giao di?n IDTExensibility2

M?t COM thêm vào là m?t trong quá tr?nh COM máy ch?, ho?c các ActiveX năng đ?ng liên k?t thư vi?n (DLL), th?c hi?n các IDTExensibility2 giao di?n như mô t? trong lo?i Microsoft thêm trong Designer thư vi?n (Msaddndr.dll). T?t c? các COM add-in k? th?a t? giao di?n này và ph?i th?c hi?n m?i phương pháp năm c?a m?nh.

OnConnection

Các OnConnection s? ki?n cháy b?t c? khi nào COM add-in k?t n?i. Add-in có th? đư?c k?t n?i trên kh?i đ?ng, ngư?i dùng cu?i, ho?c thông qua T? đ?ng hóa. N?u OnConnection tr? v? thành công, add-in đư?c g?i là n?p. N?u m?t thông báo l?i đư?c tr? l?i, các ?ng d?ng máy ch? lưu tr? ngay l?p t?c b?n phát hành c?a nó tham chi?u đ?n add-in, và các đ?i tư?ng là b? phá h?y.

OnConnection m?t các tham s? b?n sau đây:
  • ?ng d?ng -M?t tham chi?u đ?n đ?i tư?ng ?ng d?ng máy ch? lưu tr?.
  • ConnectMode -M?t h?ng s? xác đ?nh như th? nào add-in đư?c k?t n?i. Các Add-in có th? k?t n?i trong các cách sau:
    • ext_cm_AfterStartup -Add-in đư?c b?t đ?u b?i ngư?i dùng cu?i t? các COM Add-in h?p tho?i.
    • ext_cm_CommandLine -Add-in đư?c k?t n?i t? d?ng l?nh. Lưu ? r?ng đi?u này không áp d?ng đ? xây d?ng COM add-in cho các ?ng d?ng văn ph?ng.
    • ext_cm_External -Add-in đư?c k?t n?i b?ng ?ng d?ng bên ngoài thông qua T? đ?ng hóa. Lưu ? r?ng đi?u này không áp d?ng cho vi?c xây d?ng COM add-in cho Office các ?ng d?ng.
    • ext_cm_Startup -Add-in đư?c b?t đ?u b?i máy ch? ?ng d?ng khi kh?i đ?ng. Đi?u này hành vi đư?c đi?u khi?n b?i m?t thi?t l?p trong s? đăng k?.
  • AddInInst -M?t tham chi?u đ?n các COMAddIn đ?i tư?ng nói đ?n này thêm vào trong các COMAddIns b? sưu t?p cho các ?ng d?ng máy ch? lưu tr?.
  • Tu? ch?nh -M?t m?ng c?a Bi?n th? nh?p các giá tr? có th? ch?a d? li?u ngư?i dùng xác đ?nh.

OnDisconnection

Các OnDisconnection s? ki?n cháy khi COM add-in đ? ng?t k?t n?i và ngay trư?c khi nó unloads t? b? nh?. Add-in nên th?c hi?n b?t k? d?n d?p các ngu?n l?c trong s? ki?n này và s? khôi ph?c b?t k? thay đ?i nào đư?c th?c hi?n cho các máy ch? ?ng d?ng.

OnDisconnection ph?i m?t hai sau các tham s?:
  • RemoveMode -M?t h?ng s? xác đ?nh như th? nào add-in đ? b? ng?t. Các Add-in có th? b? ng?t k?t n?i trong các cách sau:
    • ext_dm_HostShutdown -Add-in b? ng?t k?t n?i khi ?ng d?ng máy ch? lưu tr? đóng c?a.
    • ext_dm_UserClosed -Add-in b? ng?t k?t n?i c?a ngư?i dùng hay m?t t? đ?ng hóa b? đi?u khi?n.
  • Tu? ch?nh -M?t m?ng c?a Bi?n th? nh?p các giá tr? có th? ch?a d? li?u ngư?i dùng xác đ?nh.

OnAddInsUpdate

Các OnAddInsUpdate s? ki?n cháy khi đăng k? các thi?t l?p c?a COM thay đ?i Add-in. Nói cách khác, b?t c? khi nào m?t COM add-in đư?c cài đ?t ho?c g? b? t? các ?ng d?ng máy ch?, s? ki?n này cháy.

OnStartupComplete và OnBeginShutdown

C? nh?ng OnStartupComplete và các OnBeginShutdown phương pháp đư?c g?i là khi các ?ng d?ng máy ch? lưu tr? đ? đ? l?i ho?c đang bư?c vào m?t nhà nư?c trong đó ngư?i s? d?ng tương tác c?n tránh v? ?ng d?ng đang b?n t?i ho?c x?p d? chính nó t? b? nh?. OnStartupComplete ch? đư?c g?i là n?u add-in đ? đư?c k?t n?i trong khi kh?i đ?ng, và OnBeginShutdown ch? đư?c g?i là n?u ch? nhà ng?t k?t n?i add-in trong t?t máy.

B?i v? giao di?n ngư?i dùng Đ?i v?i các ?ng d?ng máy ch? lưu tr? là ho?t đ?ng đ?y đ? khi nh?ng s? ki?n cháy, h? có th? cách duy nh?t đ? th?c hi?n m?t s? hành đ?ng n?u không s? không s?n dùng t? OnConnectionOnDisconnection.

COM Add-in Đăng k?

Thêm vào b?nh thư?ng COM đăng k?, m?t COM thêm vào c?n ph?i đăng k? chính nó v?i m?i ?ng d?ng văn ph?ng, trong đó nó ch?y. Đ? đăng k? riêng c?a m?nh v?i m?t ?ng d?ng c? th?, add-in nên t?o m?t subkey, b?ng cách s? d?ng c?a nó ProgID như tên g?i cho chính, theo v? trí sau:
HKEY_CURRENT_USER\Software\Microsoft\Office\OfficeApp\Addins\ProgID
Add-in có th? cung c?p giá tr? t?i v? trí ch? ch?t này Đ?i v?i c? hai tên thân thi?n hi?n th? và m?t mô t? đ?y đ?. Ngoài ra, các thêm vào nên xác đ?nh hành vi mong mu?n t?i c?a nó b?ng cách s? d?ng m?t giá tr? DWORD đư?c g?i là
LoadBehavior
. Giá tr? này s? xác đ?nh như th? nào add-in đư?c n?p b?i máy ch? ?ng d?ng, và đư?c t?o thành t? s? k?t h?p c?a các giá tr? sau:
  • 0 = Ng?t k?t n?i - không đư?c n?p.
  • 1 = K?t n?i - đư?c n?p.
  • 2 = Bootload - t?i v? ?ng d?ng kh?i đ?ng.
  • 8 = DemandLoad - t?i tr?ng ch? khi yêu c?u c?a ngư?i s? d?ng.
  • 16 = ConnectFirstTime - t?i ch? m?t l?n (ngày k? ti?p kh?i đ?ng).
Giá tr? đi?n h?nh xác đ?nh là 0x03 (k?t n?i | Bootload).

Add-in mà th?c hi?n IDTExtensibility2 c?ng nên ch? đ?nh m?t giá tr? DWORD đư?c g?i là
CommandLineSafe
đ? ch? ra li?u add-ins là an toàn cho các ho?t đ?ng h? tr? ngư?i dùng giao di?n. M?t giá tr? c?a 0x00 ch? ra sai, và cho th?y m?t giá tr? c?a 0x01 đúng s? th?t.

Làm th? nào đ? xây d?ng m?t COM thêm vào b?ng cách s? d?ng Visual Basic.NET

Như đ? đ? c?p trư?c đó, m?t văn ph?ng COM add-in là m?t trong quá tr?nh COM máy ch? đư?c kích ho?t b?i m?t ?ng d?ng văn ph?ng thông qua COM th?i gian ch?y l?p. V? v?y, vi?c phát tri?n m?t COM thêm vào trong Visual Basic.NET đ?i h?i r?ng add-in thành ph?n đư?c th?c hi?n t?i.NET và sau đó ti?p xúc v?i khách hàng COM (có ngh?a là, các ?ng d?ng văn ph?ng) thông qua các l?p interop COM.

Đ? t?o ra m?t COM add-in trong Visual Basic.NET, h?y làm theo các bư?c sau:
  1. Trong Visual Basic.NET, t?o m?t thư vi?n l?p d? án.
  2. Thêm m?t tham chi?u đ?n thư vi?n ki?u th?c hi?n IDTExtensibility2. Interop h?i đ?ng chính này đ? đư?c phát hành theo tên Kh? năng m? r?ng.
  3. Thêm m?t tham chi?u đ?n các thư vi?n đ?i tư?ng Microsoft Office. Các chính interop Cynulliad Cenedlaethol đi?u này đ? đư?c phát hành theo tên Office.
  4. T?o m?t l?p h?c công c?ng trong thư vi?n l?p th?c hi?n IDTExtensibility2.
  5. Sau khi l?p h?c thư vi?n đư?c xây d?ng, đăng k? thư vi?n cho COM interop. Đ? th?c hi?n vi?c này, t?o m?t m?nh m? tên là l?p ráp cho l?p này thư vi?n và sau đó đăng k? nó v?i COM interop. B?n có th? s? d?ng Regasm.exe đ? đăng k? m?t.NET thành ph?n cho COM interop.
  6. T?o ra m?c đăng k? đ? có th? ?ng d?ng văn ph?ng công nh?n và t?i add-in.
B?n có th? ch?n đ? hoàn thành t?t c? các bư?c này, ho?c b?n có th? t?o ra m?t.NET d? án lo?i Chia s? Addin. Đi?u này b?t đ?u thu?t s? m? r?ng giúp b?n t?o m?t COM thêm vào trong.NET.

Thu?t s? m? r?ng t?o m?t th? giác Cơ b?n.D? án thư vi?n NET l?p cùng v?i m?t K?t n?i l?p h?c th?c hi?n các IDTExtensibility2 giao di?n. B? xương m? th?c hi?n các thành viên có s?n ph?m nào c?a IDTExtensibility c?ng đư?c t?o ra. D? án này có tài li?u tham kh?o đ? m? r?ng và văn ph?ng h?i đ?ng khác nhau. Thi?t đ?t xây d?ng c?a d? án có Đăng k? cho COM Interop l?a ch?n. T?p tin khoá (.snk) l?p ráp đư?c t?o ra và là tham chi?u trong các AssemblyKeyfile thu?c tính trong Assemblyinfo.vb.

Cùng v?i các l?p h?c d? án thư vi?n, thu?t s? t?o ra m?t d? án thi?t l?p mà b?n có th? s? d?ng đ? tri?n khai COM add-in trên máy tính khác. B?n có th? lo?i b? d? án này n?u mong mu?n.

Ví d?-by-step

  1. Trên các Tệp Menu trong Microsoft Visual Studio.NET, nh?p M?i, sau đó b?m Dự án.
  2. Trong các D? án m?i h?p tho?i h?p, m? r?ng Các d? án khác dư?i Các lo?i d? án, ch?n D? án m? r?ng, và sau đó ch?n các Đư?c chia s? thêm-trong m?u.
  3. Lo?i MyCOMAddin như tên g?i c?a các thêm vào, và sau đó nh?p vào Ok.
  4. Khi m? r?ng Wizard xu?t hi?n, h?y làm theo các bư?c sau:
    1. Trang 1, ch?n T?o m?t Add-in b?ng cách s? d?ng Visual Basic, sau đó b?m Ti?p theo.
    2. Trên trang 2, ch?n các ?ng d?ng máy ch? lưu tr? sau, và sau đó b?m Ti?p theo:
      • Microsoft Word
      • Microsoft PowerPoint
      • Microsoft Outlook
      • Microsoft Excel
      • Microsoft Access
    3. Trên trang 3, cung c?p m?t tên và mô t? cho các thêm vào, và sau đó nh?p vào Ti?p theo.

      Chú ý Tên và mô t? c?a add-in xu?t hi?n trong các COM Add-in h?p tho?i trong các ?ng d?ng văn ph?ng.

    4. Trên trang 4, ch?n t?t c? các tùy ch?n có s?n, và sau đó Nh?p vào Ti?p theo.
    5. Nh?p vào K?t thúc.
  5. Thêm các thành viên sau đây đ? các K?t n?i l?p:
    Dim WithEvents MyButton As CommandBarButton 
  6. Th?c hi?n các m? cho t?t c? các thành viên c?a IDTExtensibility2 trong các K?t n?i l?p, như sau:
        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
    					
  7. Xây d?ng và th? nghi?m COM add-in. Đ? th?c hi?n vi?c này, h?y làm theo các bư?c sau:
    1. Trên các Xây d?ng tr?nh đơn, nh?p vào Xây d?ng MyCOMAddin. Lưu ? r?ng vi?c xây d?ng thêm trong COM thanh ghi các.NET class v?i COM interop.
    2. B?t đ?u m?t trong các ?ng d?ng văn ph?ng mà b?n đ? ch?n như các ?ng d?ng máy ch? lưu tr? cho b?n thêm trong (ví d?, Microsoft Word ho?c Microsoft Excel).
    3. Sau khi add-in đ? b?t đ?u, các OnConnection s? ki?n là sa th?i, và b?n nh?n đư?c m?t h?p thư. Khi b?n b? qua h?p thư, các OnStartupComplete v? cháy s? ki?n, và b?n nh?n đư?c m?t h?p thư th? hai. B? qua các h?p thư.
    4. Lưu ? r?ng add-in thêm m?t nút tùy ch?nh m?i v?i các chú thích "Tôi Custom Button" vào thanh công c? tiêu chu?n.
    5. Nh?p vào Nút tu? ch?nh c?a tôi. Các Nh?p vào s? ki?n cho các nút đư?c x? l? b?i add-in và b?n nh?n đư?c m?t h?p thư. B? qua h?p thư.
    6. Thoát kh?i ?ng d?ng văn ph?ng.
    7. Khi b?n thoát kh?i ?ng d?ng, các OnBeginShutDownv? cháy s? ki?n, và b?n nh?n đư?c m?t h?p thư. B? qua h?p thư k?t thúc các cu?c bi?u t?nh.

THAM KH?O

Cho thông tin thêm v? cách vi?t COM add-in, nh?p vào s? bài vi?t dư?i đây đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
190253 Thông báo: VB6 thi?t k? không làm vi?c trong VB5
Đ? bi?t thêm chi ti?t v? phát tri?n gi?i pháp d?a trên Web cho Microsoft Internet Explorer, h?y truy c?p trang Web Microsoft sau đây:
http://msdn2.Microsoft.com/en-US/IE/Default.aspx

http://support.Microsoft.com/IEP
(c) Microsoft Corporation 2001, t?t c? các quy?n. Nh?ng đóng góp c?a Ranjit R. Sawant, Microsoft Corporation.

Thu?c tính

ID c?a bài: 302896 - L?n xem xét sau cùng: 26 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
T? khóa: 
kbautomation kbhowtomaster kbmt KB302896 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:302896

Cung cấp Phản hồi

 

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