ما هي COM / ActiveX / OCX: الفروق والعلاقات

· آخر تحديث: · · COM, ActiveX, OCX, OLE, تطوير Windows, تقنية قديمة

سجل التعديلات (3 تحديثات، آخر تحديث 3 Sep، 2026)

سجل بالتغييرات التي أُجريت على هذا المقال. وحيثما حُفظت نسخة سابقة، تبقى متاحة للقراءة عبر رابط دائم يحمل معرّف DOI.

أُضيفت روابط الاستشارة الموجودة في الأصل الياباني (consultation_services). ولم يتغيّر نصّ المقالة نفسه. قراءة النسخة السابقة لهذا التحديث (DOI: 10.5281/zenodo.22240821)
أُعيدَت الترجمة العربية كترجمة كاملة عن النص الياباني الأصلي، وأُضيفَت خريطة المعرفة.
أعيدت الترجمة كترجمة كاملة عن النص الياباني الأصلي. كانت النسخة العربية السابقة مختصراً يسقط أبواباً وجداول ورسوم Mermaid وتعليقات الأشكال وFAQ. أُعيدت هذه العناصر وفق الأصل الياباني، والادّعاءات التقنية مطابقة للنسخة اليابانية.
النشر الأول
الاستشهاد بهذا المقال(DOI: 10.5281/zenodo.21621350)

هذا المقال محفوظ على Zenodo. يرد أدناه معرّف DOI الذي يشير دائمًا إلى أحدث نسخة، ومعرّف DOI المثبَّت على النسخة التي تقرؤها.

小村 豪 (2026). ما هي COM / ActiveX / OCX: الفروق والعلاقات. شركة كومورا سوفت ذ.م.م.. https://doi.org/10.5281/zenodo.21621350 https://comcomponent.com/ar/blog/2026/03/13/000-what-is-com-activex-ocx/

DOI (أحدث نسخة)
10.5281/zenodo.21621350
DOI (هذه النسخة)
10.5281/zenodo.22279751

الكلمات الثلاث COM / ActiveX / OCX تظهر في الغالب مجموعة في مشاريع Windows القديمة.

  • يصل .ocx من البائع
  • مكوّن غامض جالس على شاشة Access أو VB6
  • يُقال «هذا COM» ثمّ مباشرة «إذن هو ActiveX»
  • بعد ذلك تجري كلمات regsvr32 و 32bit / 64bit و IE mode دفعة واحدة

بهذا التدفّق تتفكّك المحادثة في الغالب. المصطلحات قريبة، والتداخل التاريخيّ كبير أيضاً. بالمقابل، إن أمكن فصلها في الفهم، تغيّر سهولة التحقيق والترحيل والشرح كثيراً.

بنية تفكّك المحادثةظهور مصطلحات قريبة COM و ActiveX و OCX دفعة واحدة في الميدان نفسه يفكّك المحادثة، وفصل أيّها الأساس وأيّها المكوّن وأيّها الملفّ يسهّل التحقيق والترحيل والشرح.ظهور الكلمات الثلاث دفعة واحدةالمحادثة لا تتلاقىالفصل إلى أساس ومكوّن وملفّيسهل التحقيق والترحيل والشرح

الشكل 1: غرض هذه المقالة واحد. فصل «أيّها الأساس، وأيّها المكوّن، وأيّها الملفّ».

تنظّم هذه المقالة ما هي COM و ما هي ActiveX و ما هي OCX بترتيب تُرى فيه الفروق والعلاقات. خصوصاً نوضّح أيّها الأساس، وأيّها المكوّن، وأيّها الملفّ.

المحتويات

  1. الخلاصة أوّلاً (بجملة)
  2. ما تعنيه COM / ActiveX / OCX في هذه المقالة
  3. التنظيم في صفحة واحدة أوّلاً
    • 3.1. مخطّط العلاقات
    • 3.2. أقصر تنظيم للمصطلحات
  4. ما هي COM
    • 4.1. بجملة واحدة
    • 4.2. ما يهمّ في COM
    • 4.3. مذكّرة سطر واحد للمصطلحات
  5. ما هي ActiveX
    • 5.1. بجملة واحدة
    • 5.2. ActiveX ليست مخصّصة بالمتصفّح
  6. ما هي OCX
    • 6.1. بجملة واحدة
    • 6.2. كيف تختلف عن .dll
  7. تنظيم الفروق في جدول
  8. أين كانت تُستخدم
  9. لماذا يسهل الخلط
  10. كيف تُفهم في العمل اليوميّ الآن
  11. سوء فهم شائع
  12. نقاط فحص عند التحقيق
  13. الخلاصة
  14. المراجع

في المخطّط، يشير الخطّ المتّصل إلى علاقة قائمة دائماً، ويشير الخطّ المتقطّع إلى علاقة مشروطة (شروط قيامها مذكورة في شرح كلّ علاقة في الصفحة التفصيليّة). القائمة الكاملة للعلاقات (المجموع 18، مع الأدلّة ودرجة اليقين) وتعريفات المفاهيم الرئيسة مجمّعة في صفحة تفاصيل خريطة المعرفة (باليابانية). البيانات: JSON-LD / Turtle

1. الخلاصة أوّلاً (بجملة)

