วิธีการสร้างการ Office COM เพิ่มไว้ โดยใช้ Visual Basic .NET

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 302896 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

Microsoft Office 2000 และรุ่นที่ใหม่กว่าสนับสนุนสถาปัตยกรรมของตัวออกแบบใหม่ เดียวสำหรับการสร้างโปรแกรมประยุกต์เพิ่มเติม เพื่อเพิ่มประสิทธิภาพ และควบคุมโปรแกรมประยุกต์ Office โปรแกรมเหล่านี้เพิ่มเติมจะเรียกว่าโปรแกรม COM เพิ่มเติม บทความนี้ทีละขั้นตอนที่อธิบายโปรแกรม Office COM เพิ่มเติม และอธิบายถึงวิธีการสร้าง COM ของ Office เพิ่มเข้า โดยใช้ Microsoft Visual Basic .NET

อินเทอร์เฟซ IDTExensibility2

มี COM add-in ที่นี่เป็นเซิร์ฟเวอร์ COM ในการประมวลผล หรือรา ActiveX เชื่อมโยงแบบไดนามิกรี (DLL), ที่ใช้นั้นIDTExensibility2อินเทอร์เฟซตามที่อธิบายไว้ในไลบรารีของชนิด Microsoft เพิ่มในโปรแกรมออก (Msaddndr.dll) สืบทอดมาจากอินเทอร์เฟซนี้ และต้องปฏิบัติตามวิธีที่ 5 ของแต่ละโปรแกรมทั้งหมด COM เพิ่มเติม

OnConnection

กระบวนการOnConnectionเหตุการณ์ fires ทุกครั้ง COM add-in ที่มีการเชื่อมต่อ การเพิ่มเข้าอาจอย่างง่ายมีการเชื่อมต่อเมื่อเริ่มต้น โดยผู้ใช้ หรือผ่าน ทางการทำงานอัตโนมัติ ถ้าOnConnectionส่งกลับค่าเรียบร้อยแล้ว การเพิ่มเข้าเป็น said เพื่อให้สามารถโหลด ถ้ามีการส่งคืนข้อผิดพลาด แอพลิเคชันโฮสต์ออกของการอ้างอิงไปเพิ่มเข้าในทันที และวัตถุถูกทำลาย

OnConnectionใช้พารามิเตอร์ทั้งสี่ต่อไปนี้:
  • โปรแกรมประยุกต์-การอ้างอิงไปยังวัตถุโปรแกรมประยุกต์ของโฮสต์
  • ConnectMode-เป็นค่าคงที่ระบุวิธีการเพิ่มไว้มีการเชื่อมต่อ การเพิ่มเข้าสามารถเชื่อมต่อด้วยวิธีการดังต่อไปนี้:
    • ext_cm_AfterStartup-การเพิ่มไว้จะเริ่มต้น โดยผู้ใช้จากนั้นโปรแกรม COM เพิ่มเติมกล่องโต้ตอบ
    • ext_cm_CommandLine-การเพิ่มไว้มีการเชื่อมต่อจากบรรทัดคำสั่ง โปรดสังเกตว่า นี้ไม่สามารถใช้ในการสร้างโปรแกรม COM เพิ่มเติมสำหรับโปรแกรมประยุกต์ Office
    • ext_cm_External-การเพิ่มไว้มีการเชื่อมต่อ โดยโปรแกรมประยุกต์ภายนอกโดยอัตโนมัติ โปรดสังเกตว่า นี้ไม่สามารถใช้ในการสร้างโปรแกรม COM เพิ่มเติมสำหรับ Office แอปพลิเคชัน
    • ext_cm_Startup-การเพิ่มไว้จะเริ่มต้น โดยโฮสต์เมื่อเริ่มต้นโปรแกรมประยุกต์ ลักษณะการทำงานนี้ถูกควบคุม โดยการตั้งค่าในรีจิสทรี
  • AddInInst-การอ้างอิงไปยังCOMAddInวัตถุที่อ้างอิงถึงนี้ add-in ในที่นี้COMAddInsคอลเลกชันสำหรับแอพลิเคชันของโฮสต์
  • กำหนดเอง-อาร์เรย์ของตัวแปรพิมพ์ค่าที่สามารถเก็บข้อมูลที่กำหนดโดยผู้ใช้

