كيفية إنشاء وظيفة الإضافية Office COM باستخدام Visual C#.NET

انتهاء دعم Office 2003

لقد أنهت شركة Microsoft دعم Office 2003 في 8 أبريل، 2014. وقد أثر هذا التغيير على تحديثات البرامج لديك وخيارات الأمان الخاصة بك. تعرف على ما يعنيه ذلك فيما يتعلق بك وكيفية الحفاظ على حمايتك.

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية302901
للحصول على إصدار Microsoft Visual Basic.NET من هذه المقالة، راجع 302896.
للحصول على إصدار Microsoft Visual Basic 6.0 من هذه المقالة، راجع 238228.
للحصول على إصدار Microsoft Visual c + + 6.0 من هذه المقالة، راجع 230689.

في هذه المهمة

الموجز
Microsoft Office XP، Microsoft Office 2003 و Microsoft Office 2007 يعتمد بنية موحدة تصميم لإنشاء الوظائف الإضافية للتطبيق لتحسين والتحكم في تطبيقات Office. تسمى هذه الوظائف الإضافية ل Microsoft طراز كائن المكون (COM) الوظائف الإضافية. يناقش المكتب وظائف COM الإضافية هذه المقالة خطوة بخطوة وتصف كيفية إنشاء وظيفة الإضافية Office COM باستخدام Microsoft Visual C#.NET.

back to the top

واجهة IDTExensibility2

وظائف COM الإضافية هو خادم COM قيد التشغيل، أو مكتبة الارتباط الديناميكي ActiveX (DLL)، يقوم بتنفيذ واجهة IDTExensibility2 كما هو موضح في مكتبة النوع مصمم Microsoft الإضافية (Msaddndr.dll). كافة وظائف COM الإضافية ترث من هذه الواجهة ويجب تطبيق كل من أساليب الخمسة.

back to the top

OnConnection

وقع الحدث OnConnection كلما كان الاتصال وظائف COM الإضافية. الوظيفة الإضافية قد تكون متصلاً عند بدء التشغيل، عن طريق المستخدم أو من خلال التنفيذ التلقائي. إذا حدث OnConnection بنجاح، الوظيفة الإضافية التي يقال أن يتم تحميلها. إذا تم إرجاع رسالة خطأ، التطبيق المضيف فورا بإصدار المراجع الخاصة به إلى الوظيفة الإضافية، وإتلاف الكائن.

الحدث OnConnection يأخذ المعلمات الأربع التالية:
  • التطبيق: مرجع إلى كائن التطبيق المضيف.
  • ConnectMode: عبارة عن ثابت يحدد كيفية الوظيفة الإضافية متصل. زياد في يمكن أن تكون مرتبطة بالطرق التالية:
    • ext_cm_AfterStartup: الوظيفة الإضافية يتم تشغيله بواسطة المستخدم من مربع حوار وظائف COM الإضافية .
    • ext_cm_CommandLine: الوظيفة الإضافية المتصلة من سطر الأوامر. لاحظ أن هذا لا ينطبق على إنشاء وظائف COM الإضافية لتطبيقات Office.
    • ext_cm_External: الوظيفة الإضافية المتصلة بتطبيق خارجي من خلال التنفيذ التلقائي. لاحظ أن هذا لا ينطبق على إنشاء وظائف COM الإضافية لتطبيقات Office.
    • ext_cm_Startup: الوظيفة الإضافية يتم تشغيله بواسطة المضيف عند بدء تشغيل التطبيق. يتم التحكم بسلوك هذا الإعداد في التسجيل.
  • أدينينست: مرجع إلى كائن COMAddIn الذي يشير إلى هذه الوظيفة الإضافية في مجموعة وظائف com الإضافية للتطبيق المضيف.
  • مخصص: صفيف من القيم نوع متغير يمكن أن يحتوي على بيانات معرفة من قبل المستخدم.
back to the top

OnDisconnection

وقع الحدث OnDisconnection عندما يتم قطع وظائف COM الإضافية وقبل إلغاء تحميل من الذاكرة. الوظيفة الإضافية يجب تنفيذ عملية تنظيف أي الموارد في هذا الحدث، واستعادة أية تغييرات للتطبيق المضيف.

يأخذ الحدث OnDisconnection المعلمتين التاليتين:
  • ريموفيمودي: عبارة عن ثابت يحدد كيفية الوظيفة الإضافية التي تم قطع الاتصال. زياد في يمكن قطع الاتصال بالطرق التالية:
    • ext_dm_HostShutdown: الوظيفة الإضافية غير متصل عند إغلاق التطبيق المضيف.
    • ext_dm_UserClosed: الوظيفة الإضافية غير متصل عن طريق المستخدم أو وحدة تحكم التنفيذ تلقائي.
  • مخصص: صفيف من القيم نوع متغير يمكن أن يحتوي على بيانات معرفة من قبل المستخدم.
back to the top

أونادينسوبداتي