بتعبير فجّ لكن نافع مسبقاً، هكذا.

  • COM هي الأساس. عقد ثنائيّ لتبادل المكوّنات على Windows
  • ActiveX سياق مكوّن مبنيّ على COM. تظهر خصوصاً كعنصر تحكّم يُضمَّن في مضيف
  • OCX ملفّ تنفيذ يُرى كثيراً لعناصر تحكّم ActiveX. تصادفونه كامتداد ملفّ
  • أي أنّ الرؤية تصفو بـ COM = الآليّة، ActiveX = سياق المكوّن، OCX = الملفّ تقريباً
  • ذكرى ActiveX = ذلك الشيء الخطير القديم في المتصفّح صحيحة نصفاً وناقصة نصفاً. ActiveX ليست مخصّصة بالمتصفّح
  • كثيراً ما يُتحدَّث عن OCX = ActiveX كمترادفين تقريباً، لكنّ ذلك بدقّة يخلط مفهوماً بامتداد ملفّ
  • ليست تقنية تُجعل البطلة في تطوير جديد اليوم، لكنّها ما تزال تُصادَف في تطبيقات Windows القائمة و Office و Access و SDK الأجهزة والويب الداخليّ

يبدأ الأمر من فصل هذه الثلاثة في التفكير.

  1. هل ذلك حديث COM
  2. هل ذلك حديث عنصر تحكّم ActiveX
  3. هل ذلك مجرّد تسمية لأنّكم رأيتم ملفّ .ocx

إن اتّضح هذا، ينقشع الضباب كثيراً.

الأسئلة الثلاثة التي تُفصل أوّلاًالبدء من فصل هل الحديث أمامكم حديث آليّة COM، أم حديث مكوّن عنصر تحكّم ActiveX، أم مجرّد تسمية لأنّكم رأيتم ملفّ ocx.ماذا نتحدّث عنه الآنCOM = حديث الآليّةActiveX = حديث سياق المكوّنOCX = حديث الملفّ

الشكل 2: عند الحيرة ارجعوا إلى هذا الثالوث. COM آليّة، ActiveX سياق مكوّن، OCX ملفّ.

2. ما تعنيه COM / ActiveX / OCX في هذه المقالة

هذه الثلاثة كثيراً ما تتعايش بتهاون في العمل اليوميّ. لذا نثبّت المعنى أوّلاً في هذه المقالة.

  • COM: نموذج المكوّنات على Windows نفسه. أساس الواجهات و GUID والتسجيل والاستدعاء
  • ActiveX: عناصر تحكّم قابلة للتضمين مبنيّة على COM، أو سياق استخدامها. في العمل اليوميّ تشير غالباً خصوصاً إلى عنصر تحكّم ActiveX
  • OCX: امتداد ملفّ يُرى كثيراً لتنفيذ عنصر تحكّم ActiveX. .ocx

بملاحظة قصيرة: تاريخيّاً استُخدمت كلمة ActiveX بمعنى أوسع قليلاً في فترة. غير أنّ كثيراً من المواضع التي تُشكل عند قول ActiveX في العمل اليوميّ الآن هي تقريباً عنصر التحكّم، والتضمين، والمضيف، والمتصفّح، والتسجيل.

لذا نمضي في هذه المقالة أيضاً أساساً بـ ActiveX = حديث أقرب إلى عنصر تحكّم ActiveX.

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

الشكل 3: نعترف بالاتّساع التاريخيّ للكلمة، ونثبّت التركيز على «الأقرب إلى عنصر التحكّم» الذي يُشكل في العمل اليوميّ.

3. التنظيم في صفحة واحدة أوّلاً

3.1. مخطّط العلاقات

النظر أوّلاً إلى الصورة الإجماليّة في صفحة واحدة أسرع. لمن لا تظهر لديهم الرسوم، النقاط تحت المخطّط بالمحتوى نفسه، فاقرؤوها.

COM — أساس العقد الثنائيّOLE / Automation — آليّة التضمين والأتمتةActiveX — سياق عنصر تحكّم مبنيّ على COMعنصر تحكّم ActiveXOCX (.ocx) — شكل ملفّ تنفيذ يُرى كثيراًمضيف / حاوية — IE / Access / VB6 / MFC / WinForms

الشكل 4: مخطّط علاقة تتراكم فيه OLE / Automation و ActiveX و OCX فوق أساس COM، ويحمّل المضيف عنصر التحكّم.

المهمّ هنا أنّ COM و ActiveX ليستا الكلمة نفسها.

  • COM هي الأساس
  • OLE / Automation آليّة للتضمين والأتمتة
  • ActiveX تظهر كسياق عنصر تحكّم يُستخدم فوق ذلك
  • OCX ملفّ يُرى كثيراً لتنفيذ ذلك عنصر التحكّم

لذا إن سُئل هل ActiveX هي COM، فالجواب الأساس COM، لكنّ ActiveX ليست COM نفسها.

3.2. أقصر تنظيم للمصطلحات

الكلمة الفهم الأوّل
COM آليّة، عقد، أساس
ActiveX سياق مكوّن مضمَّن مبنيّ على COM
عنصر تحكّم ActiveX المكوّن نفسه الذي يُحمَّل على المضيف
OCX امتداد ملفّ يُرى كثيراً لعنصر تحكّم ActiveX
OLE / Automation آليّة التضمين والأتمتة والربط

للحفظ الأقصر يكفي هذا.

  • COM آليّة
  • ActiveX سياق مكوّن
  • OCX ملفّ

4. ما هي COM