OnDisconnection

กระบวนการOnDisconnectionเหตุการณ์ fires เมื่อการ COM add-in ที่ถูกตัด และเพียงแค่ ก่อนที่จะ unloads จากหน่วยความจำ การเพิ่มเข้าควรดำเนินการล้างข้อมูลใด ๆ ของทรัพยากรในเหตุการณ์นี้ และควรคืนค่าการเปลี่ยนแปลงใด ๆ ที่ทำแอพพลิเคชันโฮสต์

OnDisconnectionใช้พารามิเตอร์การสองแบบต่อไปนี้:
  • RemoveMode-เป็นค่าคงที่ระบุวิธีการเพิ่มไว้ถูกตัด การเพิ่มในสามารถถูกตัดด้วยวิธีการดังต่อไปนี้:
    • ext_dm_HostShutdown-ยกเลิกการการเพิ่มเข้าเป็นต่อเมื่อปิดโปรแกรมประยุกต์โฮสต์
    • ext_dm_UserClosed-การเพิ่มไว้ถูกตัด โดยผู้ใช้หรือการทำงานอัตโนมัติตัวควบคุม
  • กำหนดเอง-อาร์เรย์ของตัวแปรพิมพ์ค่าที่สามารถเก็บข้อมูลที่กำหนดโดยผู้ใช้

OnAddInsUpdate

กระบวนการOnAddInsUpdateเหตุการณ์ fires เมื่อชุดของการลงทะเบียน COM คงคลังที่เพิ่มการเปลี่ยนแปลง ในอย่างอื่น ทุกครั้ง COM ถูกติดตั้ง หรือเอาออกจากโปรแกรมประยุกต์โฮสต์ เหตุการณ์นี้ fires

OnStartupComplete และ OnBeginShutdown

ทั้งสองแบบOnStartupCompleteและOnBeginShutdownมีเรียกวิธีเมื่อโปรแกรมประยุกต์โฮสต์ได้ออกจาก หรือมีการป้อนสถานะในผู้ที่ใช้โต้ตอบควรถูก avoided เนื่องจากโปรแกรมประยุกต์มีการโหลดที่ว่างหรือ unloading เองจากหน่วยความจำOnStartupCompleteเฉพาะเรียกว่าถ้ามีการเชื่อมต่อเพิ่มเข้ามีอยู่ในระหว่างการเริ่มต้น และOnBeginShutdownเรียกเฉพาะว่าหากโฮสต์ disconnects เพิ่มเข้าในระหว่างการปิดระบบ

เนื่องจากอินเทอร์เฟซสำหรับผู้ใช้สำหรับโปรแกรมประยุกต์ของโฮสต์ทั้งหมดที่ใช้งานเมื่อดำเนินการเหตุการณ์เหล่านี้ เหล่านั้นอาจเป็นวิธีเดียวที่จะทำการดำเนินการบางอย่างที่มิฉะนั้น จะไม่พร้อมใช้งานจากOnConnectionและOnDisconnection.

ลงทะเบียน COM เพิ่มไว้

นอกเหนือจากการลงทะเบียน COM ปกติ การ COM add-in ที่ต้องการในการลงทะเบียนตัวเอง ด้วยโปรแกรมประยุกต์ Office แต่ละที่จะรัน เมื่อต้องการลงทะเบียนตัวเอง ด้วยโปรแกรมประยุกต์ที่เฉพาะ การเพิ่มเข้าควรสร้างคีย์ย่อย การใช้ ProgID ของชื่อสำหรับคีย์ ภายใต้ตำแหน่งที่ตั้งต่อไปนี้:
HKEY_CURRENT_USER\Software\Microsoft\Office\OfficeApp\Addins\progid
การเพิ่มในสามารถให้ค่าในตำแหน่งนี้คีย์สำหรับชื่อที่ใช้แสดงที่จำง่ายและคำอธิบายเต็ม นอกจากนี้ การเพิ่มเข้าควรระบุลักษณะการทำงานที่ต้องโหลดการ โดยใช้ค่า DWORD ที่เรียกว่า
LoadBehavior
. ค่านี้กำหนดวิธีการเพิ่มเข้าถูกโหลด โดยโปรแกรมประยุกต์โฮสต์ และจัดทำขึ้นของชุดของค่าต่อไปนี้:
  • 0 = Disconnect - ถูกโหลดไม่
  • 1 = Connected - ถูกโหลด
  • 2 = bootload - โหลดเมื่อเริ่มต้นโปรแกรมประยุกต์
  • 8 = demandLoad - โหลดเมื่อการร้องขอ โดยผู้ใช้
  • 16 = ConnectFirstTime - โหลดเพียงครั้งเดียว (ในการเริ่มต้นถัดไป)
