Τρόπος δημιουργίας ενός προσθέτου COM του Office με χρήση της Visual Basic .NET

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 302896 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Microsoft Office 2000 και νεότερες εκδόσεις υποστηρίζουν ένα νέο, ομοιόμορφη σχεδίαση αρχιτεκτονική για τη δημιουργία εφαρμογών πρόσθετα για να βελτιώσετε και να ελέγχετε τις εφαρμογές του Office. Τα πρόσθετα αυτά ονομάζονται πρόσθετα COM. Αυτό το άρθρο βήμα προς βήμα περιγράφει τα πρόσθετα COM του Office και περιγράφει τον τρόπο δημιουργίας ενός COM του Office πρόσθετου χρησιμοποιώντας το Microsoft Visual Basic .NET.

Η διασύνδεση IDTExensibility2

Ένα πρόσθετο COM είναι εντός διεργασίας διακομιστή COM, ή η ActiveX βιβλιοθήκη δυναμικής σύνδεσης (DLL) που υλοποιεί τοIDTExensibility2περιβάλλον, όπως περιγράφεται στη βιβλιοθήκη τύπων Microsoft πρόσθετο Σχεδίαση (Msaddndr.dll). Όλα τα πρόσθετα COM κληρονομούν από αυτήν τη διασύνδεση και πρέπει να εφαρμόσετε σε κάθε μία από τις μεθόδους του πέντε.

OnConnection

Για ναOnConnectionΠυροδοτείται συμβάντος κάθε φορά που το πρόσθετο COM είναι συνδεδεμένη. Το πρόσθετο μπορεί να είναι συνδεδεμένος κατά την εκκίνηση, από τον τελικό χρήστη ή μέσω της αυτοματοποίησης. Εάν,OnConnectionΕπιστρέφει με επιτυχία, το πρόσθετο που είπατε θα φορτωθεί. Εάν επιστραφεί μήνυμα λάθους, στην κύρια εφαρμογή δημοσιεύει αμέσως την αναφορά για το πρόσθετο και το αντικείμενο καταστρέφεται.

OnConnectionδέχεται τις παρακάτω τέσσερις παραμέτρους:
  • Εφαρμογή-Μια αναφορά στο αντικείμενο εφαρμογής του κεντρικού υπολογιστή.
  • ConnectMode-Μια σταθερά που καθορίζει πώς συνδέεται το πρόσθετο. Το πρόσθετο είναι δυνατό να συνδεθούν με τους ακόλουθους τρόπους:
    • ext_cm_AfterStartup-Το πρόσθετο ενεργοποιείται από τον τελικό χρήστη από τοΠρόσθετα COMπαράθυρο διαλόγου.
    • ext_cm_CommandLine-Το πρόσθετο είναι συνδεδεμένοι από τη γραμμή εντολών. Σημειώστε ότι αυτό δεν ισχύει για τη δημιουργία προσθέτων COM για εφαρμογές του Office.
    • ext_cm_External-Το πρόσθετο είναι συνδεδεμένη με μια εξωτερική εφαρμογή μέσω της αυτοματοποίησης. Σημειώστε ότι αυτό δεν ισχύει για τη δημιουργία προσθέτων COM για το Office εφαρμογές.
    • ext_cm_Startup-Το πρόσθετο ενεργοποιείται από τον κεντρικό υπολογιστή κατά την εκκίνηση της εφαρμογής. Αυτή η συμπεριφορά ελέγχεται από μια ρύθμιση του μητρώου.
  • AddInInst-Μια αναφορά για τοCOMAddInαντικείμενο που αφορά το πρόσθετο τουCOMAddInsσυλλογή για την εφαρμογή κεντρικού υπολογιστή.
  • Προσαρμογή-Έναν πίνακαΗ μεταβλητήΠληκτρολογήστε τις τιμές που μπορούν να περιέχουν δεδομένα που ορίζονται από το χρήστη.

OnDisconnection

Για ναOnDisconnectionσυμβάν fires όταν το πρόσθετο COM έχει αποσυνδεθεί και λίγο πριν από την καταργεί τη φόρτωση από τη μνήμη. Το πρόσθετο πρέπει να εκτελέσετε οποιαδήποτε εκκαθάριση των πόρων σε αυτήν την περίπτωση και θα πρέπει να επαναφέρετε τις αλλαγές που έγιναν στην εφαρμογή κεντρικού υπολογιστή.

