نموذج: MFCAxs.exe بتنفيذ النشطة Script Host استخدام MFC

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

اضغط هنا لرابط المقالة باللغة الانجليزية168214
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
هي MFCAxs.exe نموذج يحتوي على MfcAxscrVb. MfcAxscrVb نموذج إرشادي "البرمجة النشطة" مضيف كتابة باستخدام MFC. أن يستضيف DLL VBScript; ومع ذلك، آليات "البرمجة النشطة" العام إلى أي محرك "البرمجة النشطة". يُظهر MfcAxscrVb طريقة ممكنة واحدة فقط توفر كائنات الإرسال من المضيف لتطبيق واجهات "برمجة نصية نشطة" المضيف ثم الاتصال رسائل الإطارات في المضيف مع أحداث تشغيل إلى محرك البرمجة النصية.

يتضمن MfcAxscrVb ملف مساحة العمل "و" مشروع 5.0 Visual C++. على الرغم من أنه يتم توفير أي VC ++ 4.2 makefile متوافق أو mdpfile التعليمات البرمجية لمصدر MfcAxscrVb يتوافق مع MFC 4.2b.

المتطلبات المسبقة: COM التنفيذ
معلومات أخرى
يتوفر الملف التالي للتنزيل من "مركز التنزيل لـ Microsoft":
للحصول على معلومات إضافية حول كيفية تنزيل ملفات دعم Microsoft "، انقر فوق رقم المقالة التالي لعرضها في" قاعدة المعارف لـ Microsoft:
119591كيفية الحصول على ملفات دعم Microsoft من الخدمات عبر الإنترنت
قامت Microsoft بفحص هذا الملف بحثًا عن الفيروسات. استخدام Microsoft أحدث من برنامج كشف الفيروس المتوفر على التاريخ الذي تم نشر الملف. يتم تخزين الملف على ملقمات محسنة الأمان التي تساعد على منع إجراء أية تغييرات غير مصرح بها على الملف.

يستخدم في نموذج

عند تشغيل نموذج MfcAxscrVb ستلاحظ عنصر تحكم تحرير كبيرة الحجم في الركن الأيمن العلوي من التطبيق. يمكنك لصق أو الزر نوع البرنامج النصي في هذا الإطار ثم حدد "تشغيل برنامج" استدعاء البرنامج النصي. يتم توفير العديد من البرامج النصية اختبار لك في Script.txt وملفات Testevents.txt.

المضيف تعرضه: إرسال كائنات

يكون التركيز الرئيسي للحصول على هذه العينة تطبيق الإرسال الكائنات باستخدام MFC. سبب هذا أمراً بسيطاً. لغة البرمجة نصية غير كبيرة الاستخدام إذا لم يكن هناك أي شيء إلى البرنامج النصي.

تقنية المركزي "البرمجة النشطة" كافة يعتمد الذي معظم بالتأكيد التي من التنفيذ. معرفة بالعمل خالص التنفيذ الضرورة قبل محاولة رمز أي مضيف "البرمجة النشطة". هناك عدة مراجع جيدة للحصول على التنفيذ: فصول 14 و 15 من الخاص Brockshmidt "داخل OLE ،" الفصل 11 ميرفت Rogerson "داخل COM" و "للمبرمجين أتمتة OLE المرجع."

CCmdTargetPlus:

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

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

إرسال كائنات:

يتم تنفيذ كافة الكائنات الإرسال المتوفرة من قبل المضيف باستخدام CCmdTargetPlus. توجد بعض الأشياء التي تحتاج إلى القيام للعمل بشكل جيد. العودة إلى أي كائن الإرسال (CAButtonDispatch CBButtonDispatch ، وما) متداول على ما هو الضرورية. يتم سرد rundown مختصراً على طراز الكائن الخاص MfcAxscrvb في نهاية هذا المستند.

إذا قمت بإضافة الكائنات الخاصة بك تأكد من راجع ثلاثة GUIDs فريد الإرسال الأساسي و واجهات الأحداث الأساسية ومن أجل clsid لكائن في المجموع. يحتاج هذا إلى أن تتم في ملف تطبيق وفي ملف .odl. (قص ولصق يساعد هنا.) قص لصق كافة وحدات الماكرو المعالج فئة ثم ثم تغييرها إلى اسم الفئة الجديدة. معالج فئة معينة جداً ولكن في حالة اتباع كل شيء فقط اليمين في .odl و .h و .cpp الملفات يمكنك استخدامه لإضافة أحداث جديدة الخصائص، و الكائن أساليب الإرسال الخاص بك كما لو كان MFC OLE التحكم. وهو سهل الاستخدام sort.

