التنفيذ التلقائي ل Office باستخدام Visual c + +


الملخص


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

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


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

  1. ما المقصود بالتنفيذ التلقائي ؟
  2. انني جديد للتنفيذ التلقائي ، أين يمكنني العثور علي موارد جيده لمعرفه المزيد ؟
  3. هل هناك طرق مختلفه يمكنني استخدام التنفيذ التلقائي ؟
  4. ما هو COM ؟
  5. كيف يمكنني الإرفاق إلى مثيل تشغيل تطبيق Office ؟
  6. كيف يمكنني تمرير المعلمات الاختيارية ؟
  7. كيف يمكنني التقاط الاحداث المعروضة بواسطة تطبيقات Office ؟
  8. التعليمات البرمجية التلقائية الخاصة بي بطيئه جدا. كيف يمكنني تسريع الأمور ؟
  9. ما المقصود بقيم الخطا الكبيرة ، مثل-2147352573 أو 0x80030002 ، تعني ؟
  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" (إيسبن: 1-57231-565-2) توفر نظره عامه عامه بالاضافه إلى بعض الامثله الرائعة. بالاضافه إلى ذلك ، يعد Microsoft Knowledge Base أيضا مصدرا جيدا للمعلومات. هذه المقالة ذات بدء جيد ، ويمكنك العثور علي مراجع أكثر تحديدا في المقالة التالية في قاعده معارف Microsoft:
    152023 تحديد موقع الموارد لدراسة التنفيذ التلقائي ل OLE
    إذا كنت تفضل التعلم باستخدام المثال ، فالرجاء مراجعه المقالة التالية في قاعده معارف Microsoft:
    179706 هووتو استخدام MFC لاتمته Excel & إنشاء/تنسيق مصنف جديد
  3. هل هناك طرق مختلفه يمكنني استخدام التنفيذ التلقائي ؟ هناك ثلاث طرق أساسيه يمكنك استخدام التنفيذ التلقائي: MFC و #import و C/c + +:
    • باستخدام MFC ، استخدم كلاسويزارد Visual c + + لإنشاء "فئات التضمين" من مكتبات أنواع Microsoft Office. هذه الفئات ، بالاضافه إلى فئات MFC الأخرى ، مثل كوليفاريانت و كوليسافيراي و كوليكسسيبتيون وتبسيط مهام التنفيذ التلقائي. عاده ما نوصي بهذا الأسلوب علي الأشخاص الآخرين ، ومعظم أمثله Microsoft Knowledge Base تستخدم MFC.
    • #import ، فان التوجيه الجديد الذي يصبح متوفرا مع Visual c + + 5.0 ، ينشئ المؤشرات الذكية VC + + "من مكتبه أنواع محدده. انه أمر فعال جدا ، ولكنه لا ينصح به غالبا بسبب المشاكل المتعلقة بحساب المراجع التي تحدث عاده عند استخدامها مع تطبيقات Microsoft Office.
    • يتوفر التنفيذ التلقائي ل c/c + + ، ولكن من الضروري أحيانا تجنب الحمل باستخدام MFC أو مشاكل تتعلق بال#import. بشكل أساسي ، تعمل باستخدام واجات برمجه التطبيقات هذه مثل CoCreateInstance () ، وواجات COM مثل IDispatch و IUnknown.
    من المهم ملاحظه ان هناك بعض الاختلافات البسيطة بين التنفيذ التلقائي من + + c مقارنه ب C العادية ، لان COM تم تصميمه حول فئة + + c. لمزيد من المعلومات ، يرجى مراجعه المقالة التالية في قاعده معارف Microsoft للحصول علي مثال C:
    181473 هووتو: استخدام التنفيذ التلقائي ل OLE من تطبيق C
  4. ما هو COM ؟ يستند التنفيذ التلقائي إلى طراز كائن المكون (COM). ان COM هو بنيه برمجيه قياسيه استنادا إلى الواجات ، ومصممه لجعل التعليمات البرمجية مفصوله في العناصر المضمنة ذاتيا. التفكير فيها كملحق لنموذج برمجه الكائن (أووب) ، ولكن يمكن تطبيقها علي التطبيقات المنفصلة. يعرض كل عنصر مجموعه من الواجات ، ويتم اجراء كل الاتصالات بكائن ، مثل التهيئة والإشعارات ونقل البيانات من خلال هذه الواجات. يعتبر COM أيضا مجموعه من الخدمات التي توفرها مكتبات الارتباطات الديناميكية (Dll) التي يتم تثبيتها مع نظام التشغيل. التنفيذ التلقائي يستخدم العديد من هذه الخدمات. مثال واحد هو خدمه "التنظيم" ، التي تقوم بحزم مكالمات تطبيق العميل إلى دالات العضو في واجات تطبيق الخادم ويمرر تلك التي تتضمن الوسيطات الخاصة بها إلى تطبيق الخادم. انه يبدو ان واجات الخادم معروضه في مساحة الذاكرة الخاصة بالعميل ، وهي ليست الحالة التي يتم فيها تشغيل العميل في مساحة العملية الخاصة به. تقوم التنظيمات أيضا بالحصول علي القيم المرجعة من طرق الخادم في المرة الأخرى عبر حدود العملية وبامان إلى ايدي المكالمة الخاصة بالعميل. ثمة العديد من الخدمات الأخرى الضرورية للتنفيذ التلقائي الذي يتم توفيره بواسطة مكتبات COM المختلفة. تتضمن مصادر المعلومات المتعلقة ب Ole-الإصدارات الثانية "بواسطة كرايج بروكشميدت ، إيسبن 1-55615-843-2 ،" داخل COM "بواسطة Dale روجيرسون-إيسبن 1-57231-349-8 ، و" مرجع المبرمج التلقائي "إيسبن 1-57231-584-9.
  5. كيف يمكنني الإرفاق إلى مثيل تشغيل تطبيق Office ؟ استخدم واجهه برمجه التطبيق جيتاكتيفيوبجيكت (). تسجل خوادم التنفيذ التلقائي نفسها في روت (جدول كائنات التشغيل) ، عبر واجهه برمجه التطبيق ريجيستيراكتيفيوبجيكت (). يمكن لعملاء التنفيذ التلقائي الحصول علي مثيل قيد التشغيل باستخدام التعليمات البرمجية مثل:
          // 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 الذي تريد إرفاقه ، ستتمكن من الإرفاق فقط بالمثيل الأول الذي تم تشغيله باستخدام واجهه برمجه تطبيقات جيتاكتيفيوبجيكت (). نظريا ، يمكنك تكرار الروت لكل مثيل فردي ، ولكن تطبيقات Office لا تسجل نفسها إذا كان مثيل آخر موجودا بالفعل في روت لان اللقب لنفسه دائما (لا يمكن تمييزه علي اي حال). وهذا يعني انه لا يمكنك إرفاق اي مثيل باستثناء الأول. ومع ذلك ، لان تطبيقات Office تقوم أيضا بتسجيل المستندات في روت ، يمكنك الإرفاق بنجاح بمثيلات أخرى من خلال تكرار الروت البحث عن مستند معين ، وإرفاقه ، ثم الحصول علي عنصر التطبيق منه. توجد بعض التعليمات البرمجية في مقاله قاعده معارف Microsoft التالية لتكرار روت والبحث عن اسم المستند:
    190985 هووتو: الحصول علي IDispatch لمستند Excel أو Word من OCX
    لن تحتاج إلى تنفيذ هذا الاجراء ل PowerPoint ، لأنه تطبيق مثيل واحد ؛ يمكنك الحصول علي مثيل واحد فقط لتشغيله.
  6. كيف يمكنني تمرير المعلمات الاختيارية ؟ تتضمن بعض الأساليب "معلمات" الاختيارية. في Visual Basic ، يمكنك حذفها من كاسوالي عند الاتصال بالأسلوب. علي الرغم من ذلك ، عند الاتصال ب Visual c + + ، يتعين عليك تمرير متغير خاص به حقل فيرمونت DISP_E_PARAMNOTFOUND الخاص ب VT_ERRORه. إنه:
          // VARIANT used in place of optional-parameters.      VARIANT varOpt;      varOpt.vt = VT_ERROR;      varOpt.scode = DISP_E_PARAMNOTFOUND;
    هذا هو الأمر الذي يقوم به Visual Basic بالفعل في الخلفية.
  7. كيف يمكنني التقاط الاحداث المعروضة بواسطة تطبيقات Office ؟ بشكل أساسي تقوم بتطبيق واجهه الحدث التي تريد التقاطها ("الحوض") ، واعداد اتصال استشاري بالتطبيق ("المصدر"). توفر لك المقالة التالية أمثله مفصله خطوه بخطوه ل Microsoft Word:
    183599 هووتو: التقاط احداث تطبيق Microsoft Word97 باستخدام VC + +
    بشكل عام ، لاعداد الاتصال الاستشاري ، يمكنك الحصول علي إيكونيكتيونبوينتكونتاينير الخادم والاتصال فيندكونيكتيونبوينت () باستخدام IID لواجهه الحدث. يوفر لك هذا الاجراء واجهه إيكونيكتيونبوينت وكل هذه الجهات المتبقية هي الاتصال بالنصيحة () باستخدام مثيل واجهه الحدث. سيقوم الخادم بعد ذلك بالاتصال مره أخرى عبر هذه الواجهة عند اجراء هذه الاحداث.
  8. التعليمات البرمجية التلقائية الخاصة بي بطيئه جدا. كيف يمكنني تسريع الأمور ؟ السبب الشائع للمشاكل المتعلقة بالتنفيذ التلقائي هو استخدام تكرارات القراءة وكتابه البيانات. هذا الأمر نموذجي لعملاء التنفيذ التلقائي ل Excel. ومع ذلك ، لا يدرك معظم الأشخاص انه يمكن كتابه هذه البيانات بشكل دائم أو قراءتها مره واحده باستخدام SAFEARRAY. راجع مقالات قاعده معارف Microsoft التالية للحصول علي مزيد من المعلومات والامثله علي المقالات:
    186120 هووتو: استخدام MFC لاتمته Excel وتعبئة نطاق باستخدام صفيف
    186122 هووتو: استخدام MFC لاتمته Excel & الحصول علي صفيف من نطاق
    179706 هووتو: استخدام MFC لاتمته Excel وإنشاء/تنسيق مصنف جديد
    ومن المهم أيضا ان تقوم بالاشاره إلى ان استخدام الحافظة يمكنه تحسين الأداء في بعض الأحيان. علي سبيل المثال ، يمكنك نسخ البيانات إلى الحافظة ، ثم استخدام التنفيذ التلقائي لاعلام الخادم باللصق. أو العكس ؛ اطلب من الخادم النسخ إلى الحافظة ، وألصقه في التطبيق.
  9. ماذا تعني قيم الأخطاء الكبيرة ، مثل-2147352573 أو 0x80030002 ؟ تعرف هذه القيم ب هريسولتس ويتم تعريفها في وينيرور. تكون الأرقام كبيره لان البت الأول يمثل ما إذا كانت نتيجة الخطا ام لا. يمكنك استخدام الاداه المساعدة ارلوك التي تاتي مع Visual c + + لترجمه هذه الأرقام إلى أوصاف ذات معني. إذا أردت الحصول علي وصف للأخطاء بشكل برمجي ، فيمكنك استخدام واجهه برمجه التطبيق فورماتميساجي (). راجع مقالات قاعده معارف Microsoft التالية للحصول علي مزيد من المعلومات والامثله علي استخدام فورماتميساجي ():
    186063 معلومات: ترجمه أخطاء التنفيذ التلقائي ل VB/VBA
    122957 نموذج: أدوات فك ترميز رمز خطا OLE Decode32 و Decode16
    ملاحظه: إذا كنت تستخدم Visual c + + 6.0 وكان لديك متغير يحتوي علي هذه القيمة في نافذه مراقبه تصحيح الأخطاء ، فقم بإلحاق "، hr" (بدون علامات الاقتباس) اليه لكي يقوم Visual c + + بترجمتها لك!
  10. ما المقصود بمكتبه الأنواع ؟ مكتبه النوع مماثله لملف راس C/c + +. يحتوي علي الواجات والأساليب والخصائص التي يقوم الخادم بنشرها. يمكنك عرض مكتبه الأنواع باستخدام عارض كائن OLE/COM (أوليفيو) الذي ياتي مع 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 من كائن منفصل ، ستتلقى الخطا 0x80020003 ،-2147352573 ، "لم يتم العثور علي العضو." لتجنب هذا الخطا ، يجب التاكد من ان واجهه IDispatch الاساسيه التي تقوم باجراء المكالمات منها هي الوحيدة الصحيحة. راجع مقالات قاعده معارف Microsoft التالية للحصول علي مزيد من المعلومات:
    172108 هووتو: استكشاف الأخطاء وإصلاحها "لم يتم العثور علي العضو" و 0x80020003
  2. يبقي التطبيق الذي قمت باتمته في الذاكرة بعد انتهاء البرنامج. ماذا يحدث؟ في الغالب ، يعود السبب إلى انك نسيت تحرير واجهه تم الحصول عليها ستحتاج إلى تعقبها. اليك بعض الاقتراحات العامة والأمور التي يجب البحث عنها:
    • إذا كنت تستخدم #import ، فمن المحتمل انه يمكنك التشغيل في أحد الأخطاء المتعلقة بحساب المراجع المقترن به. غالبا ما يكون من الممكن ان يتم التعامل مع الأخطاء ، ولكن يفضل استخدام أحدي طرق التنفيذ التلقائي الأخرى. لا يعمل #import بشكل جيد بالنسبة إلى تطبيقات Office لان مكتبات الأنواع والاستخدام الخاصة بها معقده تماما. بالاضافه إلى ذلك ، فانه من الصعب تعقب هذه المشكلات بسبب وجود الكثير من مكالمات COM علي مستوي الواجهة في الخلفية عند استخدام #import.
    • تحقق لمعرفه ما إذا كنت تقوم بالاتصال بأي أساليب ، مثل Open أو New ، التي ترجع IDispatch * (لبديسباتش) ، وتجاهل القيمة المرجعة. إذا كنت ، سأباندونينج هذه الواجهة التي تم إرجاعها ستحتاج إلى تغيير التعليمات البرمجية الخاصة بك بحيث تقوم بتحريرها عندما لا تعود بحاجه اليها.
    • قم بتعليق مقاطع التعليمات البرمجية الخاصة بك تدريجيا حتى تختفي المشكلة ، ثم أضفها مره أخرى جوديسيوسلي لتعقب المكان الذي بدات فيه المشكلة.
    • لاحظ ان بعض التطبيقات ستبقي قيد التشغيل إذا كان المستخدم يحتوي علي "التطبيق". إذا حدث هذا اثناء التنفيذ التلقائي ، فمن المحتمل ان يبقي التطبيق قيد التشغيل فيما بعد. تحتوي تطبيقات Office علي خاصيه "UserControl" علي عنصر التطبيق الذي يمكنك قراءته/كتابته لتغيير هذا السلوك.
    • بالاضافه إلى ذلك ، ستقرر بعض التطبيقات الاستمرار في العمل في حال حدوث واجهه مستخدم كافيه. إذا كنت إينتيندينج التطبيق للخروج ، فقم بالاتصال بأسلوب الخروج () علي عنصر التطبيق. سيتم إيقاف تشغيل Word بصرف النظر عن عدد المراجع الخاص به عند استدعاء الأمر "إنهاء". هذا ليس سلوك COM المتوقع. بالرغم من ذلك ، سيقوم Excel بإخفاء نفسه فقط ولكن مع الاستمرار في العمل حتى يتم إصدار كل الواجات المعلقة. بشكل عام ، يجب ان تصدر كل المراجع المعلقة ، سيتم إنهاء المكالمة فقط () إذا كنت ترغب في إنهاء التطبيق.
  3. اعرف ما الذي ارغب في القيام به كمستخدم تطبيق Office ، ولكن كيف يمكنني اجراء ذلك برمجيا من خلال التنفيذ التلقائي ؟ ما الذي تريده هو العناصر والأساليب والخصائص التي تريد استخدامها. أفضل طريقه لمعرفه كيفيه التنقل في نماذج العناصر في Word و Excel و Powerpoint ، استنادا إلى ما تريد القيام به كمستخدم ، هو استخدام مسجل الماكرو. ما عليك سوي اختيار الماكرو \ ' تسجيل ماكرو جديد ' من قائمه "أدوات" ، نفذ المهمة التي تهمك ، ثم اختر ماكرو "إيقاف التسجيل". عند الانتهاء من التسجيل ، اختر Macro\Macros من القائمة أدوات ، وحدد الماكرو الذي قمت بتسجيله ، ثم انقر فوق تحرير. سينقلك هذا الاجراء إلى التعليمات البرمجية التي تم إنشاؤها في VBA التي ستقوم بتنفيذ المهمة التي سجلتها. ضع في اعتبارك ان الماكرو المسجل لن يكون أفضل التعليمات البرمجية الممكنة في معظم الحالات ، ولكنه جيد جدا علي سبيل المثال السريع.
  4. هل يمكنني أتمته تطبيق Office مضمن ؟ مطلقا. تحصل الجولة علي مؤشر IDispatch: يتم توفير ذلك في الملاحظة التقنية ل Visual c + + 39 (TN039). راجع المقالة التالية لقاعده معارف Microsoft للحصول علي مثال خطوه بخطوه:
    184663 هووتو: تضمين ورقه عمل Microsoft Excel وأتمتها باستخدام MFC
  5. كيف يمكنني الوصول إلى خصائص المستند في مستند Office ؟ يمكن الوصول إلى خصائص المستند من خلال التنفيذ التلقائي ، أو مباشره من خلال إيبروبيرتيستوراجي. توضح المقالات التالية في قاعده معارف Microsoft كل أسلوب:
    179494 هووتو: استخدام التنفيذ التلقائي لاسترداد خصائص المستند المضمنة
    186898 هووتو: قراءه خصائص المستند المركب مباشره باستخدام VC + +