4.1. بجملة واحدة

COM اختصار Component Object Model، وهو عقد ثنائيّ لتبادل المكوّنات على Windows.

العقد الثنائيّ هنا ليس ملاءمة الشيفرة المصدر أو مواصفات اللغة، بل واجهة تُحفَظ فيها الوعود حتّى بعد التجميع. إمكان استخدام مكوّن مصنوع بـ C++ من لغة أخرى أو تطبيق آخر يأتي من وجود هذا العقد.

بتقريب الإحساس العمليّ، COM ليست طريقة توزيع مكتبة مريحة بقدر ما هي آليّة تخفي التنفيذ وتربط بالعقد وحده.

مثلاً هذا النطاق نموذجيّ لـ COM (معنى كلّ كلمة ملخّص سطراً في 4.3).

  • عدّ مرجع بـ IUnknown
  • استكشاف الواجهة بـ QueryInterface
  • تحديد قائم على GUID مثل IID و CLSID
  • استخدام داخل العمليّة بـ DLL
  • استخدام خارج العمليّة بـ EXE

بمعنى آخر، COM أساس ثقافة المكوّنات على Windows.

فكرة العقد الثنائيّCOM تربط المكوّنات بعقد ثنائيّ تُحفَظ فيه الوعود حتّى بعد التجميع، لا بملاءمة الشيفرة المصدر أو مواصفات اللغة، لذا يمكن استخدام مكوّن مصنوع بـ C++ من لغة أخرى أو تطبيق آخر.مكوّن (التنفيذ مخفيّ)عقد ثنائيّ (الوعد المكشوف)لغة أخرى أو تطبيق آخرالوعد يُحفَظ بعد التجميع أيضاً

الشكل 5: جوهر COM «الإخفاء للتنفيذ والربط بالعقد وحده». لذلك تُستخدم المكوّنات عبر اللغات.

4.2. ما يهمّ في COM

إن ضبطتم الأساسيّات فقط، فما يلي مهمّ في COM.

  • التركيز على الواجهة
    • تُقرَّر ماذا يُكشف قبل التنفيذ
  • التحديد بـ GUID
    • يُحدَّد الصنف والواجهة فريداً
  • فصل المضيف عن التنفيذ
    • جهة الاستدعاء لا تحتاج معرفة التنفيذ الداخليّ
  • إمكان عبور العمليّات
    • لا العمليّة نفسها فقط، بل كمكوّن في عمليّة منفصلة أيضاً

هذا النطاق هو سبب عدم إنهاء COM كتقنية قديمة فحسب. من عصر مبكّر جدّاً كانت تحمل تصميم إعادة استخدام قائم على العقد بثبات.

أربعة أعمدة مهمّة في COMالتصميم المركّز على الواجهة، والتحديد الفريد بـ GUID، وفصل المضيف عن التنفيذ، وإمكان عبور العمليّات، هذه الأربع تجعل COM تصميم إعادة استخدام قائم على العقد.أساسيّات COMالتركيز على الواجهةالتحديد بـ GUIDفصل المضيف عن التنفيذإمكان عبور العمليّات

الشكل 6: أربعة أعمدة تسند COM. من عصر مبكّر حملت تصميم إعادة استخدام قائم على العقد.

4.3. مذكّرة سطر واحد للمصطلحات

في حديث COM تطير الكلمات التالية بلا شرح. هنا كمدخل للمفهوم نضبط سطراً واحداً لكلّ منها أوّلاً. لمن يريد الغوص حتى متعة التصميم، انظروا ما هي COM: لماذا ما يزال تصميم Windows COM جميلاً.

المصطلح المعنى في سطر واحد
الواجهة صفّ دوالّ يعد المكوّن بـ «يمكن استدعاء هذه». مفصولة عن التنفيذ
IUnknown الواجهة التي تصير أساس كلّ واجهات COM. تحمل الثلاثة فقط: QueryInterface / AddRef / Release
QueryInterface ميثود تسأل المكوّن الذي بأيديكم «هل تحمل هذه الواجهة أيضاً». إن حملها يُعاد مؤشّرها
عدّ المرجع عدّاد يعدّ عدد المستخدمين. يزيد بـ AddRef وينقص بـ Release، ويُحرَّر المكوّن عند الصيرورة 0
GUID اختصار Globally Unique Identifier، معرّف 128 bit يُكتب بشكل {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}. يُستخدم لتجنّب تصادم الأسماء
CLSID اختصار Class ID، GUID يشير إلى «أيّ مكوّن (صنف)». تسجيل السجلّ يُدار بهذا القيمة أيضاً
IID اختصار Interface ID، GUID يشير إلى «أيّ واجهة»
ProgID اسم بديل موجّه للإنسان أُلحق بـ CLSID. سلسلة مثل Excel.Application تُستخدم للإشارة إلى المكوّن من سكربتات وغيرها
Type Library بيانات تجمع معلومات أنواع الواجهات والميثودات التي يكشفها المكوّن. يقرأها VB6 أو .NET عند الإشارة إلى المكوّن
Apartment (STA / MTA) أسلوب خيوط COM. STA اتّفاق «يُستدعى ذلك المكوّن من خيط واحد فقط»، و MTA «يجوز الاستدعاء المتزامن من عدّة خيوط»، ومكوّنات الواجهة تقريباً في جانب STA