يحتفظ MfcAxscrVb كائن تنفيذ آليات الإرسال منفصلة من الكائن MFC فعلياً يتم الإشارة إلى. على سبيل المثال، يحتوي مربع الحوار زر يسمى في "AButton," والذي للسماح بتشغيل البرامج النصية. هو كائن الزر MFC CButton. فئة مشتقة CCmdTargetPlus ، CAButtonDispatch ، منفصلة مميزة. هذا نقطة مفتاح. فقط ما للمبرمج المضيف بشكل صريح اختيار لعرض الكائنات MFC الأساسية وعناصر التحكم Windows سيتم للسماح بتشغيل البرامج النصية.

CeventsListBox CEventsButton CEventsEdit ،:

الأحداث, هناك يجب أن تكون بعض التعليمات البرمجية التي تستجيب Windows الحدث--تقول ، انقر فوق زر--ويقوم بإنشاء حدث مشغل البرامج النصية. (تذكر حدث استدعاء على واجهة تمت معالجتها بواسطة نقاط اتصال في كائن مضيف إرسال.) accomplishes هذا النموذج هذا عن طريق إضافة معالجات رسالة MFC القياسية إلى كائنات مشتقة من الفئات المختلفة. لدى كل هذه معالجات فقط لاستدعاء FireEvent (موافقة من التعليمات البرمجية إضافة إلى CCmdTargetPlus) على كائن الإرسال. كل شيء آخر يحدث تلقائياً.

لأن كائن الإرسال والكائن إطار MFC الفعلي المنفصلة في هذه العينة ، يلزم الأصل الحوار بشكل صريح ربط الاثنين معاً. يتم إجراء ذلك في منشئ Mfcaxscrvbdlg.

العناصر المسماة

بمجرد أن يكون لديك الكائنات الإرسال لديك إعداد عليها بحيث يعرف مشغل البرامج النصية حولها. المجموعة من كافة الكائنات الإرسال المسماة يعرف مشغل البرامج النصية حول تسمى "Script Namespace." تتم إضافة العناصر إلى مساحة اسم البرنامج النصي من خلال أسلوب IActiveScript::AddNamedItem. كما ذكر مسبقاً وهو duty المضيف تطبيق IDispatch للكائن ودعم معلومات نوع خلال ITypeInfo للكائن. عندما يحتاج مشغل البرنامج النصي في حل مرجع إلى عنصر مسمى ، يستخدم الأسلوب IActiveScriptSite::GetItemInfo لطلب على مؤشر IUnknown (وهو يستعلم العرض على IDispatch) ومؤشر ITypeInfo.

لا شيء يريد مضيف تكون للسماح بتشغيل البرامج النصية يجب أن يكون عنصر مسمى. عادةً سوف يكون لدى المضيف التسلسل هرمي لكائنات حيث sub-objects إليها طريق كائن المستوى أعلى. metaphor شائعة هي "تطبيق"-> المستند-> التسلسل الهرمي عنصر حيث كائن المستند يمكن الوصول إليها من الكائن تطبيق المستوى الأعلى كخاصية IDispatch الكائن تطبيق نفسه. بنفس الطريقة الكائن المستند نفسه كشف sub-objects عدة ويكون كل عنصر يمكنك الحصول على عبر صفيف عنصر أو contrivance الأخرى.

باستخدام هذا النظام ، محرك البرمجة النصية يكون الذكية كافية للانتقال إلى sub-item عند ظهور رمز البرنامج النصي التالي دون الحاجة إلى المستند أو العنصر لتتم إضافته إلى مساحة اسم البرنامج النصي:
Set Obj = Application.Document.Item(1)				
طالما كما sub-objects يتعرض كـ الحصول على خصائص الكائن الأصل الخاصة بها ، مشغل البرامج النصية يعثر عليها بنجاح. interestingly كافية, مشغل البرنامج النصي أن "تفترض" العنصر ذي المستوى الأعلى في التسلسل الهرمي. ماذا يعني ذلك أن يتم التصريح عن تطبيق عنصر المستوى الأعلى, ثم فمن كافية قل يلي للحصول على التعليمات البرمجية النصية السابقة:
Set Obj = Document.Item(1)				
هذا تماماً كيفية Internet Explorer 3.0 يسمح لك التعليمات البرمجية النصية في السياق الخاص بالكائن Window دون دوماً prefixing كافة المراجع إلى كائنات مع "إطار". يحتاج مضيف البرنامج نصي إلى تعريف العنصر البرنامج النصي المستوى الأعلى في استدعاء AddNamedItems باستخدام العلامة SCRIPTITEM_GLOBALMEMBERS. ما عادةً غير أجراها قم بإلغاء تحديد خانة الاختيار وثائق "البرمجة النشطة" لكن, يتم التي العناصر المسماة فقط يمكنها أن تدعم الأحداث. باستخدام المثال أعلاه, هناك لم قل التالية لمعالجة حدث في عنصر بعينه بناء الجملة:
   Sub Application.Document.Item(1)_OnEvent ' this doesn't work!				
