سؤال

أنا أعمل في مشروع ينطوي على API عميل الاتصالات الموحد من Microsoft؛ uccapi.dll. أنا أيضا باستخدام CodeGear C ++ Builder 2010، وليس Visual Studio. بعد تسجيل DLL باستخدام Regsvr32 واستيرادها ككتابة نوع إلى C ++ Builder 2010، تم إنشاء ملفات UCCAPI_TLB- و UCCAPI_OCX. عند استيرادها إلى مشروعي الجديد، أحاول اتباع دليل MSDN لإنشاء عميل Communicator Office قادر على التوقيع في خادم اتصال Office.

في هذا الصدد لدي سؤالان:

  • ما هي الطريقة الصحيحة للوصول إلى واجهات com التي توفرها من خلال OCX؟

لقد وجدت حتى الآن عدة طرق لإنشاء نقاط الوصول، مثل.

giveacodicetagpre.

و

giveacodicetagpre.

و

giveacodicetagpre.

و

giveacodicetagpre.

الثلاثة أولا يبدو أن يعمل بشكل جيد. هذا الأخير سوف يعطيني تأكيدا فشلت: Intf!= 0 خطأ مع استثناء 0 × 40000015. باستخدام أي من أهم ثلاثة منها يمكنني الوصول إلى الأساليب وتهيئة منصة واجهة.

ولكن عند محاولة أي من نفس التكتيكات للوصول إلى أي واجهة أخرى، مثل iucccontext ، iuccurimanager أو iuccuri ، كل منها CLSID محددة في ملف _tlb.h، إما الحصول على خطأ "فئة غير مسجل" في الحالتين الأولين، أو فشل HRESULT في الحالة الثالثة. الذي يقودني إلى سؤالي المقبل.

  • باستخدام OLE-Viewer يتم تسجيل جميع الواجهات كما ينبغي. لماذا لن يتم تسجيل جميع الطبقات القابلة للقراءة في DLL عند تسجيل DLL؟ وما يمكن أن يكون الأسباب التي تجعلها لا تتصرف بالمثل؟

Edit1 من uccapilib_tlb.h:

giveacodicetagpre.

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

المحلول

قد تتم مناقشة هذه المشكلة بالفعل بالتفصيل في منتديات Embarcadero .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top