سؤال

هل من الممكن استخدام OCX (تحكم ActiveX) على winform (ربما إضافته برمجيًا) دون تسجيل OCX أولاً في REGSRV32؟

ما أحاول تحقيقه هو تمكين تثبيت Xcopy. لقد كان "Axinterop..dll "و" interop..dll "ملف تم إنشاؤه من جهاز DEV الخاص بي.

لقد رأيت إمكانية استدعاء com dll دون تسجيله أولاً (prosyslib, وفقًا للمؤلف ، لكنني لم أختبرها بعد) ، نظرًا لأن OCX يعتمد أيضًا على COM ، وبالتالي أفترض أنه يجب أن يكون هناك طريقة لفعل ذلك أيضًا.

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

المحلول

نعم، من الممكن تحقيق ذلك. يجب أن تفترض أن تطبيقك لن يتم نشره إلا على Windows XP (أو Windows Server 2003) أو لاحقًا ، وبعد ذلك يمكنك استخدام ما يسمى "COM Free Com" لتحقيق ذلك.

في الأساس ما تفعله هو إنشاء ملف واضح لـ ActiveX Control DLL ، بحيث تعرف نظام Windows Loader & Com Dll ما هو تسجيله دون الحاجة إلى وضع ذلك في السجل.

تجول في ما يجب فعله هو في هذه المقالة على MSDN:التنشيط الخالي من التسجيل لمكونات com: تجول

"الخطوة 6" و "الخطوة 7" في هذه المقالة تحتوي كل شىء سوف تحتاج.

لقد جربت هذا للتو على أحد برامج C# الخاصة بي التي تستخدم التحكم في شبكة Microsoft ActiveX ("شبكة MS Flex" القديمة) وهي تعمل بشكل جيد. تأكد من إنشاء ملف واضح لكل من التطبيق الخاص بك و COM DLL ، واستبدال GUIDs المناسبة في الأماكن المناسبة. قد تحتاج إلى استخدام Oleview لحفر المعرفات الصحيحة لاستخدامها من ActiveX DLL إذا لم يكن لديك مفيد.

نصائح أخرى

كن حذرًا من أن استخدام COM الخالية من السجل لمكونات COM التي تم تأليفها في .NET يمكن أن تسبب بشكل عشوائي تعطل على Windows XP!

الروابط: سؤال stackoverflow حيث تعلمت هذا ، Microsoft KnowledgeBase مقالة - سلعة يشار إليها في هذا السؤال. هناك إصلاح ساخن ولكن لا يُسمح لك بإعادة توزيعه.

إنه أكثر بساطة في Visual Studio: ما عليك سوى الانتقال إلى المراجع ، والعثور على المواضع التي تم إنشاؤها بواسطة OCX (يجب أن يكون هناك 2 ، Axsomething وشيء ما) وتعيين لكلاهما معزول: صحيح في خصائصها. لا يظاهر ، لا رمز. يجب عليك الآن توزيع EXE الخاص بك مع ملف DLL الذي يحتوي على OCX. على جهاز التطوير الخاص بك ، يمكن تسجيل OCX.

بعد 10 ساعات من البحث عن كيفية تشغيل تطبيق VB6 مع OCX على Win7 دون تسجيله وحقوق المسؤول ، وجدت القليل من حل النقرات هنا: http://mmm4vb6.atom5.com/yes-update-0-12-5479.html#c

تحتاج إلى التحقق من التضمين من البيان لجعله يعمل. يعمل كما سحر!

أقوم بنشر الحل هنا ، لأنني وجدت هذا السؤال هنا أيضًا.

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