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

للحصول على إصدار Microsoft Visual C#.NET من هذه المقالة، راجع 302901 .

للحصول على إصدار Microsoft Visual Basic 6.0 من هذه المقالة، راجع 238228 .

للحصول على إصدار Microsoft Visual c + + 6.0 من هذه المقالة، راجع 230689 .

في هذه المهمة

ملخص

Microsoft Office 2000 ودعم أحدث جديد، متساوية العمارة والتصميم لإنشاء الوظائف الإضافية للتطبيق لتحسين والتحكم في تطبيقات Office. وتسمى هذه الوظائف الإضافية COM الإضافية. يناقش المكتب وظائف COM الإضافية هذه المقالة خطوة بخطوة وتصف كيفية إنشاء وظيفة الإضافية Office COM باستخدام 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 -الوظيفة الإضافية بواسطة المضيف عند بدء تشغيل التطبيق. يتم التحكم بسلوك هذا الإعداد في التسجيل.
  • أدينينست -مرجع إلى كائن COMAddIn الذي يشير إلى هذه الوظيفة الإضافية في مجموعة وظائف com الإضافية للتطبيق المضيف.
  • مخصص -صفيف من القيم نوع متغير يمكن أن يحتوي على بيانات معرفة من قبل المستخدم.

OnDisconnection

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

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

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

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

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

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

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

تسجيل الوظيفة الإضافية 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 تسمى كوماندلينيسافي للإشارة إلى ما إذا كانت الوظائف الإضافية الأمن للعمليات التي لا تدعم واجهة مستخدم. تشير مة 0x00 إلى False، وتشير قيمة 0x01 إلى True.


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

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

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

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

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

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

  1. في القائمة " ملف " في Microsoft Visual Studio.NET انقر فوق جديد، ومن ثم انقر فوق المشروع.
  2. في مربع الحوار مشروع جديد ، توسيع مشاريع أخرى ضمن أنواع المشاريعوتحديد المشاريع القابلة للتوسعةوثم حدد قالب الوظيفة الإضافية المشتركة .
  3. اكتب ميكومادين كاسم الوظيفة الإضافية، ومن ثم انقر فوق موافق.
  4. عندما يظهر "معالج القابلية للتوسعة"، اتبع الخطوات التالية:
    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. للقيام بذلك، اتبع الخطوات التالية:
    1. من القائمة إنشاء ، انقر فوق إنشاء ميكومادين. لاحظ أن إنشاء الوظيفة الإضافية COM تسجيل فئة.NET مع توافق COM.
    2. بدء تشغيل أحد تطبيقات Office الذي قمت بتحديده كالتطبيقات المضيفة للوظيفة الإضافية الخاصة بك (على سبيل المثال، Microsoft Word أو Microsoft Excel).
    3. بعد بدء الوظيفة الإضافية, الحدث OnConnection ، وظهور مربع رسالة. عندما قمت باستبعاد مربع الرسالة،
      تشغيل الحدث أونستارتوبكومبليتي ، ويظهر مربع رسالة ثانية. إغلاق مربع الرسالة.
    4. لاحظ أن الوظيفة الإضافية إضافة زر مخصص جديد مع التسمية التوضيحية "زر مخصص جهاز" إلى شريط الأدوات قياسي.
    5. انقر فوق الزر المخصص الخاص بي. تتم معالجة الحدث Click للزر بالوظيفة الإضافية وظهور مربع رسالة. إغلاق مربع الرسالة.
    6. قم بإنهاء تطبيق Office.
    7. عند إنهاء التطبيق، تشغيل الحدث OnBeginShutDown ، ويظهر مربع رسالة. إغلاق مربع الرسالة لإنهاء العرض التوضيحي.

المراجع

لمزيد من المعلومات حول كتابة وظائف COM الإضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
معلومات 190253 : مصممي VB6 لا تعمل في VB5
لمزيد من المعلومات حول تطوير الحلول المستندة إلى ويب ل Microsoft Internet Explorer، قم بزيارة مواقع Microsoft التالية على الويب:(ج) Microsoft Corporation 2001، جميع الحقوق محفوظة. المساهمات المقدمة من عمرو ر. ساوانت، شركة Microsoft.

خصائص

رقم الموضوع: 302896 - آخر مراجعة: 18‏/01‏/2017 - المراجعة: 1

تعليقات