ค่าทั่วไปที่ระบุถูก 0x03 (Connected | Bootload)

โปรแกรมเพิ่มเติมที่นำมาใช้IDTExtensibility2นอกจากนี้ควรระบุค่า DWORD ที่เรียกว่า
CommandLineSafe
เมื่อต้องการบ่งชี้ว่า เพิ่ม-คงคลังปลอดภัยสำหรับการดำเนินการที่ไม่สนับสนุนอินเทอร์เฟซของผู้ใช้ ค่าของ 0x00 บ่งชี้เท็จ และค่า 0x01 บ่งชี้ว่า True

วิธีการสร้างแบบ COM เพิ่มไว้ โดยใช้ Visual Basic .NET

As mentioned earlier, an Office COM add-in is an in-process COM server that is activated by an Office application through the COM run-time layer. Therefore, developing a COM add-in in Visual Basic .NET requires that the add-in component be implemented in .NET and then exposed to the COM clients (that is, the Office applications) through the COM interop layer.

To create a COM add-in in Visual Basic .NET, follow these steps:
  1. In Visual Basic .NET, create a Class Library project.
  2. Add a reference to the type library that implementsIDTExtensibility2. The primary interop assembly for this is already available under the nameExtensibility.
  3. Add a reference to the Microsoft Office object library. The primary interop assembly for this is already available under the nameOffice.
  4. Create a public class in the class library that implementsIDTExtensibility2.
  5. After the class library is built, register the library for COM interop. To do this, generate a strong named assembly for this class library and then register it with COM interop. You can use Regasm.exe to register a .NET component for COM interop.
  6. Create registry entries so that Office applications can recognize and load the add-in.
You can choose to complete all of these steps, or you can create a .NET project of typeShared Addin. This starts the Extensibility Wizard, which helps you to create a COM add-in in .NET.

The Extensibility Wizard creates a Visual Basic .NET class library project along with aเชื่อมต่อclass that implements theIDTExtensibility2อินเทอร์เฟซ The skeleton code that implements the empty members ofIDTExtensibilityis also generated. This project has references to Extensibility and Office assemblies. The build settings of the project haveRegister for COM Interopselected. The assembly key (.snk) file is generated and is referenced in theAssemblyKeyfileattribute in Assemblyinfo.vb.

พร้อมกับโครงการไลบรารีคลาส วิซาร์ดสร้างโครงการการตั้งค่าที่คุณสามารถใช้เพื่อปรับใช้ COM เพิ่มไว้บนคอมพิวเตอร์เครื่องอื่น คุณอาจลบโครงการนี้หากต้องการ