OnDisconnectionδέχεται τις παρακάτω δύο παραμέτρους:
  • RemoveMode-Μια σταθερά που καθορίζει πώς αποσυνδέθηκε το πρόσθετο. Το πρόσθετο μπορεί να αποσυνδεθεί με τους ακόλουθους τρόπους:
    • ext_dm_HostShutdown-Το πρόσθετο έχει αποσυνδεθεί όταν κλείσετε την εφαρμογή κεντρικού υπολογιστή.
    • ext_dm_UserClosed-Το πρόσθετο έχει αποσυνδεθεί από τον τελικό χρήστη ή ένα αυτοματισμού ελεγκτή.
  • Προσαρμογή-Έναν πίνακαΗ μεταβλητήΠληκτρολογήστε τις τιμές που μπορούν να περιέχουν δεδομένα που ορίζονται από το χρήστη.

OnAddInsUpdate

Για ναOnAddInsUpdateσυμβάν fires όταν COM του συνόλου των πρόσθετων αλλαγών. Με άλλα λόγια, κάθε φορά που ένα πρόσθετο COM είναι εγκαταστάθηκε ή καταργήθηκε από την κύρια εφαρμογή, fires αυτό το συμβάν.

OnStartupComplete και OnBeginShutdown

Και οι δύο τοOnStartupCompleteκαι τοOnBeginShutdownμέθοδοι ονομάζονται όταν έχει μείνει στην εφαρμογή κεντρικού υπολογιστή ή να εισαγάγει μια κατάσταση στο ποιος χρήστης επικοινωνίας θα πρέπει να αποφεύγονται επειδή η εφαρμογή είναι απασχολημένη κατά τη φόρτωση ή κατάργηση φόρτωσης του από τη μνήμη.OnStartupCompleteκαλείται μόνο εάν το πρόσθετο που ήταν συνδεδεμένος κατά την εκκίνηση, καιOnBeginShutdownέχει κληθεί μόνο εάν ο κεντρικός υπολογιστής αποσυνδέεται το πρόσθετο κατά τον τερματισμό λειτουργίας.

Επειδή το περιβάλλον εργασίας χρήστη για την εφαρμογή κεντρικού υπολογιστή είναι πλήρως ενεργό κατά την ενεργοποίηση αυτών των συμβάντων, αυτά μπορεί να είναι ο μόνος τρόπος για να εκτελούν ορισμένες ενέργειες που διαφορετικά θα είναι διαθέσιμος απόOnConnectionANDOnDisconnection.

Δήλωση προσθέτων COM

Εκτός από την κανονική δήλωσης COM, ένα πρόσθετο COM πρέπει να καταχωρηθεί με κάθε εφαρμογή του Office που εκτελείται. Πρέπει να καταχωρηθεί με μια συγκεκριμένη εφαρμογή, το πρόσθετο να δημιουργήσετε ένα δευτερεύον κλειδί, χρησιμοποιώντας το ProgID ως το όνομα για το κλειδί, κάτω από την ακόλουθη θέση:
HKEY_CURRENT_USER\Software\Microsoft\Office\εφαρμογή_Office\Addins\αναγνωριστικό_ProgID
The add-in can provide values at this key location for both a friendly display name and a full description. In addition, the add-in should specify its desired load behavior by using a DWORD value called
LoadBehavior
. This value determines how the add-in is loaded by the host application, and is made up of a combination of the following values:
  • 0 = Disconnect - Is not loaded.
  • 1 = Connected - Is loaded.
  • 2 = Bootload - Load on application startup.
  • 8 = DemandLoad - Load only when requested by user.
  • 16 = ConnectFirstTime - Load only once (on next startup).
The typical value specified is 0x03 (Connected | Bootload).

Add-ins that implementIDTExtensibility2should also specify a DWORD value called
CommandLineSafe
to indicate whether the add-ins are safe for operations that do not support a user interface. A value of 0x00 indicates False, and a value of 0x01 indicates True.

How to Build a COM Add-in by Using 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 σε άλλους υπολογιστές. Εάν θέλετε, μπορείτε να καταργήσετε αυτό το έργο.