وقع الحدث أونادينسوبداتي عند تغيير مجموعة المسجلة وظائف COM الإضافية. وبعبارة أخرى، كلما وظائف COM الإضافية تم تثبيتها أو إزالتها من التطبيق المضيف، وقع هذا الحدث.

back to the top

أونستارتوبكومبليتي و OnBeginShutdown

كل طريقة أونستارتوبكومبليتي طريقة OnBeginShutdown تسمى وعند ترك التطبيق المضيف أو يتم إدخال حالة المستخدم التفاعل يجب تجنبها لأن التطبيق مشغول تحميل أو إلغاء تحميل نفسه من الذاكرة. يتم استدعاء الأسلوب أونستارتوبكومبليتي فقط إذا كانت الوظيفة الإضافية تم اتصال أثناء بدء التشغيل، ويتم استدعاء الأسلوب OnBeginShutdown فقط إذا تم قطع اتصال المضيف الوظيفة الإضافية أثناء إيقاف التشغيل.

لأن واجهة المستخدم للتطبيق المضيف نشط بشكل كامل عند إطلاق هذه الأحداث، قد تكون هذه الطريقة الوحيدة لتنفيذ إجراءات معينة وإلا ستكون متوفرة من الحدث OnConnection والحدث OnDisconnection .

back to the top

تسجيل الوظيفة الإضافية COM

وبالإضافة إلى تسجيل COM العادي، وظائف COM الإضافية يحتاج إلى تسجيل نفسه مع كل تطبيق من تطبيقات Office التي تشغل فيه. لتسجيل نفسه مع تطبيق معين، الوظيفة الإضافية يجب إنشاء مفتاح فرعي، استخدام ProgID الخاص به كاسم للمفتاح، في الموقع التالي:
HKEY_CURRENT_USER\Software\Microsoft\Office\<OfficeApp>\Addins\<ProgID>
الوظيفة الإضافية التي توفر القيم الموجودة في هذا الموقع الرئيسية لكل من اسم عرض مألوف ووصف كامل. وبالإضافة إلى ذلك، الوظيفة الإضافية يجب تحديد سلوك التحميل المطلوب باستخدام قيمة DWORD تسمى LoadBehavior. تحدد هذه القيمة كيف الوظيفة الإضافية يتم تحميله من قبل التطبيق المضيف وتتكون من تركيبة من القيم التالية:
  • 0 = قطع الاتصال-لم يتم تحميل.
  • 1 = متصل-يتم تحميله.
  • 2 = بوتلواد-التحميل على بدء تشغيل التطبيق.
  • 8 = demandLoad-تحميل فقط في حالة بيوسير.
  • 16 = كونيكتفيرستيمي-التحميل مرة واحدة فقط (على نيكستستارتوب).
القيمة النموذجية المحددة هي 0x03 (متصل | بوتلواد).

يجب أيضا تحديد الوظائف الإضافية التي تقوم بتنفيذ IDTExtensibility2 قيمة DWORD تسمى
CommandLineSafe
للإشارة إلى ما إذا كانت الوظائف الإضافية الأمن للعمليات التي لا تدعم واجهة مستخدم. تشير مة 0x00 إلى False، وتشير قيمة 0x01 إلى True.

back to the top

كيفية إنشاء وظائف COM الإضافية باستخدام Visual C#.NET

كما ذكر آنفا، في Office COM هو خادم COM في عملية تنشيط بواسطة تطبيق Office من خلال طبقة COM وقت التشغيل. ولذلك، يتطلب تطوير وظيفة COM الإضافية في.NET يمكن تنفيذها في.NET المكونات الإضافية وثم يتعرض لعملاء COM (أي تطبيقات Office) عبر طبقة توافق COM.

لإنشاء وظائف COM الإضافية في Visual C#.NET، اتبع الخطوات التالية:
  1. في Visual C#.NET، إنشاء "ليبراريبروجيكت فئة".
  2. إضافة مرجع إلى نوع المكتبة التي تقوم بتنفيذ IDTExtensibility2. تجميع التوافق الأساسي لهذا بالفعل اسم أونديرثي توفر القابلية للتوسعة.
  3. إضافة مرجع إلى مكتبة كائنات Microsoft Office. ثيبريماري تجميع التوافق لذلك متاحة بالفعل باسم المكتب.
  4. إنشاء فئة عامة في مكتبة الفئات التي تقوم بتنفيذ IDTExtensibility2.
  5. بعد إنشاء مكتبة الفئة، تسجيل توافق فوركوم مكتبة. للقيام بذلك، إنشاء اسم التجميع لهذا كلاسليبراري قوية وتسجيل مع توافق COM. يمكنك استخدام توريجيستير Regasm.exe.NET مكون لتوافق COM.
  6. إنشاء إدخالات التسجيل ذلك كانريكوجنيزي تطبيقات Office وتحميل الوظيفة الإضافية هذه.
