أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

مكتب التنفيذ استخدام Visual C++

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

اضغط هنا لرابط المقالة باللغة الانجليزية196776
الموجز
تحتوي هذه المقالة إجابات الأسئلة الشائعة المتعلقة التنفيذ إلى 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 الفصل من David Kruglinski "داخل Visual C++" (ISBN:1 565 - 57231- - 2) يوفر نظرة عامة حول عامة بالإضافة إلى بعض الأمثلة رائعة. كما يعتبر "قاعدة المعارف لـ Microsoft" مصدر جيد من المعلومات. يعتبر هذا المقال نفسه بدء جيدة ثم يمكنك البحث عن مراجع أكثر دقة في المقالة التالية في "قاعدة المعارف لـ Microsoft:
    152023تحديد موقع موارد إلى أتمتة OLE الدراسة
    إذا كنت تفضل التعرف حسب المثال الرجاء مراجعة المقالة التالية في "قاعدة المعارف لـ Microsoft:
    179706استخدام HOWTO MFC لأتمتة Excel & إنشاء/تنسيق مصنف جديد
  3. هل هناك طرق مختلفة يمكن استخدام التنفيذ

    توجد ثلاث طرق أساسية يمكنك استخدام التنفيذ: MFC ، #import و C/C++:

    • MFC ، استخدام ClassWizard C++ Visual لإنشاء "الفئات" المجمّع"" من مكتبات الأنواع Microsoft Office. هذه الفئات بالإضافة إلى أخرى فئات MFC COleVariant الاتصال، COleSafeArray COleException ، تبسيط المهام التلقائية. ينصح بهذا الأسلوب عادةً عبر الأخرى واستخدام معظم الأمثلة معارف MFC.
    • #import توجيه جديد أصبحت متوفرة مع 5.0 Visual C++ ، ينشئ VC ++ "مؤشرات الذكية" من مكتبة نوع محدد. وهو فعالة جداً ولكن غالباً غير مستحسن بسبب من مرجع - counting المشاكل التي تحدث عادة عند استخدامها مع تطبيقات Microsoft Office.
    • يتم "أتمتة" C/C++ الكثير من الصعوبة ولكن أحياناً الضرورية لتجنب الحمل مع MFC أو مشاكل #import. بشكل أساسي, العمل مع مثل APIs كـ CoCreateInstance() ثم واجهات COM مثل IDispatch IUnknown.
    من المهم ملاحظة أنه توجد بعض الاختلافات بسيط بين التنفيذ من C++ مقارنة C عادي لأنه تم تصميم COM حول فئة C++. لمزيد من المعلومات، الرجاء مراجعة المقالة التالية في قاعدة معارفMicrosoft على سبيل المثال C:
    181473HOWTO: استخدام أتمتة OLE من أحد تطبيقات C
  4. ما المقصود بـ "COM" ؟

    يعتمد التنفيذ التلقائي على طراز كائن المكون (COM). COM هندسة برامج قياسية استناداً إلى واجهات وهي مصممة لجعل رمز فصل إلى كائنات مستقلة. اعتبار أنه ملحق لواجهة كائن مستند إلى البرمجة (OOP) ، ولكن للتطبيق للفصل بين التطبيقات. كل كائن الكشف عن مجموعة من واجهات و كافة الاتصالات إلى كائن تهيئة إعلامات ونقل البيانات يحدث عبر هذه الواجهات.

    COM أيضاً مجموعة من الخدمات المتوفرة من قِبل مكتبات الارتباط الحيوي (DLLs) المثبتة مع نظام التشغيل. يستخدم "التنفيذ التلقائي" العديد من هذه الخدمات. هو مثال خدمة "Marshalling" الذي حزم المكالمات تطبيق العميل إلى وظائف عضو من واجهات تطبيق الملقم وتمرير تلك مع الوسيطات الخاصة بها إلى تطبيق الملقم. يسهل ذلك تظهر يتعرض الواجهات الموجودة على الخادم في مساحة ذاكرة العميل غير الحالة عندما يكون العميل & .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. ملقمات التنفيذ التلقائي تسجيل أنفسهم في ROT (تشغيل كائن جدول) ، عبر 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 الذي تريد إرفاقه, فقط ستكون قادراً لإرفاق المثيل الأول الذي تم تشغيله باستخدام API GetActiveObject().

    نظرياً, يمكنك تكرار ROT لكل مثيل الفردية ولكن تطبيقات Office لا تسجيل أنفسهم في حالة مثيل آخر مسبقاً في ROT لأن مسار الارتباط للحصول على نفسه دوماً (أنه تعذر يمكن تمييزها على أية حال) نفس. وهذا يعني أنه لا يمكنك إرفاق إلى أي مكان عدا الأولى. ومع ذلك، لأن تطبيقات Office أيضاً تسجيل المستندات الخاصة بهم في ROT ، يمكنك بنجاح إرفاق المثيلات الأخرى بواسطة بالتكرار إرفاق عليها، ثم الحصول على كائن التطبيق منه ROT تبحث عن مستند معين. وجود بعض رموز في مقال معارف التالية بالتكرار في ROT و البحث عن اسم مستند:
    190985HOWTO: إحضار IDispatch Excel أو مستند Word من OCX
    لن تحتاج إلى تنفيذ هذا الإجراء PowerPoint، لأنه تطبيق مثيل واحد; يمكن أن يكون لديك فقط مثيل واحد من التشغيل.
  6. كيفية تمرير المعلمات الاختيارية

    تحتوي بعض الأساليب المعلمات "الاختيارية". في Visual Basic، يمكنك casually حذف عليها عند استدعاء الأسلوب. ومع ذلك، عند استدعاء مع Visual C++ لديك لتمرير VARIANT خاصة الحقل .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 ما behind-the-scenes.
  7. كيفية تصفية الأحداث المعروضة بواسطة تطبيقات Office

    بشكل أساسي الذي يقوم بتطبيق واجهة الحدث الذي تريد التقاط ("موضع في") ، ثم إعداد اتصال النصائح الإرشادية مع التطبيق ("المصدر"). يعطي المقالة التالية أمثلة خطوة بخطوة لـ Microsoft Word:
    183599HOWTO: التقاط أحداث التطبيق Word97 Microsoft استخدام VC ++
    بشكل عام، لإعداد اتصال النصائح الإرشادية يمكنك الحصول على الملقم IConnectionPointContainer واستدعاء FindConnectionPoint() مع IID واجهة الحدث. يمنحك هذا واجهة IConnectionPoint ويكون كل ما في حالة ترك استدعاء Advise() مع مثيل واجهة الحدث. الملقم سوف ثم أعد الاتصال عبر هذه الواجهة عند إجراء تلك الأحداث.
  8. رمز "التنفيذ التلقائي" الخاص بي بطيء جداً. كيف يمكن لتسريع الأشياء ؟

    سبب شائع مشاكل سرعة التنفيذ بقراءة المتكررة والكتابة من البيانات. هذا النموذجية التنفيذ Excel العملاء. ومع ذلك، لا تدرك أن هذه البيانات يمكن عادةً كتابة أو قراءتها في وقت واحد باستخدام SAFEARRAY معظم الأشخاص. راجع مقالات قاعدة معارف Microsoft التالية للحصول على مزيد من معلومات وأمثلة فيه معلومات:
    186120HOWTO: استخدام MFC أتمتة Excel و تعبئة نطاق مع صفيف
    186122HOWTO: استخدام MFC أتمتة Excel & الحصول على صفيف من نطاق
    179706HOWTO: استخدام MFC أتمتة Excel "و" إنشاء/تنسيق مصنف جديد
    أيضاً، من المهم أشر أن استخدام الحافظة يمكن أحياناً تحسين الأداء. على سبيل المثال، يمكنك نسخ البيانات إلى الحافظة ثم استخدام "التنفيذ التلقائي" إعلام الملقم للصق. أو العكس بالعكس; إعلام الملقم إلى نسخ إلى الحافظة ولصقها ضمن التطبيق الخاص بك.
  9. ماذا تعني هذه القيم الخطأ كبير مثل-2147352573 أو 0x80030002 ؟

    هذه القيم تُعرف HRESULTs ثم تم تعريفها في winerror.h. تكون الأرقام كبيرة بحيث لأنه يمثل البت الأول وهو نتيجة خطأ أم لا. يمكنك استخدام الأداة المساعدة ErrLook.Exe الذي يأتي مع Visual C++ لترجمة هذه الأرقام إلى وصف ذات معنى.

    إذا كنت تريد برمجياً للحصول على وصف الأخطاء يمكنك استخدام API FormatMessage(). راجع مقالات قاعدة معارف Microsoft التالية للحصول على مزيد من معلومات وأمثلة على استخدام FormatMessage():
    186063INFO: الترجمة أخطاء التنفيذ التلقائي لـ VB/VBA
    122957نموذج: Decode32 و Decode16 OLE وحدة فك ترميز رمز خطأ أدوات
    ملاحظة: إذا كنت تستخدم 6.0 Visual C++ يكون لديك متغير يحتوي على هذه القيمة في إطار المراقبة التصحيح إلحاق "، hr" (بدون علامات اقتباس) إلى أن يتضمن 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 أو من كائن ص. هذا لم يتم تصميم جيد ، حتى في Office 97 كل كائن له الخاصة به فصل Idispatch التنفيذ. وهذا يعني أنه إذا طلبت أسلوب أو خاصية من كائن X من كائنات منفصلة ص ، تتلقى الخطأ 0x80020003 ،-2147352573 ، "لم يتم العثور على عضو." لتجنب هذا الخطأ تحتاج تأكد من أن واجهة IDispatch الأساسي إجراء الاستدعاءات الصادرة من semantically الصحيح. راجع مقالات قاعدة معارف Microsoft التالية لمزيد من المعلومات:
    172108"عضو لم يتم العثور على" ، 0x80020003 استكشاف أخطاء HOWTO: خطأ
  2. يبقى التطبيق استخدم أتمتة في الذاكرة بعد انتهاء البرنامج. ما يحدث هذا؟

    الأرجح هذا لأن نسيت لتحرير واجهة الاستلام ستحتاج إلى تعقب. فيما يلي بعض الاقتراحات العامة ثم الأشياء يبحث عن:

    • إذا كنت تستخدم #import ، فمن المحتمل جداً التي قد تكون قيد التشغيل إلى أحد الأخطاء حساب مرجع مقترنة به. مرات غالباً الأخطاء يمكن أن العمل حول ولكن عادةً المفضل لاستخدام أحد أساليب التنفيذ. لا يعمل #import جداً بشكل جيد مع تطبيقات Office ونظراً مكتبات الأنواع واستخدام كخصائص. أيضاً، يتم مثل هذه المشكلات counting مرجع الثابت لتعقب لأن كثير من المكالمات COM مستوى واجهة behind-the-scenes عند استخدام #import.
    • تحقق لمعرفة ما إذا قمت بالاتصال أية أساليب مثل فتح أو جديد ، التي تقوم بإرجاع IDispatch * (LPDISPATCH) و تجاهل قيمة الإرجاع. إذا كنت غير الذي يتم abandoning هذه الواجهة التي تم إرجاعها ثم ستحتاج إلى تغيير التعليمات البرمجية بحيث تحرر ذلك عندما لا تعود بحاجة إليها.
    • التعليق تدريجياً الخروج نسخ مقاطع التعليمات البرمجية الخاصة بك إلى أن المشكلة يختفي ثم إضافته judiciously لتعقب لأسفل يبدأ منه المشكلة.
    • لاحظ أن بعض التطبيقات ستبقى تشغيل إذا كان المستخدم قام "touched" التطبيق. إذا حدث هذا، بينما يتم أتمتة ثم التطبيق المحتمل أن يكون ستبقى تشغيل فيما بعد. تطبيقات Office تحتوي على خاصية "UserControl" على كائن التطبيق التي تقوم يمكن القراءة/الكتابة تغيير هذا السلوك.
    • أيضاً، فسوف تقرر بعض التطبيقات البقاء قيد التشغيل إذا حدث كافية واجهة المستخدم "إجراء". إذا تم intending بإنهاء التطبيق, ثم استدعاء الأسلوب Quit() الخاص به في كائن التطبيق. سيقوم Word إيقاف التشغيل بغض النظر عن عدد المرجع الخاص به عند استدعاء إنهاء. هذا غير سلوك COM المتوقع. Excel، على الرغم من ذلك، فسوف بشكل صحيح فقط إخفاء نفسه ولكنه يظل قيد التشغيل حتى يتم تحرير كافة الواجهات المعلقة. بشكل عام، يمكنك يجب تحرير كافة المراجع المعلقة ثم استدعاء Quit() فقط إذا كنت ترغب في إنهاء التطبيق.
  3. أعرف ما المطلوبة للقيام كمستخدم تطبيق Office ، ولكن كيف يمكن عمله هذا بشكل برمجي خلال التنفيذ ؟

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

    لها تماماً. يتم الحصول على الدورة المؤشر IDispatch: هذا معطى في Visual C++ التقني ملاحظة 39 (TN039). راجع مقالة قاعدة معارف Microsoft التالية على سبيل المثال خطوة بخطوة:
    184663HOWTO: تضمين و أتمتة ورقة عمل Microsoft Excel بـ MFC
  5. كيف يمكنني الوصول إلى خصائص المستند الخاص بي في مستند Office

    خصائص المستند إليها من خلال التنفيذ أو مباشرة من خلال IPropertyStorage. مقالات "قاعدة المعارف لـ Microsoft" التالية شرح كل أسلوب:
    179494HOWTO: استخدام التنفيذ لاسترداد خصائص المستند مضمنة
    186898HOWTO: خصائص المستند المركبة مباشرة مع VC ++ قراءة
coledispatchdriver colesafearray colevariant _com_ptr_t _com_variant_t IPropertySetStorage

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

خصائص

رقم الموضوع: 196776 - آخر مراجعة: 03/13/2008 20:13:39 - المراجعة: 7.0

Microsoft Visual C++ 2008 Express Edition, Microsoft Project 2000 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Visual C++ 4.0 Standard Edition, Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 6.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Visual C++, 32-bit Learning Edition 6.0, Microsoft Access 97 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft PowerPoint 97 Standard Edition, Microsoft Outlook 97 Standard Edition, Microsoft Word 97 Standard Edition, Microsoft Access 2000 Standard Edition, Microsoft PowerPoint 2000 Standard Edition, Microsoft Outlook 2000, Microsoft Word 2000 Standard Edition, Microsoft Access 2002 Standard Edition, Microsoft Excel 2002 Standard Edition, Microsoft PowerPoint 2002 Standard Edition, Microsoft Word 2002 Standard Edition, Microsoft Outlook 2002 Standard Edition

  • kbmt kbsweptvs2008 kbautomation kbfaq KB196776 KbMtar
تعليقات
dy>