هذه المقالة تصل إلى تنظيم المفهوم، لذا لا نغوص في تفاصيل كلّ بند. عندما يصير حديث التنفيذ لازماً، استخدام كلمات هذا الجدول كما هي كمصطلحات بحث يسهّل الإصابة.

العمل الأساسيّ القائم على IUnknownIUnknown أساس كلّ واجهات COM تحمل عملاً أساسيّاً: السؤال عن واجهة أخرى بـ QueryInterface، وزيادة عدّ المرجع ونقصه بـ AddRef و Release، وتحرير المكوّن عند الصيرورة 0.IUnknown (أساس الكلّ)السؤال بـ QueryInterfaceإن حملها يُعاد المؤشّرإدارة العدد بـ AddRef و Releaseعند 0 يُحرَّر المكوّن

الشكل 7: ميثودات IUnknown الثلاث في مركز جدول المصطلحات تنقسم إلى عملين: «السؤال» و«العدّ».

5. ما هي ActiveX

5.1. بجملة واحدة

ActiveX أسهل فهماً كـ مكوّن برمجيّ قابل لإعادة الاستخدام مبنيّ على COM، خصوصاً كـ عنصر تحكّم يُضمَّن في مضيف أو حاوية.

قول ActiveX في العمل اليوميّ حديث عنصر تحكّم ActiveX باحتمال كبير جدّاً. مثلاً ينطبق زرّ، أو شبكة، أو رسم بيانيّ، أو تقويم، أو عارض، أو مكوّن ربط أجهزة.

ActiveX ليست تقنية عملاقة تقف وحدها بتعاظم بقدر ما يصعب الانحراف إن اعتُبرت مكوّناً يعمل مضمَّناً داخل مضيف ما.

مكوّن يعمل مضمَّناً في مضيفقول ActiveX في العمل اليوميّ حديث عنصر تحكّم ActiveX باحتمال كبير، ويشير إلى مكوّن يعمل مضمَّناً في مضيف أو حاوية مثل زرّ أو شبكة أو رسم بيانيّ أو عارض أو مكوّن ربط أجهزة.مضيف / حاويةعنصر تحكّم ActiveXشبكة أو تقويمعارض أو مكوّن ربط أجهزةليست تقنية عملاقة تقف وحدها

الشكل 8: اعتبار ActiveX «مكوّناً يعمل مضمَّناً» يصعّب الانحراف.

5.2. ActiveX ليست مخصّصة بالمتصفّح

انطباع ActiveX = شيء Internet Explorer قويّ جدّاً. هذا ليس خطأ، لكنّه ليس ذلك فقط.

نذكر مواضع استُخدمت فيها عناصر تحكّم ActiveX.

  • نماذج Access
  • تطبيقات VB6 (Visual Basic 6.0)
  • حاويات MFC (مكتبة Microsoft Foundation Class)
  • محيط Office / VBA
  • استخدام أغلفة COM من WinForms
  • Internet Explorer وسياق تشغيل توافقه

أي أنّ ActiveX ليست تقنية متصفّح حصراً، بل تقنية مكوّنات استُخدمت طويلاً في جانب تطبيقات Windows أيضاً.

إن لم يتّضح هذا، تنظرون إلى ActiveX الموجود في ويب داخليّ و ActiveX المدفون في شاشة Access كأنّهما شيئان مختلفان. فعليّاً كلاهما أقرباء قريبان جدّاً من COM.

مواضع استُخدمت فيها عناصر تحكّم ActiveXنماذج Access وتطبيقات VB6 وحاويات MFC ومحيط Office و VBA واستخدام أغلفة COM من WinForms و Internet Explorer: ActiveX ليست مخصّصة بالمتصفّح واستُخدمت طويلاً في جانب تطبيقات Windows أيضاً.عنصر تحكّم ActiveXAccess أو VB6 أو MFCمحيط Office أو VBAغلاف COM في WinFormsعالم Internet Explorerالشهرة هنا فقط

الشكل 9: برزت في IE فحسب، ومعظم مواضع الاستخدام في جانب تطبيقات Windows.

6. ما هي OCX

6.1. بجملة واحدة

OCX امتداد ملفّ يُستخدم كثيراً لتنفيذ عنصر تحكّم ActiveX. إن عثرتم على .ocx في ميدان Windows، فيجوز الاشتباه أوّلاً بـ مكوّن COM من نوع عنصر تحكّم مضمَّن.

مواضع الظهور تقريباً هذا النطاق.

  • توزيعات SDK البائع
  • مشاريع VB6 / Access / MFC قديمة
  • ملفّ تسجيل ضمن المثبِّت
  • مكوّن يحتاج regsvr32

ما ينبغي ضبطه أنّ OCX شكل ملفّ، لا المفهوم نفسه. لذا إن قيل ما هي OCX بتهاون، فهي ملفّ يُصادَف كثيراً ككيان عنصر تحكّم ActiveX.

6.2. كيف تختلف عن .dll

هذا أيضاً موضع يسهل الاختلاط فيه.

  • .ocx يوحي بقوّة أنّه عنصر تحكّم ActiveX
  • .dll قد تكون مكتبة عاديّة، أو خادم COM، أو DLL معتمدة حول ActiveX

رؤية .ocx تكفي لإصابة أنّ الحديث أقرب إلى ActiveX، أمّا رؤية .dll وحدها فلا تكفي لمعرفة ما هو بعد.