ولذلك بالنسبة MfcAxscrvbdlg ، لأن نحن نريد تكون قادراً على معالجة الأحداث كل كائن في التسلسل الهرمي، كل كائن تتم إضافة مثل "عنصر مسمى". كل كائن أيضاً الوصول إليها من خلال كائن Scripter المستوى الأعلى (مربع الحوار نفسه) ، والذي لا يعتمد الأحداث حالياً.

التحكم WebBrowser:

في هذه العينة مضيف البرنامج النصي الكشف عن كائن خارجي واحد فقط إلى مساحة اسم البرنامج النصي. هذا هو التحكم WebBrowser يستضيفها في مربع الحوار الخاص بـ MFC دعم الاحتواء التحكم الافتراضية. كل ما تحتاجه هو لتنفيذها إرسال AddRef المؤشر إلى عنصر التحكم ثم تقوم بتعيين. أحداث ، يحتاج الكائن الخارجي لعرض مؤشر ITypeInfo ما. يحصل هذا MfcAxscrVb خلال IProvideClassInfo::GetClassInfo. كحل أخير ، يتمكن مضيف قراءة الكائن - معلومات النوع نفسه لعرض ITypeInfo. ولحسن الحظ، يدعم عنصر التحكم WebBrowser GetClassInfo ، بحيث لا MfcAxscrVb من القيام بذلك.

إذا أردت إضافة كائنات أخرى التنفيذ التلقائي الخارجية إلى مساحة الاسم كل عادةً الضرورية الحصول على واجهة IUnknown باستخدام CoCreateInstance. بدلاً من ذلك، يمكن أن تعتمد المضيف يعني عام للحصول على كائنات خارجية albeit الذي لا تحتاج إلى أن تتم معالجة الأحداث. في Visual Basic، يتم استدعاء الدالة لتنفيذ CreateObject.

الوصول إلى التطبيقات الأخرى: HostCreateObject

آخر غير مجموعة الخصائص المستخدمة لعرض كافة الكائنات التابعة الكائن Scripter الرئيسي (الفئة الحوار نفسه) الكشف عن أسلوب خاصة واحد فقط. يوضح هذا الأسلوب بسيطة يعني إجراء محاكاة دالة CreateObject الخاص VB. لاحظ المسمى الأسلوب HostCreateObject لإبراز لم يتم توفير هذا الأسلوب الحرة مشغل البرنامج النصي ولكن يجب أن تقوم بتنفيذ المضيف فإنه نفسه. بعض الأجهزة المضيفة بوضوح لا ترغب في توفير هذه القدرة لأسباب تتعلق بالأمان ، IE3 مثال الأساسية. الهدف الأساسي من HostCreateObject لإرجاع المؤشر الإرسال الكائن المطلوب. عندما يكون لدى محرك البرمجة النصية المؤشر الإرسال, أن يعرف ما يجب القيام به من هناك.

ملاحظة: باسم من الإصدار 2.0 مشغّلات VBScript و JScript الآن يعتمد CreateObject مثل دالة مضمنة. المضيف لا تحتاج لتنفيذ هذه الوظيفة. ومع ذلك، سوف ، هذه الدالة اختبار كائن تأكد من أنه آمن للبرمجة قبل السماح الكائن المراد استخدامها. deem نفسها كائنات آمن للبرمجة بواسطة دعم واجهة IObjectSafety أو وضع علامة على إدخالات التسجيل "فئة المكون" المناسبة لـ آمن - بالنسبة - البرمجة. تشير إلى قاعدة معارفMicrosoft للحصول على مزيد من المعلومات.

دعم معالج فئة

هو البت قليل آخر trickery في MfcAxscrVb المعالجات التي تم إجراؤها على دعم ClassWizard. الفئة معالج ، تقنيًا غير "dumb." يتم فقط mentally اختبر عليه. وهو حد ملائم لإجراء ما يقوم لكن تذكر أن فقط blindly يبحث الملفات تبحث عن تلك التعليقات ClassWizard خاصة. علامات حالة اتباع التنسيق لـ COleControl التي يمكن فقط حول الحصول على الفور باستخدام التنفيذ الخاص ClassWizard والأحداث جدولة.

