تخطي إلى المحتوى الرئيسي
الدعم
تسجيل الدخول باستخدام حساب Microsoft
تسجيل الدخول أو إنشاء حساب.
مرحباً،
تحديد استخدام حساب مختلف!
لديك حسابات متعددة
اختر الحساب الذي تريد تسجيل الدخول باستخدامه.

الملخص

هذه المقالة إجابات على الأسئلة الشائعة المتعلقة بالتنفيذ التلقائي ل Microsoft Office من Visual c + +.

مزيد من المعلومات

جدول المحتويات

  1. ما هو "التنفيذ التلقائي"؟

  2. أنا جديدة على التشغيل الآلي، حيث يمكن البحث عن موارد جيدة لمعرفة المزيد؟

  3. هل هناك طرق مختلفة يمكنك استخدام التنفيذ التلقائي؟

  4. ما هو COM؟

  5. كيف يمكنني إرفاق مثيل تطبيق Office قيد التشغيل؟

  6. كيف يمكنني تمرير المعلمات الاختيارية

  7. كيف يمكنني التقاط الأحداث المعروضة بواسطة تطبيقات Office؟

  8. رمز التشغيل الآلي بطيء جداً. كيف يمكن أنا تسريع الأمور؟

  9. ماذا تعني هذه القيم الخطأ ضخمة، مثل 0x80030002، أو-2147352573؟

  10. ما هو نوع مكتبة؟

  11. رمز التشغيل الآلي وعملت مع Microsoft Excel 95، ولكن الفشل مع Microsoft Excel 97. لماذا؟

  12. لماذا تبقى أنا أشعر بأتمتة التطبيق على في الذاكرة بعد انتهاء البرنامج الخاص بي؟

  13. أنا أعرف ما أريد القيام به كمستخدم تطبيق Microsoft Office، ولكن كيف يمكن القيام بذلك برمجياً باستخدام التنفيذ التلقائي؟

  14. هل يمكن أتمتة تطبيق Microsoft Office مضمنة؟

  15. كيف يمكنني الدخول بلدي خصائص المستند في مستند Microsoft Office؟