الشائع في العمل اليوميّ نمط يصطفّ فيه:

  • vendorcontrol.ocx
  • vendorhelper.dll
  • vendorcore.dll

ويكون البطل OCX، وتسنده DLL.

لذا إن سُئل هل OCX نوع من DLL، فالإحساس قريب، لكنّ في التحقيق الأأمن فصل الأدوار.

فرق المعلومات المقروءة من الامتدادocx يوحي بقوّة أنّه عنصر تحكّم ActiveX، أمّا dll فلا يُعرف بعد إن كانت مكتبة عاديّة أو خادم COM أو DLL معتمدة. في العمل اليوميّ شائع نمط تسند فيه DLL البطل OCX..ocx.dllما الامتدادإصابة أنّه أقرب إلى ActiveXلا يُعرف ما هو بعدمكتبة أم خادم COM أم معتمدةشكل تسند فيه DLL البطل OCX

الشكل 10: .ocx يتيح الإصابة، أمّا .dll فلا يُعرف ما هي حتى تُحقَّق الأدوار.

7. تنظيم الفروق في جدول

الكلمة ما هي كلمات تُرى كثيراً في العمل اليوميّ الكيان الشائع
COM نموذج مكوّنات، أساس العقد الثنائيّ IUnknown, QueryInterface, CLSID, IID, Apartment .dll, .exe, معلومات التسجيل
ActiveX سياق عنصر تحكّم مبنيّ على COM حاوية، تضمين، خصائص، أحداث عنصر تحكّم ActiveX
عنصر تحكّم ActiveX مكوّن قابل لإعادة الاستخدام يُوضَع فعليّاً شبكة، تقويم، عارض، ربط أجهزة .ocx, .dll
OCX امتداد ملفّ يُرى كثيراً لعنصر تحكّم ActiveX regsvr32, صندوق الأدوات, 32bit / 64bit xxx.ocx
OLE / Automation آليّة التضمين والأتمتة ربط Office، صفحات خصائص، أتمتة وظائف متنوّعة مبنيّة على COM

للحفظ من هذا الجدول أوّلاً هكذا.

  • COM أعمال الأساس
  • ActiveX ثقافة مكوّنات تركب فوقه
  • OCX ملفّ تلتقطونه في الميدان

8. أين كانت تُستخدم

ActiveX / OCX ذاكرة المتصفّح فيهما أقوى من اللازم، فيبدوان تقنية ويب قديمة. غير أنّهما استُخدمتا فعليّاً على نطاق أوسع.

مواضع ملموسة كهذه.

  • تطبيقات سطح المكتب
    • VB6
    • MFC / C++
    • نماذج Access
    • محيط Office / VBA
  • المتصفّح / الويب الداخليّ
    • عارض يُضمَّن في Internet Explorer
    • مكوّن توقيع
    • مكوّن نقل ملفّات
    • مكوّن ربط أجهزة محيطة
  • تطبيقات .NET قائمة
    • عناصر تحكّم ActiveX قائمة تُستخدم بغلاف من WinForms
    • حالات تمديد عمر أصل COM قائم كمكوّن واجهة

هنا أيضاً نعود في النهاية إلى أنّ ActiveX ليست مخصّصة بالإنترنت. برزت في IE فبدت تقنية ويب، أمّا الواقع فالنظر إليها كـ تقنية مكوّنات مضمَّنة على Windows أوقع في العمل اليوميّ.

انزياح المظهر عن الواقعبروزها في IE يجعل ActiveX تبدو تقنية ويب قديمة، لكنّها استُخدمت فعليّاً على نطاق واسع في تطبيقات سطح المكتب والويب الداخليّ وتطبيقات .NET القائمة، والواقع تقنية مكوّنات مضمَّنة على Windows.ذاكرة البروز في IEتبدو تقنية ويب قديمةمواضع الاستخدام الفعليّةتطبيقات سطح المكتبالمتصفّح والويب الداخليّتطبيقات .NET قائمةالواقع تقنية مكوّنات مضمَّنة على Windows

الشكل 11: انزياح مظهر «تقنية ويب قديمة» عن واقع «تقنية مكوّنات مضمَّنة على Windows».

9. لماذا يسهل الخلط

9.1. طبقات الكلمات مختلفة، لكنّها تظهر في المحادثة نفسها

  • COM حديث الأساس
  • ActiveX حديث سياق المكوّن
  • OCX حديث الملفّ

الطبقات مختلفة أصلاً، لكنّها في العمل اليوميّ تظهر معاً في الميدان نفسه، فتميل المحادثة إلى التعكّر.

9.2. كلمة ActiveX أوسع قليلاً

معنى COM ثابت نسبيّاً. أمّا ActiveX فتُستخدم أوسع قليلاً تاريخيّاً وعمليّاً.

حسب الشخص ينزاح ما يُشار إليه إلى واحد من:

  • عنصر التحكّم نفسه
  • ملفّ .ocx
  • مكوّن قديم يعمل في IE
  • مكوّنات مضمَّنة مبنيّة على COM عموماً

عند هذه النقطة لم تعد المحادثة تتلاقى أصلاً.

9.3. لحظة رؤية .ocx تغري بتسمية الكلّ ActiveX

هذا الإحساس مفهوم. في العادة يكفي للتفاهم تقريباً.

