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

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

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

Περίληψη

Microsoft Office XP, το Microsoft Office 2003 και το Microsoft Office 2007 υποστηρίζει μια ομοιόμορφη σχεδίαση αρχιτεκτονική για τη δημιουργία εφαρμογών πρόσθετα για να βελτιώσετε και να ελέγχετε τις εφαρμογές του Office. Τα πρόσθετα αυτά ονομάζονται Microsoft Component Object Model (COM) τα πρόσθετα. Αυτό το άρθρο βήμα προς βήμα περιγράφει τα πρόσθετα COM του Office και περιγράφει τον τρόπο δημιουργίας ενός πρόσθετου COM του Office χρησιμοποιώντας το Microsoft Visual C# .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καλείται η μέθοδος, μόνο αν ο κεντρικός υπολογιστής αποσυνδέεται το πρόσθετο κατά τον τερματισμό λειτουργίας.

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

Πρόσθετο COM δήλωσης

In addition to normal COM registration, a COM add-in needs to register itself with each Office application in which it runs. To register itself with a particular application, the add-in should create a subkey, using its ProgID as the name for the key, under the following location:
HKEY_CURRENT_USER\Software\Microsoft\Office\<officeapp>\Addins\<progid></progid></officeapp>
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 that is named 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 C# .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 .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 C# .NET, follow these steps:
  1. In Visual C# .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 C# .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 C#, και στη συνέχεια κάντε κλικ στο κουμπίΕπόμενο.
    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. Στο διακομιστήΤο έργομενού, κάντε κλικ στο κουμπίΠροσθήκη αναφοράς. Κάντε κλικSystem.windows.forms.dllστη λίστα των στοιχείων, κάντε κλικ στο κουμπίΕπιλογή, και στη συνέχεια κάντε κλικ στο κουμπίOk.
  6. Προσθέστε τα ακόλουθα στη λίστα των χώρων ονομάτων με τοΣύνδεσηCLASS:
    using System.Reflection;
  7. Προσθέστε το ακόλουθο μέλος για τοΣύνδεσηCLASS:
    private CommandBarButton MyButton; 
  8. Υλοποίηση του κώδικα για τα μέλη τηςIDTExtensibility2ΣτοΣύνδεσηη κλάση, ως εξής:
    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. Δημιουργήσετε και δοκιμάσετε το πρόσθετο COM. Για να το κάνετε αυτό, ακολουθήστε τα εξής βήματα: (Use the tools in the Windows Recovery Environment to repair Windows Vista. To do this, follow these steps:):
    1. Στο διακομιστήΔημιουργίαμενού, κάντε κλικ στο κουμπίΔημιουργία λύσεων. Σημειώστε ότι τη δόμηση του προσθέτου COM καταγράφει της κλάσης .NET με τη διαλειτουργικότητα COM.
    2. Ξεκινήσετε μία από τις εφαρμογές του Office που έχετε επιλέξει ως κύριες εφαρμογές για το πρόσθετο (για παράδειγμα, το Microsoft Word ή το Microsoft Excel).
    3. Αφού το πρόσθετο έχει ξεκινήσει, τοOnStartupCompleteσυμβάν από το πρόσθετο ενεργοποιείται και λαμβάνετε ένα μήνυμα. Κλείσετε το πλαίσιο μηνύματος. Σημειώστε ότι το πρόσθετο Προσθήκη νέου προσαρμοσμένου κουμπιού με τη λεζάντα "My προσαρμοσμένου κουμπιού" στη βασική γραμμή εργαλείων.
    4. Κάντε κλικΜου προσαρμοσμένου κουμπιού. Για ναΚάντε κλικαπό το πρόσθετο χειρισμού συμβάντων για το κουμπί και θα εμφανιστεί ένα πλαίσιο μηνύματος. Κλείσετε το πλαίσιο μηνύματος.
    5. Έξοδος από την εφαρμογή του Office.
    6. Κατά την έξοδο από την εφαρμογή τουOnBeginShutDownΠυροδοτείται συμβάντων, και θα εμφανιστεί ένα μήνυμα. Κλείσετε το πλαίσιο μηνύματος για να τερματίσετε την επίδειξη.

Αναφορές

Για πρόσθετες πληροφορίες σχετικά με τη δημιουργία προσθέτων COM, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
190253ΠΛΗΡΟΦΟΡΙΕΣ: Σχεδιαστές VB6 δεν λειτουργούν σε VB5

Ιδιότητες

Αναγν. άρθρου: 302901 - Τελευταία αναθεώρηση: Δευτέρα, 20 Δεκεμβρίου 2010 - Αναθεώρηση: 3.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Excel 2007
  • 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 Word 2002 Standard Edition
Λέξεις-κλειδιά: 
kbautomation kbhowtomaster kbmt KB302901 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:302901

Αποστολή σχολίων

 

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