ตัวอย่าง step-by-Step

  1. ในการแฟ้ม:คลิกที่เมนูใน Microsoft Visual Studio .NETใหม่แล้ว คลิกProject.
  2. ในการโครงการใหม่กล่องโต้ตอบกล่อง ขยายโครงการอื่นภายใต้ชนิดโครงการเลือกโครงการ extensibilityแล้ว เลือกนั้นใช้ร่วมกันเพิ่มไว้แม่แบบ:
  3. ประเภท:MyCOMAddinชื่อของเพิ่มใน แล้วคลิกตกลง.
  4. เมื่อตัวช่วยสร้างการ Extensibility ปรากฏ ทำตามขั้นตอนเหล่านี้:
    1. บนหน้า 1 การเลือกสร้างการเพิ่มเข้าโดยใช้ Visual Basicแล้ว คลิกถัดไป.
    2. บนหน้า 2 เลือกโปรแกรมประยุกต์ต่อไปนี้ของโฮสต์ และคลิกถัดไป:
      • Microsoft Word
      • Microsoft PowerPoint
      • Microsoft Outlook
      • Microsoft Excel
      • Microsoft Access
    3. บนหน้า 3 ชื่อและคำอธิบายสำหรับการเพิ่มเข้า และจากนั้น คลิกถัดไป.

      หมายเหตุ:ชื่อและคำอธิบายเกี่ยวกับการเพิ่มไว้ปรากฏขึ้นในการCOM เพิ่มไว้กล่องโต้ตอบในโปรแกรมประยุกต์ของ Office

    4. บนหน้า 4 เลือกตัวเลือกที่พร้อมใช้งานทั้งหมด และคลิกถัดไป.
    5. คลิกเสร็จสิ้น.
  5. เพิ่มสมาชิกต่อไปนี้ไปเชื่อมต่อคลาส:
    Dim WithEvents MyButton As CommandBarButton 
  6. ใช้รหัสสำหรับสมาชิกทั้งหมดของIDTExtensibility2ในการเชื่อมต่อคลา ดัง:
        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. สร้าง และทดสอบการ COM add-in ที่ โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. ในการการสร้างเมนู คลิกสร้าง MyCOMAddin. หมายเหตุลงที่ สร้างใน COM add-in ที่ทะเบียนคลา.NET ด้วย COM interop
    2. เริ่มโปรแกรมประยุกต์ของ Office ที่คุณเลือกเป็นโปรแกรมประยุกต์การโฮสต์สำหรับของคุณเพิ่มไว้ (ตัวอย่างเช่น Microsoft Word หรือ Microsoft Excel) อย่างใดอย่างหนึ่ง
    3. หลังจากเพิ่มเข้าได้เริ่มต้น การOnConnectionเหตุการณ์คือ fired และคุณได้รับกล่องข้อความ เมื่อคุณยกเลิกกล่องข้อความOnStartupCompletefires เหตุการณ์ และคุณได้รับกล่องข้อความที่สอง ยกเลิกกล่องข้อความ
    4. โปรดสังเกตว่า การเพิ่มไว้เพิ่มปุ่มแบบกำหนดเองใหม่ ด้วยคำอธิบายเฉพาะ "ของฉันกำหนดเองปุ่ม" ไปยังแถบเครื่องมือมาตรฐาน
    5. คลิกปุ่มแบบกำหนดเองของฉัน. กระบวนการคลิกเหตุการณ์สำหรับปุ่มถูกจัดการ โดยการเพิ่มไว้ และคุณได้รับกล่องข้อความ ยกเลิกกล่องข้อความ
    6. ออกจากโปรแกรมประยุกต์ของ Office
    7. เมื่อคุณออกจากโปรแกรมประยุกต์OnBeginShutDownfires เหตุการณ์ และคุณได้รับกล่องข้อความ ยกเลิกกล่องข้อความสิ้นสุดการสาธิต

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเขียนโปรแกรม COM เพิ่มเติม ให้คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
190253ข้อมูล: สำหรับผู้ออกแบบ VB6 ไม่งานใน VB5
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาเว็บโดยใช้วิธีแก้ไขปัญหาสำหรับ Microsoft Internet Explorer แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:
http://msdn2.microsoft.com/en-us/ie/default.aspx

http://support.microsoft.com/iep
(c) Microsoft Corporation 2001 สิทธิ์ทั้งหมดที่สำรองไว้ contributions โดย Ranjit R. Sawant, Microsoft Corporation

คุณสมบัติ

หมายเลขบทความ (Article ID): 302896 - รีวิวครั้งสุดท้าย: 10 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • 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
Keywords: 
kbautomation kbhowtomaster kbmt KB302896 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:302896

ให้ข้อเสนอแนะ

 

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