غير أنّه في مواضع الترحيل والتحقيق، إن لم تُفصل:

  • هل هو مكوّن واجهة
  • في أيّ مضيف يعمل
  • هل التسجيل لازم
  • كيف حال 32bit / 64bit
  • هل ثمّة اعتماد على المتصفّح

فسوف تسقطون سقوطاً صحيحاً لاحقاً.

ثلاثة أسباب للخلطظهور حديث بطبقات مختلفة في المحادثة نفسها، واتّساع كلمة ActiveX قليلاً، والرغبة في تسمية الكلّ ActiveX لحظة رؤية ocx، هذه الثلاثة سبب الخلط.حديث بطبقات مختلفة في المحادثة نفسهاتعكّر المحادثةكلمة ActiveX أوسعرؤية ocx وتسمية الكلّ كذلكالسقوط في مواضع الترحيل والتحقيق

الشكل 12: هويّة الخلط ظهور طبقات مختلفة — أساس ومكوّن وملفّ — معاً في الميدان نفسه.

10. كيف تُفهم في العمل اليوميّ الآن

أوّلاً، العثور على COM / ActiveX / OCX لا يلزم النفي الشامل فوراً. غير أنّ معاملة الكلّ بالحرارة نفسها خطرة أيضاً.

اعتماد ActiveX في جانب المتصفّح

هنا الأأمن النظر بتشدّد ذي أولويّة.

  • ليست التيّار الرئيس لتطوير المتصفّحات الحديثة
  • في سياق التشغيل المتوافق يصير IE mode موضوع حديث، لكنّ الأفضل النظر إليه كـ جسر للتوافق الخلفيّ
  • يصعب التوصية بالإمساك به كتقنية افتراض جديدة

الحكم يحتاج محور الزمن أيضاً. تطبيق سطح مكتب IE11 متقاعد أصلاً، والركيزة الباقية الآن هي IE mode في Microsoft Edge. حول ذلك IE mode أعلنت Microsoft سياسة الدعم حتى 2029 على الأقلّ، والإعلان قبل سنة عند الإلغاء. أي أنّ 2029 ليست «أجلاً يجوز الإهمال حتى ذلك الحين»، بل موضوع حساب عكسيّ كـ أجل إنهاء النزع حتى ذلك الحين. خطوات النزع نفسها مكتوبة منفصلة في دليل الخروج من أنظمة تعتمد IE mode.

ActiveX في جانب الويب أوقع التفكير فيه بـ «من أين يُنزع» أكثر من «كيف يُمدَّد عمره».

محور زمن ActiveX في جانب المتصفّحتطبيق سطح مكتب IE11 متقاعد، والركيزة الباقية IE mode في Edge، وأعلنت Microsoft سياسة الدعم حتى 2029 على الأقلّ والإعلان قبل سنة عند الإلغاء. 2029 ليست أجلاً يجوز الإهمال بل تُحسب عكسياً كأجل إنهاء النزع.سطح مكتب IE11 متقاعدالركيزة الباقية IE mode في Edgeالدعم حتى 2029 على الأقلّالحساب العكسيّ كأجل إنهاء النزعسياسة الإعلان قبل سنة عند الإلغاء

الشكل 13: 2029 ليست مهلة بل موعد نهائيّ. جانب المتصفّح يُفكَّر فيه بـ «من أين يُنزع».

اعتماد ActiveX / OCX في جانب سطح المكتب

هنا يمكن الحكم بواقعيّة أكبر قليلاً.

  • يعمل بثبات داخل مضيف قائم
  • جهة التوزيع محدودة
  • ثمّة أفق لصيانة البائع أو صيانة داخليّة
  • افتراضات التسجيل و DLL المعتمدة و bitness مفهومة

إن اكتملت هذه الشروط، فقرار الإبقاء شائع.

في المقابل، إن كان:

  • المراد تحميل OCX بـ 32bit كما هو في جانب 64bit
  • المراد نقل المحيط فقط إلى .NET
  • السقوط في كلّ مرّة عند النشر والتسجيل
  • بقاء اعتماد على المتصفّح

فالأأمن فصل التفكير إلى الإبقاء / التغليف / الاستبدال.

ما يُسأل في العمل اليوميّ الآن ليس هل سيّئ لأنّه ActiveX، بل أين يُصنع الحدّ. أسهل تعاملاً إن نُظر إليه كـ سطح وصل لنظام قائم أكثر من تقنية قديمة.

تفرّع الحكم في جانب سطح المكتبإن اكتمل العمل المستقرّ والتوزيع المحدود وأفق الصيانة وفهم الافتراضات فقرار الإبقاء شائع، وإن وُجد تصادم bitness أو نقل المحيط إلى .NET أو حوادث نشر أو اعتماد متصفّح فُصل التفكير إلى الإبقاء والتغليف والاستبدال.العمل المستقرّ وفهم الافتراضات مكتملانثمّة مواضع تعثّرهل اكتملت الشروطقرار الإبقاء شائع أيضاًفصل الإبقاء والتغليف والاستبدالأين يُصنع الحدّ كسطح وصل

الشكل 14: جانب سطح المكتب يُحكم بفصل الحرارة. ما يُسأل ليس الخير والشرّ بل موضع الحدّ.

11. سوء فهم شائع

سوء الفهم 1: COM = ActiveX

خطأ. COM هي الأساس، و ActiveX سياق عنصر تحكّم يُستخدم فوقه.

سوء الفهم 2: ActiveX = Internet Explorer