أسئلة وأجوبة

  1. ما هو "التنفيذ التلقائي"؟ التنفيذ التلقائي (سابقا أتمتة OLE) هي تقنية تسمح لك بالاستفادة من وظائف برنامج موجود ودمجها في التطبيقات الخاصة بك. على سبيل المثال، يمكنك استخدام Microsoft Word التدقيق الإملائي والنحوي قدرات في التطبيق الخاص بك بدون Microsoft Word مرئية للمستخدمين. يمكنك حتى استخدام كافة أدوات تحليل الرسوم البيانية وطباعة بيانات Microsoft Excel. هذه التقنية إلى حد كبير تبسيط وتسريع التطوير الخاصة بك.

  2. أنا جديدة على التشغيل الآلي، حيث يمكن البحث عن موارد جيدة لمعرفة المزيد؟ الفصل 24 من "داخل Visual c + + ديفيد كروجلينسكي" (ISBN:1-57231-565 2) يوفر نظرة عامة بالإضافة إلى بعض أمثلة رائعة. أيضا، يتم Microsoft Knowledge Base مصدرا جيدا للمعلومات. هذه المقالة نفسها بداية جيدة، ويمكن العثور على إشارات أكثر تحديداً في المقالة التالية في "قاعدة المعارف ل Microsoft":

    تحديد موقع موارد لدراسة التنفيذ التلقائي OLEإذا كنت تفضل التعلم بالقدوة، الرجاء مراجعة المقالة التالية في "قاعدة المعارف ل Microsoft":

    كيفية استخدام MFC أتمتة Excel وإنشاء/تنسيق مصنف جديد

  3. هل هناك طرق مختلفة يمكنك استخدام التنفيذ التلقائي؟ هناك ثلاثة طرق أساسية يمكنك استخدام التنفيذ: MFC، #import، و C/c + +:

    • مع MFC، استخدم ClassWizard c + + Visual لإنشاء "فئات المجمع" من مكتبات النوع Microsoft Office. هذه الفئات، بالإضافة إلى فئات MFC الأخرى، مثل COleVariant، كوليسافيراي، COleException، تسهيل مهام التنفيذ التلقائي. هذا الأسلوب المستحسن عادة أكثر من غيرهم، ومعظم الأمثلة Microsoft Knowledge Base استخدام MFC.

    • #import، توجيهات جديدة أصبحت متوفرة باستخدام Visual c + + 5.0، ينشئ VC + + "المؤشرات الذكية" من مكتبة نوع محدد. أنها فعالة جداً، ولكن غالباً غير مستحسن بسبب الإشارة-جرد المشاكل التي تحدث عادة عند استخدامه مع تطبيقات Microsoft Office.

    • التنفيذ التلقائي C/c + + بكثير أكثر صعوبة، ولكن في بعض الأحيان ضرورية لتجنب الحمل مع MFC أو مشاكل #import. أساسا، استخدام واجهات برمجة التطبيقات هذه باسم CoCreateInstance()، وواجهات COM مثل IDispatch و IUnknown.

    من المهم ملاحظة أن هناك بعض الاختلافات الطفيفة بين التنفيذ التلقائي من مقارنة C عادي، لأنه تم تصميم COM حول فئة c + + c + +. لمزيد من المعلومات، الرجاء مراجعة المقالة التالية في قاعدة المعارف ل Microsoft للحصول على مثال C:

    HOWTO: استخدام التنفيذ التلقائي OLE من تطبيق C

  4. ما هو COM؟ يعتمد التنفيذ التلقائي على طراز كائن المكون (COM). COM ببنية برامج قياسية استناداً إلى واجهات، ومصممة لكود فصل إلى كائنات مستقلة. أعتقد أنها امتداد لنموذج البرمجة الموجهة للكائن "(صافية)، ولكن قابلة للتطبيق للفصل بين التطبيقات. تعرض كل كائن مجموعة من الواجهات وتحدث كافة الاتصالات لأحد كائنات، مثل تهيئة والإشعارات ونقل البيانات، من خلال هذه الواجهات. COM أيضا مجموعة من الخدمات التي توفرها مكتبات الارتباط الحيوي (DLLs) المثبتة مع نظام التشغيل. يستخدم أتمتة العديد من تلك الخدمات. مثال ذلك خدمة "ينظم"، حزم تطبيق عميل استدعاءات الدالات الأعضاء من واجهات تطبيق الملقم وتمرير تلك مع الوسائط الخاصة بها، إلى تطبيق الملقم. وهو يجعل تظهر تعرض واجهات للملقم في مساحة ذاكرة العميل غير الحالة عندما يكون العميل هو.exe تشغيل في مساحة العملية الخاصة به. التنظيم أيضا الحصول على قيم الإرجاع من أساليب الخادم مرة أخرى عبر حدود العملية وأمان في أيدي مكالمة العميل. هناك العديد من خدمات أساسية للتنفيذ التلقائي التي توفرها مكتبات COM مختلفة. وتشمل مصادر المعلومات حول تلك "داخل Ole – النسخة الثانية" ب Kraig Brockschmidt، ISBN 1-55615-843-2، "داخل" COM "ب Rogerson دايل-ISBN 1-57231-349-8، و" مرجع مبرمجي التنفيذ التلقائي "، ISBN 1-57231-584-9.

  5. كيف يمكنني إرفاق مثيل تطبيق Office قيد التشغيل؟ استخدام GetActiveObject() API. تسجيل أنفسهم ملقمات التنفيذ التلقائي في التعفن (تشغيل كائن جدول)، عن طريق المعهد RegisterActiveObject(). عملاء التنفيذ التلقائي الحصول على مثيل قيد التشغيل باستخدام التعليمات البرمجية مثل:

          // Translate server ProgID into a CLSID. ClsidFromProgID      // gets this information from the registry.      CLSID clsid;      CLSIDFromProgID(L"Excel.Application", &clsid);        // Get an interface to the running instance, if any..      IUnknown *pUnk;      HRESULT hr = GetActiveObject(clsid, NULL, (IUnknown**)&pUnk);      ASSERT(!FAILED(hr));      // Get IDispatch interface for Automation...      IDispatch *pDisp;      hr = pUnk->QueryInterface(IID_IDispatch, (void **)&pDisp);      ASSERT(!FAILED(hr));      // Release the no-longer-needed IUnknown...      pUnk->Release();

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

    HOWTO: الحصول على IDispatch Excel أو مستند Word من OCXلن تحتاج إلى القيام بذلك ل PowerPoint، لأنه تطبيق المثيل المفرد؛ أنك لا تملك مثيل واحد لتشغيله.

  6. كيف يمكنني تمرير المعلمات الاختيارية تحتوي بعض الأساليب معلمات "اختياري". في Visual Basic، يمكنك عفوية حذف لهم عند استدعاء الأسلوب. ومع ذلك، عند استدعاء مع Visual c + + عليك تمرير متغير خاص هو الحقل الذي.vt VT_ERROR، وهو حقل.scode DISP_E_PARAMNOTFOUND. إنه:

          // VARIANT used in place of optional-parameters.      VARIANT varOpt;      varOpt.vt = VT_ERROR;      varOpt.scode = DISP_E_PARAMNOTFOUND;

    هذا في الواقع ما يقوم به Visual Basic خلف الكواليس.

  7. كيف يمكنني التقاط الأحداث المعروضة بواسطة تطبيقات Office؟ أساسا بتطبيق واجهة الحدث الذي تريد التقاط ("المصرف")، وإعداد اتصال استشارية مع التطبيق ("المصدر"). توفر المقالة التالية أمثلة خطوة بخطوة لبرنامج Microsoft Word:

    HOWTO: التقاط أحداث التطبيق Microsoft Word97 استخدام VC + +بشكل عام، إعداد اتصال الاستشارية، تحصل IConnectionPointContainer على الملقم واستدعاء FindConnectionPoint() بالديوان واجهة الحدث. هذا يعطيك واجهة إيكونيكتيونبوينت وكل ما تبقى استدعاء Advise() بمثيل واجهة الحدث. الملقم ثم سيطالب مرة أخرى من خلال هذه الواجهة عند إجراء تلك الأحداث.

  8. رمز التشغيل الآلي بطيء جداً. كيف يمكن أنا تسريع الأمور؟ أسباب شائعة لمشكلات سرعة التنفيذ التلقائي بالقراءة والكتابة من البيانات المتكررة. وهذا أمر طبيعي لعملاء التنفيذ التلقائي في Excel. ومع ذلك، معظم الناس ليسوا على علم بأن هذه البيانات عادة يمكن كتابتها أو قراءتها في وقت واحد استخدام SAFEARRAY. راجع مقالات قاعدة معارف Microsoft التالية لمزيد من المعلومات وأمثلة مفيدة:

    HOWTO: استخدام MFC لأتمتة Excel وتعبئة نطاق صفيف

    HOWTO: استخدام MFC لأتمتة Excel والحصول على صفيف من نطاق

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

  9. ماذا تفعل هذه القيم الخطأ ضخمة، مثل-2147352573 أو 0x80030002 المتوسط؟ تعرف HRESULTs هذه القيم والمعرفة في winerror.h. تكون الأرقام كبيرة جداً لأنه يمثل البت الأولى كان من نتيجة خطأ. يمكنك استخدام الأداة المساعدة ErrLook.Exe التي تأتي مع "+ + Visual C" لترجمة هذه الأرقام إلى توصيفات ذات معنى. إذا كنت تريد برمجياً الحصول على وصف للأخطاء، يمكنك استخدام FormatMessage() API. راجع مقالات قاعدة معارف Microsoft التالية لمزيد من المعلومات والأمثلة على استخدام FormatMessage():

    معلومات : ترجمة أخطاء التنفيذ التلقائي ل VB/VBA

    نموذج : Decode32 و Decode16 خطأ OLE رمز أدوات فك ترميزملاحظة: إذا كنت تستخدم Visual c + + 6.0 ولديك متغير يحتوي على هذه القيمة في إطار المراقبة التصحيح، إلحاق "، الموارد البشرية" (بدون علامتي الاقتباس) إلى أن يتضمن Visual c + + ترجمة لك!

  10. ما هو نوع مكتبة؟ يشبه مكتبة نوع ملف رأس C/c + +. تحتوي على الواجهات والأساليب خصائص ملقم قيد النشر. يمكنك عرض مكتبة الأنواع باستخدام "عارض كائن" OLE/COM (Oleview.exe) التي تأتي مع "+ + Visual C". إليك قائمة من أسماء ملفات مكتبة النوع ل Microsoft Office 95 و 97 و 2000: Office Application | Type library ------------------------+---------------- Word 95 and prior | wb70en32.tlb Excel 95 and prior | xl5en32.olb Powerpoint 95 and prior | Powerpoint.tlb Access 95 and prior | msaccess.tlb Binder 95 | binder.tlb Schedule+ | sp7en32.olb Project | pj4en32.olb Team Manager | mstmgr1.olb Word 97 | msword8.olb Excel 97 | excel8.olb Powerpoint 97 | msppt8.olb Access 97 | msacc8.olb Binder 97 | msbdr8.olb Graph 97 | graph8.olb Outlook 97 | msoutl8.olb Outlook 98 | msoutl85.olb Word 2000 | msword9.olb Excel 2000 | excel9.olb Powerpoint 2000 | msppt9.olb Access 2000 | msacc9.olb Outlook 2000 | msoutl9.olb Word 2002 | msword.olb Excel 2002 | excel.exe Powerpoint 2002 | msppt.olb Access 2002 | msacc.olb Outlook 2002 | msoutl.olb

  1. رمز التشغيل الآلي بالعمل مع Excel 95، ولكن الفشل مع Excel 97. ماذا يحدث؟ نموذج الكائن ل Excel إجراء تغيير كبير من الإصدار 95 إلى 97. تطبيق Excel 95 جميع الأساليب والخصائص في تنفيذ واحد من IDispatch. وهذا يعني أن غالباً ما يمكن استدعاء الأساليب لكائن X، من الكائن Y. لم يتم تصميم جيد، وذلك في Office 97، كل كائن الخاص به فصل تنفيذ Idispatch. وهذا يعني أنه إذا تطلب لأسلوب أو خاصية من الكائن X من Y كائن منفصل، تحصل الخطأ 0x80020003،-2147352573، "لم يتم العثور على عضو." لتجنب هذا الخطأ, تحتاج إلى تأكد من أن واجهة IDispatch الأساسي يتم إجراء المكالمات من الصحيح معنويا. راجع مقالات قاعدة معارف Microsoft التالية لمزيد من المعلومات:

    كوميديا : "لم يتم العثور على عضو"، 0x80020003 استكشاف الأخطاء وإصلاحها خطأ

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

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

    • التحقق مما إذا تم استدعاء أي أساليب مثل فتح، أو جديد، يقوم بإرجاع IDispatch * (LPDISPATCH)، وتجاهل قيمة الإرجاع. إذا كنت، ثم يتم التخلي عن هذه الواجهة التي تم إرجاعها وستحتاج إلى تغيير التعليمات البرمجية الخاصة بك بحيث يمكنك تحرير المستند عند عدم الحاجة إليها.

    • التعليق تدريجيا مقاطع التعليمات البرمجية الخاصة بك حتى تختفي المشكلة، ثم إضافتها إلى عدالة تعقب حيث تبدأ المشكلة.

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

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

  3. أنا أعرف ما أريد القيام به كمستخدم تطبيق Office، ولكن كيف يمكن القيام بذلك برمجياً من خلال التنفيذ التلقائي؟ ما كنت ترغب في ما الكائنات والأساليب والخصائص تحتاج إلى استخدام. أفضل طريقة لتعلم كيفية التنقل في نماذج كائن Word و Excel و Powerpoint، استناداً إلى ما تريد القيام به كمستخدم، يتم استخدام "مسجل الماكرو". فقط اختر Macro\ "تسجيل ماكرو جديد" من القائمة "أدوات"، قم بتنفيذ المهام التي تهتم بها، ثم اختر Macro\ '"إيقاف التسجيل"'. بمجرد الانتهاء من التسجيل، اختر Macro\Macros من قائمة "أدوات"، أو حدد الماكرو الذي سجلته، ثم انقر فوق تحرير. سينقلك للمنشأة تعليمات VBA البرمجية التي سيتم إنجاز المهمة التي سجلتها. تذكر الماكرو المسجل لن تكون أفضل التعليمات البرمجية يمكن في معظم الحالات، ولكنه من جيدا على سبيل مثال سريع.

  4. هل يمكن أتمتة تطبيق Office مضمنة؟ مطلقا. الدورة هو الحصول على مؤشر IDispatch: ويرد ذلك في Visual c + + التقني ملاحظة 39 (TN039). راجع مقالة "قاعدة معارف Microsoft" التالية للحصول على مثال خطوة بخطوة:

    HOWTO: إدراج وتنفيذ ورقة عمل Microsoft Excel مع MFC

  5. كيف يمكنني الدخول بلدي خصائص المستند في مستند Office خصائص المستند يتم الوصول إليها من خلال التنفيذ التلقائي، أو مباشرة من خلال إيبروبيرتيستوراجي. مقالات "قاعدة معارف Microsoft" التالية توضح كل أسلوب:

    HOWTO: استخدام "التنفيذ التلقائي" لاسترداد خصائص المستندات المضمنة

    HOWTO: قراءة خصائص المستند المركب مباشرة مع VC + +

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.

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

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة اللغة؟
ما الذي أثّر في تجربتك؟
بالضغط على "إرسال"، سيتم استخدام ملاحظاتك لتحسين منتجات Microsoft وخدماتها. سيتمكن مسؤول تكنولوجيا المعلومات لديك من جمع هذه البيانات. بيان الخصوصية.

نشكرك على ملاحظاتك!

×