complication واحد يستخدم MfcAxscrVb اشتقاق في بعض التسلسل الهرمي الكائن الخاص به. كافة الكائنات الزر المشتقة من كائن CButtonDispatch شائعة الكشف عن الخصائص والأساليب التي بها بشكل فردي تدعم. ومع ذلك، عندما يتعلق الأمر الوقت لتعبئة الملف .odl يحتاج كل كائن الفردية تحتوي على كافة الخصائص والأساليب الفئة الأصل. needless إلى قل هذا هو الانتقال إلى تخلط بين "معالج فئة" عند الحديث عن الوقت إلى رقم DISPIDs. إذا كنت تستخدم "معالج فئة" تأكد من راجع DISPIDs الذي تم إنشاؤه في مكانين: ملف .odl فئة التنفيذ التلقائي "و" التعداد داخل تعريف الفئة. عند العمل مع الفئات المشتقة الزر, من السهل مشاهدة DISPID نفس تعيين الخصائص و الأساليب. أسهل بكثير لتصحيح DISPIDs ، بالرغم من ذلك، من إضافة كل شيء قبل البداية ، لذا الوظيفة تم ترك في MfcAxscrVb.

باستخدام Visual C++ 5.0 الدعم المحسن من IDL أساليب وخصائص خلال ClassView ، وهو يطرد حتى ما إذا كان هناك حاجة ClassWizard أم لا. ولكن MfcAxscrVb يدعم ذلك الآن. استمتع.

الملحق أ: نموذج كائن

scripter:

هذا هو كائن الرئيسية يتم اشتقاق كافة الكائنات الأخرى. قد يكون "IMfcaxscrvbDlg" في ملف .odl إلا إضافة أنها عنصر مسمى "Scripter." يكون له أسلوب واحد HostCreateObject الموضحة أعلاه.

كائنات زر:

AButton BButton RunScript CancelButton OKButton ،

خصائص
  • التسمية التوضيحية: نص وجه الزر.
أساليب اضغط: وكأن تم الضغط على الزر.
  • اضغط: وكأن تم الضغط على الزر.
الأحداث
  • عند_النقر: تشغيل عند الضغط على زر.
  • OnMouseOver: تشغيل عندما تتحرك الماوس فوق الزر.
  • تشغيل OnFocus(bSet): عند إعطاء التركيز أو أخذ من الزر.
BroCon:

BroCon هو اسم عنصر التحكم WebBrowser في مربع الحوار. يعتمد كافة الخصائص والأساليب كما توثيق في SDK SDK/ActiveX عميل إنترنت لعنصر التحكم WebBrowser.

EditCon:

أساليب
  • إضافة AppendLine(strToAdd): strToAdd لإنهاء من إطار تحرير النص.
  • InsertLine (strToAdd ، nWhere): إضافة strToAdd في #nWhere سطر.
  • RemoveLine(nWhere): إزالة # nWhere سطر من إطار تحرير.
الأحداث
  • OnMouseOver: تشغيل عندما تتحرك الماوس فوق الإطار.
  • OnChar(strChar): تشغيل عند إدخال حرف strChar إلى الإطار.
  • تشغيل OnFocus(bSet): عند إعطاء التركيز أو أخذ من الزر.
Lbox:

أساليب
  • AddString(strIn): إضافة StrIn في مربع القائمة.
  • ClearList: مسح كافة السلاسل من مربع القائمة.
  • RemoveString(strRemove): إزالة أول مثيل StrRemove ثم إزالتها من مربع القائمة.
  • SelectString(strSelect): يحدد سلسلة الأحرف المحددة من قبل strSelect.
الأحداث
  • OnMouseOver: تشغيل عندما تتحرك الماوس فوق الإطار.
  • تشغيل OnFocus(bSet): عند إعطاء التركيز أو أخذ من الزر.
  • OnSelCancel(strCancelled): عند التحديد يتم إلغاء في strCancelled عنصر "مربع قائمة.
  • OnSelChange(strChange): عندما strChange عنصر "مربع قائمة تحديد بواسطة المستخدم.

خصائص

رقم الموضوع: 168214 - آخر مراجعة: 01/30/2014 02:57:41 - المراجعة: 2.2

Microsoft Internet Explorer 3.01, Microsoft Internet Explorer 3.02, Microsoft Internet Explorer 4.0 128-Bit Edition, Microsoft Internet Explorer 4.01 Service Pack 2, Visual Basic, Scripting Edition 1.0, Microsoft Visual Basic, Scripting Edition 1.1, Visual Basic, Scripting Edition 2.0, Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kbdownload kbfile kbinfo kbsample KB168214 KbMtar
تعليقات