خطأ. اشتهرت في IE وهذا واقع، لكنّ ActiveX ليست مخصّصة بالمتصفّح.

سوء الفهم 3: ActiveX = OCX

في العمل اليوميّ تُستخدمان بمعنى قريب جدّاً، لكنّهما بدقّة مختلفتان. ActiveX حديث سياق أو مكوّن، و OCX كيان يُصادَف كامتداد ملفّ.

سوء الفهم 4: OCX مجرّد DLL فحسب

بتهاون قريب، لكنّ في التحقيق الأفضل عدم التهاون. .dll وحدها لا تُقرأ أدوارها، أمّا .ocx فرائحتها أقرب إلى عنصر التحكّم بقوّة.

سوء الفهم 5: COM تقنية ميّتة

على الأقلّ في عالم Windows، هذا التعبير فجّ. تبدو قد نزلت قليلاً عن المسرح الأماميّ فحسب، وفي سياق التصميم والتوافق المتبادل ما تزال تظهر اليوم.

تصحيح سوء الفهم الشائعCOM ليست ActiveX نفسها بل الأساس، و ActiveX ليست مخصّصة بـ IE، و ActiveX و OCX فرق مفهوم وملفّ، و COM ليست تقنية ميّتة.COM = ActiveX ؟COM أساس وشيء آخرActiveX مخصّصة بـ IE ؟نشطة على سطح المكتب أيضاًActiveX = OCX ؟فرق المفهوم والملفّCOM ميّتة ؟ما تزال تظهر في التوافق المتبادل

الشكل 15: سوء الفهم الخمسة كلّها يولد من خلط فرق الطبقات.

12. نقاط فحص عند التحقيق

عند العثور على COM / ActiveX / OCX، التحقّق من هذا النطاق بالترتيب يصعّب التيه.

  1. ما نوع المكوّن
    • عنصر تحكّم واجهة
    • عارض
    • ربط أجهزة
    • ربط Office / Access
  2. أين يعمل
    • Access / VBA
    • VB6 / MFC
    • WinForms
    • IE / IE mode
  3. ما الملفّ والمعرّفات
    • .ocx / .dll / .exe
    • ProgID
    • CLSID
    • Type Library
  4. كيف التسجيل والنشر
    • هل regsvr32 لازم
    • هل ثمّة DLL معتمدة
    • هل امتيازات المدير لازمة
  5. هل يتطابق bitness
    • 32bit أم
    • 64bit
    • هل يلزم العمل في العمليّة نفسها
  6. كيف يُعامل مستقبلاً
    • الإبقاء كما هو
    • صنع حدّ والتغليف
    • الاستبدال

12.1. بماذا تُحقّقون

النقاط الستّ أعلاه «ماذا يُنظر»، لذا نرتّب أيضاً «أين يُفتح». إن لم تُعرف هذه، تتوقّفون عند الخطوة الأولى رغم وجود قائمة الفحص.

المراد معرفته الأداة المستخدمة / الموضع المنظور
هل ذلك .dll / .ocx خادم COM يمكنه التسجيل الذاتيّ بـ dumpbin /exports اسم_الملف المرفق مع Visual Studio، إن صُدِّر DllRegisterServer فهو خادم COM من نوع التسجيل الذاتيّ. regsvr32 يستدعي هذه الدالّة
طريقة التسجيل والإلغاء التسجيل بـ regsvr32 اسم_الملف، والإلغاء بـ regsvr32 /u اسم_الملف. تلزم امتيازات المدير. على Windows بـ 64bit، %SystemRoot%\System32\regsvr32.exe لـ 64bit، و %SystemRoot%\SysWOW64\regsvr32.exe لـ 32bit، فيُختاران وفق bitness المكوّن
جلب ملفّ الكيان من CLSID القيمة الافتراضيّة لـ HKEY_CLASSES_ROOT\CLSID\{CLSID}\InprocServer32 في السجلّ هي مسار خادم داخل العمليّة (DLL / OCX). لمكوّن خارج العمليّة انظروا LocalServer32
جلب CLSID من ProgID القيمة الافتراضيّة لـ HKEY_CLASSES_ROOT\اسم_ProgID\CLSID هي CLSID. يمكن أيضاً النظر إلى المفتاح الفرعيّ ProgID من جانب CLSID عكسياً
موضع تسجيل مكوّن 32bit على Windows بـ 64bit، تسجيل 32bit يدخل تحت HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\CLSID. لا تحكموا بـ «غير مسجّل» بالنظر إلى جانب 64bit وحده
تعداد الواجهات المكشوفة إن وُجد OLE/COM Object Viewer (oleview.exe) ضمن Windows SDK، يمكن تعداد الأصناف المسجّلة و Type Library. قد لا يُرفق حسب إصدار SDK، فإن غاب فتتبّعوا من السجلّ وإعدادات الإشارة في بيئة التطوير
bitness جانب المضيف في علامة تبويب «التفاصيل» في مدير المهام، انقروا بزرّ الفأرة الأيمن على عنوان العمود وأضيفوا عمود «المنصّة»، فيتبيّن لكلّ عمليّة إن كانت 32 بت أم 64 بت. OCX بـ 32bit لا يُحمَّل مباشرةً في عمليّة 64bit
فشل حلّ التسجيل أو DLL المعتمدة تتبّع الوصول إلى السجلّ والملفّات بـ Process Monitor يُظهر أيّ مفتاح أو أيّ DLL فشل البحث عنه. طريقة الاستخدام ملخّصة في دليل عمليّ لـ Process Monitor (ProcMon)