Παράδειγμα βήμα προς βήμα

  1. Στο διακομιστήFILEΚάντε κλικ στο μενού του Microsoft Visual Studio .NET,Νέα, και στη συνέχεια κάντε κλικ στο κουμπίΤο έργο.
  2. ΣτοΝέο έργοπαράθυρο διαλόγου πλαίσιο, αναπτύξτε το στοιχείοΆλλα έργαunderΤύποι έργουΕπιλογήΈργα επεκτασιμότητας, και στη συνέχεια επιλέξτε τοΚοινόχρηστο προσθέτουΠρότυπο.
  3. TYPEMyCOMAddinμε το όνομα του προσθέτου και στη συνέχεια κάντε κλικOk.
  4. Όταν εμφανιστεί ο οδηγός επεκτασιμότητας, ακολουθήστε τα εξής βήματα:
    1. Στη σελίδα 1, επιλέξτεΔημιουργήσετε ένα πρόσθετο πρόγραμμα χρησιμοποιώντας τη Visual Basic, και στη συνέχεια κάντε κλικ στο κουμπίΕπόμενο.
    2. Στη σελίδα 2, επιλέξτε τις παρακάτω εφαρμογές του κεντρικού υπολογιστή και στη συνέχεια κάντε κλικ στο κουμπίΕπόμενο:
      • Microsoft Word
      • Microsoft PowerPoint
      • Microsoft Outlook
      • Microsoft Excel. (Close and Return to Microsoft Excel.)
      • Microsoft Access
    3. Στη σελίδα 3, για να δώσετε ένα όνομα και μια περιγραφή για το πρόσθετο και στη συνέχεια κάντε κλικ στο κουμπίΕπόμενο.

      ΣΗΜΕΙΩΣΗΤο όνομα και την περιγραφή του πρόσθετου εμφανίζεται στο στοΠρόσθετο COMπαράθυρο διαλόγου στην εφαρμογή του Office.

    4. Στη σελίδα 4, επιλέξτε όλες τις διαθέσιμες επιλογές και στη συνέχεια κάντε κλικ στο κουμπίΕπόμενο.
    5. Κάντε κλικΦινλανδικά.
  5. Προσθέστε το ακόλουθο μέλος για τοΣύνδεσηCLASS:
    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. Για να το κάνετε αυτό, ακολουθήστε τα εξής βήματα: (Use the tools in the Windows Recovery Environment to repair Windows Vista. To do this, follow these steps:):
    1. Στο διακομιστήΔημιουργίαμενού, κάντε κλικ στο κουμπίΔημιουργία MyCOMAddin. Σημειώστε ότι τη δόμηση του προσθέτου COM καταγράφει της κλάσης .NET με τη διαλειτουργικότητα COM.
    2. Ξεκινήσετε μία από τις εφαρμογές του Office που έχετε επιλέξει ως κύριες εφαρμογές για το πρόσθετο (για παράδειγμα, το Microsoft Word ή το Microsoft Excel).
    3. Αφού το πρόσθετο έχει ξεκινήσει, τοOnConnectionσυμβάν που ενεργοποιείται και θα εμφανιστεί ένα πλαίσιο μηνύματος. Όταν κλείσετε το πλαίσιο μηνύματος, τοOnStartupCompleteΠυροδοτείται συμβάντων, και θα εμφανιστεί ένα δεύτερο παράθυρο μηνύματος. Κλείσετε το πλαίσιο μηνύματος.
    4. Σημειώστε ότι το πρόσθετο Προσθήκη νέου προσαρμοσμένου κουμπιού με τη λεζάντα "My προσαρμοσμένου κουμπιού" στη βασική γραμμή εργαλείων.
    5. Κάντε κλικΜου προσαρμοσμένου κουμπιού. Για ναΚάντε κλικαπό το πρόσθετο χειρισμού συμβάντων για το κουμπί και θα εμφανιστεί ένα πλαίσιο μηνύματος. Κλείσετε το πλαίσιο μηνύματος.
    6. Έξοδος από την εφαρμογή του Office.
    7. Κατά την έξοδο από την εφαρμογή τουOnBeginShutDownΠυροδοτείται συμβάντων, και θα εμφανιστεί ένα πλαίσιο μηνύματος. Κλείσετε το πλαίσιο μηνύματος για να τερματίσετε την επίδειξη.

Αναφορές

Για πρόσθετες πληροφορίες σχετικά με τη δημιουργία προσθέτων COM, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
190253ΠΛΗΡΟΦΟΡΙΕΣ: Σχεδιαστές VB6 δεν λειτουργούν σε VB5
Για περισσότερες πληροφορίες σχετικά με την ανάπτυξη λύσεων που βασίζονται στο Web για τον Microsoft Internet Explorer, επισκεφθείτε τις ακόλουθες τοποθεσίες της Microsoft στο Web:
http://msdn2.Microsoft.com/en-us/IE/Default.aspx

http://support.microsoft.com/iep
(c) Microsoft Corporation 2001, όλα τα δικαιώματα κάθε νόμιμου δικαιώματος. ΕΙΣΦΟΡΕΣ από Ranjit R. Sawant, Microsoft Corporation.

Ιδιότητες

Αναγν. άρθρου: 302896 - Τελευταία αναθεώρηση: Δευτέρα, 20 Δεκεμβρίου 2010 - Αναθεώρηση: 2.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
Λέξεις-κλειδιά: 
kbautomation kbhowtomaster kbmt KB302896 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της 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