يمكنك إكمال كل هذه الخطوات، أو يمكنك إنشاء مشروع.NET من نوع الوظيفة الإضافية المشتركة. يؤدي هذا إلى تشغيل "معالج القابلية للتوسعة"، مما يساعد على إنشاء وظائف COM الإضافية في.NET.

ينشئ "المعالج القابلية للتوسعة" مشروع مكتبة فئة Visual C#.NET جنبا إلى جنب مع فئة اتصال تطبيق واجهة IDTExtensibility2 . يتم أيضا إنشاء هيكل التعليمات البرمجية التي تقوم بتطبيق أعضاء إيدتيكستينسيبيليتي فارغة. هذا المشروع يحتوي على مراجع إلى التجميعات القابلية للتوسعة والمكتب. إعدادات الإنشاء المشروع يكون تسجيل لتوافق COM المحدد. يتم إنشاء ملف المفتاح (.snk) التجميع والمشار إليه في السمة أسيمبليكييفيلي في assemblyinfo.vb موجود.

جنبا إلى جنب مع مشروع مكتبة الفئة، يقوم المعالج بإنشاء مشروع إعداد التي يمكنك استخدامها لنشر في الوظيفة الإضافية COM على أجهزة الكمبيوتر الأخرى. يمكنك إزالة هذا المشروع عند الضرورة.

back to the top

مثال خطوة بخطوة

  1. في القائمة " ملف " في Microsoft Visual Studio.NET انقر فوق جديد، ومن ثم انقر فوق المشروع.
  2. في مربع الحوار مشروع جديد ، توسيع مشاريع أخرى ضمن أنواع المشاريعوتحديد المشاريع القابلة للتوسعةوثم حدد قالب الوظيفة الإضافية المشتركة .
  3. نوع ميكومادين كاسم لزياد ثم انقر فوق موافق.
  4. عندما يظهر "معالج القابلية للتوسعة"، اتبع الخطوات التالية:
    1. في الصفحة 1، حدد إنشاء الوظيفة الإضافية باستخدام Visual C #ومن ثم انقر فوق التالي.
    2. في الصفحة 2، حدد استضافة التطبيقات التالية، ومن ثم انقر فوق التالي:
      • Microsoft Word
      • Microsoft PowerPoint
      • Microsoft Outlook
      • Microsoft Excel
      • Microsoft Access
    3. في الصفحة 3، توفير اسم ووصف للوظيفة الإضافية، ومن ثم انقر فوق التالي.

      ملاحظة: الاسم ووصف للوظيفة الإضافية تظهر في مربع الحوار إضافة الوظيفة الإضافية COM في تطبيقات Office.

    4. في الصفحة 4، حدد كافة الخيارات المتاحة ومن ثم انقر فوق التالي.
    5. انقر فوق إنهاء.
  5. من القائمة ' مشروع '، انقر فوق إضافة مرجع. انقر فوق النظام في قائمة المكونات وانقر فوق تحديدثم انقر فوق موافق.
  6. أضف التالي إلى القائمة من مساحات الأسماء في الفئة الاتصال :
    using System.Reflection;
  7. إضافة الأعضاء التالية إلى الفئة الاتصال :
    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. للقيام بذلك، اتبع الخطوات التالية:
    1. في بنية القائمة، انقر فوق إنشاء حلول. لاحظ أن إنشاء الوظيفة الإضافية COM تسجيل فئة.NET مع توافق COM.
    2. بدء تشغيل أحد تطبيقات Office الذي قمت بتحديده كالتطبيقات المضيفة للوظيفة الإضافية الخاصة بك (على سبيل المثال، Microsoft Word أو Microsoft Excel).
    3. بعد بدء الوظيفة الإضافية، تشغيل الحدث أونستارتوبكومبليتي من الوظيفة الإضافية، وتتلقى رسالة. إغلاق مربع الرسالة. لاحظ أن الوظيفة الإضافية إضافة زر مخصص جديد مع التسمية التوضيحية "زر مخصص جهاز" إلى شريط الأدوات قياسي.
    4. انقر فوق الزر المخصص الخاص بي. تتم معالجة الحدث Click للزر بالوظيفة الإضافية وظهور مربع رسالة. إغلاق مربع الرسالة.
    5. قم بإنهاء تطبيق Office.
    6. عند إنهاء التطبيق، تشغيل الحدث OnBeginShutDown ، وتلقى رسالة. إغلاق مربع الرسالة لإنهاء العرض التوضيحي.
back to the top
مراجع
لمزيد من المعلومات حول كتابة وظائف COM الإضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
190253 معلومات إضافية: مصممي VB6 لا تعمل في VB5
back to the top
وظيفة إضافية الوظائف الإضافية وظائف COM الإضافية كومادين XL2003 XL2007 PPT2007 PPT2003 WD2003 WD2007 OL2003 OL2007

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 302901 - آخر مراجعة: 07/25/2015 08:37:00 - المراجعة: 11.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 KbMtar
تعليقات