الجري بـ ثمّة ActiveX فننفّذ الكلّ من جديد دون النظر إلى هذا النطاق يدوس الفخّ القديم بنظافة. الأأمن ملء النقاط الستّ أعلاه وتقابل الأدوات أوّلاً، ثمّ تقرير «الإبقاء / التغليف / الاستبدال» في الفصل 10.

ترتيب التحقيقالتحقّق بالترتيب من نوع المكوّن، وأين يعمل، والملفّ والمعرّفات، والتسجيل والنشر، وتطابق bitness، ثمّ تقرير الإبقاء أو التغليف أو الاستبدال.النظر إلى نوع المكوّنالنظر إلى أين يعملجرد الملفّ والمعرّفاتالتحقّق من التسجيل والنشرالتحقّق من bitnessتقرير الإبقاء أو التغليف أو الاستبدال

الشكل 16: الأأمن عدم الجري فوراً إلى تنفيذ جديد، وملء هذا الترتيب ثمّ تقرير الاتّجاه.

13. الخلاصة

إن قيل فرق COM / ActiveX / OCX بأكثر تعبير فجّ، لكن بشكل نافع في العمل اليوميّ، فهكذا.

  • COM هي الأساس
  • ActiveX سياق مكوّن مضمَّن مبنيّ على COM
  • OCX ملفّ يُرى كثيراً لعنصر تحكّم ActiveX

حين تصيرون قادرين على فصل هذه الثلاثة في التفكير، يصير أسهل رؤية بكثير:

  • هل هذا مجرّد .ocx
  • هل هي مشكلة COM كلّها
  • هل هو ActiveX يعتمد على المتصفّح
  • هل هو مكوّن يمكن إبقاؤه على سطح المكتب

التقنية القديمة ليست صعبة لأنّ الاسم قديم، بل معقّدة لأنّ الأساس والمكوّن والملفّ تظهر في المحادثة نفسها. غير أنّه إن ظهرت البنية، تصير مشكلة قابلة للمعالجة على نحو مفاجئ.

14. مراجع

أحدث المقالات التي تشترك في نفس الوسوم. عمّق فهمك بمواضيع مرتبطة.

ترتبط هذه المقالة بشكل طبيعي بصفحات الخدمات التالية.

الأسئلة الشائعة

أسئلة شائعة حول موضوع هذه المقالة.

ما هو ملف OCX؟
OCX امتداد ملف يُستخدم كثيراً لتنفيذ عنصر تحكّم ActiveX. إن عثرتم على .ocx في ميدان Windows، فيجوز الاشتباه أوّلاً بمكوّن COM من نوع عنصر تحكّم مضمَّن. كثيراً ما يظهر كتوزيع SDK بائع، أو مشروع VB6 / Access / MFC قديم، أو ملف تسجيل ضمن المثبِّت، أو مكوّن يحتاج regsvr32. ضبط أنّ OCX شكل ملفّ لا المفهوم نفسه يصعّب الاختلاط.
ما الفرق بين COM و ActiveX؟
COM عقد ثنائيّ لتبادل المكوّنات على Windows، أي الأساس. ActiveX مكوّن برمجيّ قابل لإعادة الاستخدام مبنيّ على COM، وغالباً يشير إلى سياق عنصر تحكّم يُضمَّن في مضيف أو حاوية. الرؤية تصفو بـ «COM = الآليّة، ActiveX = سياق المكوّن، OCX = الملفّ». أساس ActiveX هو COM، لكنّ ActiveX ليس COM نفسه.
هل ActiveX تقنية مخصّصة لـ Internet Explorer؟
لا. اشتهرت في IE وهذا واقع، لكنّ عناصر تحكّم ActiveX استُخدمت طويلاً أيضاً في جانب تطبيقات Windows: نماذج Access، وتطبيقات VB6، وحاويات MFC، ومحيط Office / VBA، واستخدام أغلفة COM من WinForms. ليست تقنية متصفّح حصراً، والنظر إليها كتقنية مكوّنات مضمَّنة على Windows أوقع في العمل اليوميّ. اعتماد ActiveX في جانب المتصفّح اليوم أوقع التفكير فيه بـ «من أين يُنزع» أكثر من «كيف يُمدَّد عمره».
كيف يختلف OCX عن DLL؟
امتداد .ocx يوحي بقوّة أنّه عنصر تحكّم ActiveX، أمّا .dll فقد يكون مكتبة عاديّة أو خادم COM أو DLL معتمدة حول ActiveX. في العمل اليوميّ شائع نمط يكون فيه vendorcontrol.ocx البطل وتسنده DLL مثل vendorhelper.dll. إن سُئل «هل OCX نوع من DLL» فالإحساس قريب، لكنّ في التحقيق والترحيل الأأمن فصل الأدوار.

الملف الشخصي للمؤلف

صفحة الملف الشخصي لمؤلف المقالة.

غو كومورا

مؤسّس شركة كومورا سوفت ذ.م.م.

يركّز على تطوير برامج ويندوز، والاستشارات التقنية، والتحقيق في الأخطاء، ويتميّز في المشاريع التي تبقى فيها الأصول القديمة ناشطة، وفي تشخيص الأعطال التي يصعب تحديد سببها.

العودة إلى المدونة