ربط الكائنات وتضمينها
تقنية ربط وتضمين الكائنات ( OLE ) هي تقنية خاصة طورتها مايكروسوفت ، تتيح تضمين وربط المستندات والكائنات الأخرى . بالنسبة للمطورين، وفرت هذه التقنية ميزة OLE Control Extension (OCX)، وهي طريقة لتطوير واستخدام عناصر واجهة مستخدم مخصصة. من الناحية التقنية، يُعتبر كائن OLE أي كائن يُنفذ هذه IOleObjectالواجهة، وربما إلى جانب مجموعة واسعة من الواجهات الأخرى، وذلك حسب احتياجات الكائن.
ملخص
تتيح تقنية OLE لتطبيق التحرير تصدير جزء من مستند إلى تطبيق تحرير آخر ، ثم استيراده مع محتوى إضافي. على سبيل المثال، قد يرسل نظام النشر المكتبي نصًا إلى معالج نصوص ، أو صورة إلى محرر صور نقطية باستخدام OLE. [ 1 ] تتمثل الفائدة الرئيسية لتقنية OLE في إضافة أنواع مختلفة من البيانات إلى مستند من تطبيقات مختلفة، مثل محرر النصوص ومحرر الصور. ينتج عن ذلك مستند بتنسيق ملف ثنائي مركب، وملف رئيسي يُشير إليه المستند. تؤثر التغييرات التي تُجرى على البيانات في الملف الرئيسي فورًا على المستند الذي يُشير إليه. يُسمى هذا "الربط" (بدلاً من "التضمين").
يمكن أيضًا استخدام OLE لنقل البيانات بين التطبيقات المختلفة باستخدام عمليات السحب والإفلات أو الحافظة .
تاريخ
OLE 1.0
كانت تقنية OLE 1.0، التي صدرت عام 1990، تطوراً لمفهوم تبادل البيانات الديناميكي (DDE) الأصلي الذي طورته مايكروسوفت لإصدارات سابقة من نظام ويندوز . فبينما كان DDE يقتصر على نقل كميات محدودة من البيانات بين تطبيقين قيد التشغيل، كانت OLE قادرة على الحفاظ على روابط نشطة بين مستندين، أو حتى تضمين نوع من المستندات داخل نوع آخر.
تتواصل خوادم وعملاء OLE مع مكتبات النظام باستخدام جداول الوظائف الافتراضية (VTBLs). يتكون جدول الوظائف الافتراضية من بنية مؤشرات وظائف تستخدمها مكتبة النظام للتواصل مع الخادم أو العميل. صُممت مكتبتا الخادم والعميل، OLESVR.DLL و OLECLI.DLL ، في الأصل للتواصل فيما بينهما باستخدام رسالة WM_DDE_EXECUTE .
تطورت OLE 1.0 لاحقًا لتصبح بنية لمكونات البرامج تُعرف باسم نموذج كائن المكون (COM)، ولاحقًا DCOM .
عند وضع كائن OLE في الحافظة أو تضمينه في مستند، يتم تخزين تمثيل مرئي بتنسيقات ويندوز الأصلية (مثل صورة نقطية أو ملف تعريف )، بالإضافة إلى البيانات الأساسية بتنسيقها الخاص. يتيح ذلك للتطبيقات عرض الكائن دون الحاجة إلى تحميل التطبيق المستخدم لإنشائه، كما يسمح بتعديل الكائن في حال تثبيت التطبيق المناسب.
يسمح برنامج Object Packager ، وهو أحد مكونات OLE، والذي يتم شحنه من Windows 3.1 حتى Windows XP، بـ "تغليف" كائن غير OLE بحيث يمكن تضمينه في عميل OLE.
OLE 2.0
كان OLE 2.0 التطور التالي لتقنية OLE، حيث شارك العديد من الأهداف نفسها مع الإصدار 1.0، ولكن أُعيد تنفيذه باستخدام COM بدلاً من استخدام VTBLs مباشرةً. وشملت الميزات الجديدة أتمتة OLE ، والسحب والإفلات ، والتنشيط الموضعي ، والتخزين المنظم . تطورت المعرفات من أسماء كائنات OLE 1، ووفرت نظام تسمية هرمي للكائنات والموارد مشابهًا لعناوين URL أو URIs ، والتي تم ابتكارها بشكل مستقل. دمجت ويندوز الآن التقنيتين لدعم نوع معرف عنوان URL، ونظام معرف عنوان URL. قدم OLE 2.0 معرّف UUID لتسمية كائنات واجهة برمجة التطبيقات (API). [ 2 ]
عناصر تحكم OLE المخصصة
تم تقديم عناصر تحكم OLE المخصصة في عام 1994 كبديل لعناصر تحكم Visual Basic Extension التي أصبحت الآن قديمة. وبدلاً من ترقية هذه الأخيرة، اعتمدت البنية الجديدة على OLE. على وجه الخصوص، كان بإمكان أي حاوية تدعم OLE 2.0 تضمين عناصر تحكم OLE المخصصة، مع العلم أن هذه العناصر لا تتفاعل مع الأحداث إلا إذا كانت الحاوية تدعم ذلك. عادةً ما تُشحن عناصر تحكم OLE المخصصة على شكل مكتبة ارتباط ديناميكي بامتداد .ocx. في عام 1996، أصبحت جميع واجهات عناصر التحكم (باستثناء IUnknown) اختيارية لتقليل حجم ملفات عناصر التحكم، وبالتالي تسريع عملية التنزيل؛ وأُطلق عليها حينها اسم عناصر تحكم ActiveX .
التفاصيل الفنية
تُنفَّذ كائنات وحاويات OLE فوق نموذج كائن المكون ؛ وهي كائنات يمكنها تنفيذ واجهات لتصدير وظائفها. واجهة IOleObject هي الوحيدة الإلزامية، ولكن قد يلزم تنفيذ واجهات أخرى إذا كانت الوظائف التي تُصدِّرها تلك الواجهات مطلوبة.
لتسهيل فهم ما يلي، لا بد من شرح بعض المصطلحات. حالة عرض الكائن هي ما إذا كان شفافًا، أو معتمًا، أو معتمًا بخلفية صلبة، وما إذا كان يدعم الرسم بنسبة عرض إلى ارتفاع محددة. موقع الكائن هو كائن يمثل مكانه في حاويته. تدعم الحاوية كائن موقع لكل كائن بداخلها.
فيما يلي قائمة بالواجهات، مُصنّفة حسب الكائن الذي يحتاج عادةً إلى تنفيذها. عادةً ما يتم استدعاء الواجهات التي يُنفذها كائن OLE بواسطة حاوية OLE، والعكس صحيح. لاحظ أن المسافة البادئة في القائمة التالية تُشير إلى وراثة الواجهة. جميع الواجهات غير المُزاحة مشتقة من IUnknown .
كائن OLE
- كائن البيانات
- عند تفعيلها، تُمكّن هذه الخاصية من نقل البيانات والإشعار بتغييراتها. ويجب أن تُفعّل هذه الخاصية بواسطة عناصر تدعم السحب والإفلات، أو النسخ من الحافظة أو لصقها فيها، أو ربطها أو تضمينها في مستند يحتوي عليها.
- كائن مع موقع
- يُتيح هذا للمُستدعي إبلاغ كائن OLE بموقعه. تُوفّر OleObject هذه الوظيفة أيضًا ، ولكن يُمكن استخدام ObjectWithSite ، عند دعمها، إذا لم يتم استخدام OleObject لأغراض أخرى.
- أولي كاش
- يُتيح هذا تخزين العروض المرئية من كائن البيانات مؤقتًا. يسمح هذا للكائن المُضمّن بتخزين تمثيله المرئي، مما يُمكّن من عرضه لاحقًا دون الحاجة إلى تشغيل التطبيق الذي استُخدم لإنشاء الكائن.
- عادةً ما يتم استخدام التنفيذ الافتراضي.
- OleCache2
- يوفر تحكمًا أدق في التخزين المؤقت.
- عادةً ما يتم استخدام التنفيذ الافتراضي.
- OleCacheControl
- لا يتم استدعاء هذه الواجهة بواسطة الحاوية، ولكن داخليًا بواسطة الكائن للسماح له بتلقي إشعارات عند تشغيل كائن البيانات الخاص به ، مما يسمح له بالاشتراك في إشعارات تغييرات البيانات لهذا الكائن وبالتالي السماح له بتحديث العرض المخزن مؤقتًا بشكل صحيح.
- عادةً ما يتم استخدام التنفيذ الافتراضي.
- OleDocument
- يسمح لكائن OLE بدعم طرق عرض متعددة لبياناته، بالإضافة إلى بعض الوظائف ذات الصلة.
- OleDocumentView
- يُطبّق كائن المستند (كائن يُنفّذ واجهة OleDocument ) هذه الواجهة لكل عرض. يسمح هذا للمستدعي بتحديد موقع الكائن، والاستعلام عن حجمه وتحديده، وعرضه وتفعيله، بالإضافة إلى بعض الوظائف ذات الصلة.
- أولي ويندو
- OleInPlaceActiveObject
- يتم استدعاؤها بواسطة الحاوية الخارجية للكائن للتفاعل معه أثناء نشاطه، على سبيل المثال لمعالجة مفاتيح الاختصار في قائمة انتظار الرسائل الخاصة بالحاوية والمخصصة للكائن الموجود بداخلها.
- كائن OleInPlace
- يتم استدعاؤها بواسطة الحاوية لتفعيل أو تعطيل الكائن.
- IOleInPlaceObjectWindowless
- الكائن غير المُضمّن بنافذة هو كائن لا يملك نافذة خاصة به، بل يُعرض داخل نافذة الحاوية. تستخدمه الحاوية لإعادة توجيه الرسائل التي تتلقاها نافذة الحاوية والموجهة للكائن المُضمّن. على سبيل المثال، عند تحريك مؤشر الفأرة فوق نافذة، يضع نظام ويندوز رسالة "تحريك الفأرة" مع إحداثيات الفأرة في قائمة انتظار الرسائل الخاصة بالنافذة. إذا كانت هذه النافذة تحتوي على كائنات مُضمّنة غير مُضمّنة بنافذة، فقد يلزم إعادة توجيه الرسالة إلى هذا الكائن إذا كانت إحداثيات مؤشر الفأرة فوقه. ولأسباب مماثلة، توفر هذه الواجهة أيضًا إمكانية الوصول إلى واجهة DropTarget الخاصة بالكائن .
- أولي لينك
- يسمح هذا للكائن بدعم الربط، على سبيل المثال من خلال السماح للحاوية بتحديد مصدر الكائن المرتبط.
- عادةً ما يتم استخدام التنفيذ الافتراضي.
- OleObject
- تُعدّ هذه الواجهة، بلا شك، الأهمّ بالنسبة لكائن OLE. فهي تُمكّن الحاوية من إبلاغ الكائن بموقعه، وتهيئته من البيانات، وفتحه وإغلاقه، والاستعلام عن حجمه وتحديده، وطلب الإشعارات من AdviseSink الخاص بالحاوية ، وتنفيذ الكائنات المُعرّفة كـ"أفعال" على الكائن. غالبًا ما تتضمن هذه الأفعال "فتح" أو "تحرير"، ولكنها قد تتضمن أفعالًا أخرى أيضًا. يُعرّف أحد هذه الأفعال كفعل رئيسي، ويتم تنفيذه عند النقر المزدوج على الكائن.
- كائن العرض
- يُتيح هذا للكائن رسم نفسه مباشرةً، دون الحاجة إلى تمرير كائن بيانات إلى الحاوية. بالنسبة للكائنات التي تدعم كلاً من كائن البيانات وهذه الواجهة، عادةً ما تكون آلية التنفيذ الأساسية مشتركة.
- كائن العرض 2
- كما يسمح للمتصل بالاستعلام عن حجم الكائن.
- ViewObjectEx
- يضيف دعمًا للرسم الخالي من الوميض للأجسام الشفافة، واختبار النقر للأجسام ذات الأشكال غير المنتظمة، وتحديد حجم الجسم.
حاوية زيت الزيتون
- IAdviseSink
- يسمح للمنفذ بتلقي الإشعارات عند حفظ الكائن أو إغلاقه أو إعادة تسميته، أو عند تغيير بياناته أو عرضه المرئي.
- IAdviseSink2
- كما يسمح للمنفذ بتلقي إشعارات عند تغيير مصدر رابط كائن OLE.
- IAdviseSinkEx
- كما يسمح للمنفذ بتلقي إشعارات عند تغيير حالة عرض كائن OLE.
- موقع عميل IOle
- تتيح هذه الواجهة للمتصل الحصول على معلومات حول حاوية وموقع الكائن، بالإضافة إلى طلب حفظ الكائن وتغيير حجمه وإظهاره وإخفائه وما إلى ذلك.
- موقع IOleDocumentSite
- يُمكّن هذا الخيار المُستدعي من طلب تفعيل الكائن الموجود على هذا الموقع فورًا. في حال تطبيق هذه الواجهة، يجب أيضًا تطبيق واجهات IOleClientSite و IOleInPlaceSite و IAdviseSink .
- حاوية IOle
- تتيح هذه الواجهة للمستخدم إمكانية استعراض الكائنات المضمنة في الحاوية، أو البحث عنها بالاسم. وهي مفيدة بشكل أساسي إذا كانت الحاوية تدعم روابط الكائنات المضمنة.
- نافذة IOle
- نافذة واجهة المستخدم IOleInPlace
- يُمكّن هذا الخيار الكائنات المضمنة من التفاوض على مساحة أشرطة الأدوات في نافذة الحاوية.
- إطار IOleInPlace
- يُمكّن هذا الأمر المُستدعي من مطالبة الحاوية بإدراج عناصر قائمتها في قائمة فارغة تُصبح قائمة التعاون. كما يُمكّنه من مطالبة الحاوية بإظهار أو إخفاء هذه القائمة، وإظهار أو إخفاء مربعات الحوار، ومعالجة مفاتيح الاختصار التي يتلقاها الكائن المُحتوى والمُخصص للحاوية.
- موقع IOleInPlaceSite
- إذا كانت الحاوية تدعم هذه الواجهة، فإنها تسمح بتفعيل العناصر المضمنة في مكانها، أي دون فتحها في نافذة منفصلة. كما أنها توفر الوصول إلى واجهة المستخدم IOleInPlaceUIWindow الخاصة بالحاوية .
- IOleInPlaceSiteEx
- إذا قام حاوية بتنفيذ هذه الواجهة، فإنها تسمح للكائنات المضمنة بالتحقق مما إذا كانت بحاجة إلى إعادة الرسم عند التنشيط أو الإلغاء. كما تسمح لها بطلب تنشيط واجهة المستخدم الخاصة بها.
- موقع IOleInPlaceSiteWindowless
- إذا أراد حاوية دعم الكائنات المضمنة بدون نافذة، فعليها توفير وظائف للكائنات المضمنة تحل محل الوظائف التي توفرها نافذة الكائن المضمن عادةً. على سبيل المثال، توفر هذه الواجهة طريقة للوصول إلى سياق جهاز نافذة الحاوية، مما يُمكّن الكائن المضمن من الرسم في نافذة الحاوية.
- حاوية IOleUILink
- يحتوي هذا القسم على الطرق التي تستخدمها مربعات حوار OLE القياسية لإدارة الكائنات المرتبطة، وذلك لتحديث هذه الكائنات في حاوية، أو للاستعلام عن مصادرها وتغييرها. ويُستخدم هذا القسم في مربعات حوار "الروابط" و"تغيير المصدر" و"تحديث الروابط" و"خصائص الكائن".
- IOleUILinkInfo
- بالإضافة إلى ذلك، يسمح مربعات الحوار بالاستعلام عن آخر وقت تم فيه تحديث الكائنات المرتبطة، وما إذا تم ذلك تلقائيًا أم يدويًا.
- IOleUIObjInfo
- تحتوي هذه الواجهة على الطرق اللازمة لمربع حوار "خصائص الكائن". على سبيل المثال، إذا فتح المستخدم مربع حوار "خصائص الكائن" وطلب تحويل الكائن إلى نوع آخر، فسيتم استدعاء إحدى الطرق الموجودة في هذه الواجهة.
- مدير التراجع IOleUndoManager
- يُوفّر خدمة تراجع مركزية لكلٍّ من الحاوية نفسها والكائنات المُضمّنة. عند تنفيذ إجراء قابل للتراجع، يتم إنشاء وحدة IOleUndoUnit وإضافتها إلى IOleUndoManager.
آخر
- حامل بيانات IDataAdviseHolder
- يمكن تنفيذ أساليب IDataObject المتعلقة بإشعارات تغيير البيانات عن طريق استدعاء أساليب هذه الواجهة.
- عادةً ما يتم استخدام التنفيذ الافتراضي.
- حامل نصيحة IOle
- يمكن تنفيذ أساليب IOleObject المتعلقة بالإشعارات عن طريق استدعاء أساليب هذه الواجهة.
- عادةً ما يتم استخدام التنفيذ الافتراضي.
- IDropSource
- يتم تنفيذ هذه الميزة بواسطة عناصر قابلة للسحب، أي عناصر يمكن أن تكون مصدرًا لعمليات السحب والإفلات. عند تنفيذها، تسمح هذه الميزة للعنصر برسم تأثيرات السحب والإفلات، وتحديد وقت إفلات العنصر، أو وقت إلغاء عملية السحب والإفلات.
- هدف الإسقاط
- يتم تطبيق هذه الميزة بواسطة الكائنات التي تقبل الكائنات المُسقطة، أي التي يمكن أن تكون هدفًا لعمليات السحب والإفلات. عند تطبيقها، تسمح هذه الميزة للكائن المستهدف بتحديد ما إذا كان سيتم قبول الكائن المُسقط، وماذا يحدث للكائن بعد إسقاطه.
- هدف أمر IOle
- يمكن تنفيذ هذه الميزة بواسطة الكائنات (كائنات OLE، وحاويات OLE، وغيرها) التي ترغب في دعم أوامر قياسية محددة. تتيح هذه الميزة للمستخدمين الاستعلام عن دعم الأوامر، وتنفيذها. تشمل الأوامر التي قد يرغب الكائن في تنفيذها عادةً أوامر مثل "حذف"، و"قص"، و"نسخ"، و"لصق"، و"تراجع"، و"بحث"، و"طباعة"، و"حفظ"، و"تكبير/تصغير"، وما إلى ذلك. يوجد حاليًا 58 أمرًا قياسيًا مُعرّفًا، وهي تشمل أوامر شائعة الاستخدام في برامج المكتب، ومتصفحات الويب، والتطبيقات المشابهة.
- IOleUndoUnit
- يمثل هذا الإجراء عملية قابلة للتراجع. ويحتوي على جميع المعلومات اللازمة للتراجع عن إجراء ما. ويتم إنشاؤه بواسطة الكائنات والحاويات، بحيث يمكن إضافة الإجراءات القابلة للتراجع إلى IOleUndoManager الخاص بالحاوية .
- IOleParentUndoUnit
- يُتيح هذا لوحدة التراجع احتواء وحدات تراجع أخرى. بمعنى آخر، يسمح هذا لوحدة التراجع بالعمل كمجموعة تراجع، حيث تجمع وحدات التراجع معًا. على سبيل المثال، عند تشغيل ماكرو، يمكن تجميع جميع الإجراءات القابلة للتراجع التي ينفذها الماكرو في وحدة تراجع واحدة.
- نافذة IOle
- تمثل هذه الواجهة نافذة حاوية أو عنصر مُضمّن. وهي تُمكّن المستخدمين من الحصول على مُعرّف النافذة، وتفعيل/إيقاف وظيفة المساعدة السياقية. عند تفعيل وظيفة المساعدة السياقية، يتغير مؤشر الفأرة عادةً إلى سهم يحمل علامة استفهام، للدلالة على أن النقر على عنصر في واجهة المستخدم سيؤدي إلى فتح نافذة المساعدة.
مسابقة
سعت تقنية OpenDoc إلى منافسة تقنية OLE. اعتبر بعض منافسي مايكروسوفت أن OpenDoc أكثر قوة وسهولة في الاستخدام. سمحت OpenDoc للمستخدمين بعرض المعلومات وتعديلها عبر التطبيقات، مما شكّل منافسة مباشرة لمعيار OLE الخاص بمايكروسوفت. في عام 1993، أنشأ بعض منافسي مايكروسوفت اتحادًا يُسمى مختبرات تكامل المكونات (CIL) لتطوير OpenDoc كمعيار مفتوح للربط والتضمين عبر المنصات.
اشترطت مايكروسوفت التوافق مع تقنية OLE كشرط أساسي لاعتمادها توافق التطبيقات مع نظام التشغيل ويندوز 95. أعلنت مايكروسوفت في البداية أن التطبيقات التي تستخدم OpenDoc ستُعتبر متوافقة مع OLE، وستحصل على شهادة اعتماد لنظام ويندوز 95. لكنها تراجعت لاحقًا عن قرارها، وأعلنت أن التطبيقات التي تستخدم OpenDoc قد لا تحصل على شهادة اعتماد على الإطلاق. وقد حجبت مايكروسوفت مواصفات وإصدارات تجريبية من OLE حتى بعد إطلاقها لتطبيقاتها المنافسة.
قابلية التشغيل البيني
يحد استخدام كائنات OLE من إمكانية التشغيل البيني، لأن هذه الكائنات غير مدعومة على نطاق واسع في برامج عرض أو تحرير الملفات خارج نظام التشغيل مايكروسوفت ويندوز (مثل تضمين ملفات أخرى داخل الملف، كالجداول أو الرسوم البيانية من تطبيق جداول البيانات في مستند نصي أو ملف عرض تقديمي). [ 3 ] [ 4 ] [ 5 ] [ 6 ] إذا لم يتوفر برنامج يدعم كائنات OLE، فعادةً ما يتم استبدال الكائن بصورة (تمثيل نقطي للكائن) أو لا يتم عرضه على الإطلاق. [ 7 ] [ 8 ] [ 9 ]
انظر أيضاً
مراجع
- ↑ تستند هذه المقالة إلى مواد مأخوذة من Object+Linking+and+Embedding في قاموس الحوسبة المجاني على الإنترنت قبل 1 نوفمبر 2008 وتم دمجها بموجب شروط "إعادة الترخيص" الخاصة بـ GFDL ، الإصدار 1.3 أو أحدث.
- ↑ ويندوز المتقدم (دليل المطور لواجهة برمجة تطبيقات Win32 لنظام التشغيل ويندوز NT 3.5 وويندوز 95)
- ↑ بايفيلد، بروس (23 أغسطس 2005). "مقارنة بين معالجات النصوص مفتوحة المصدر: OOo Writer وAbiWord وKWord" . Linux.com . مؤسسة لينكس. مؤرشف من الأصل في 6 نوفمبر 2020. تم الاطلاع عليه في 29 سبتمبر 2020 .
- ↑ بايفيلد، بروس (28 يوليو 2005). "مشاركة الملفات بين OpenOffice.org وMicrosoft Office" . Linux.com . مؤسسة لينكس. مؤرشف من الأصل في 6 نوفمبر 2020. تم الاطلاع عليه في 29 سبتمبر 2020 .
- ↑ شارما، مايانك (20 نوفمبر 2008). "يركز برنامج SoftMaker Office 2008 على التوافق مع Microsoft Office" . Linux.com . مؤسسة لينكس. مؤرشف من الأصل في 6 نوفمبر 2020. تم الاطلاع عليه في 29 سبتمبر 2020 .
- ↑ لاغاديك، فيليب (30 نوفمبر 2006). "أمن أوبن أوفيس / أوبن دوكيومنت ومايكروسوفت أوفيس 2007 / أوبن إكس إم إل" ( ملف PDF) . مؤتمر باسيفيك سيك 2006. مؤرشف (ملف PDF) من الأصل بتاريخ 22 يوليو 2011. تم الاطلاع عليه بتاريخ 29 سبتمبر 2020 .
- ↑ غونغ، ريت (5 سبتمبر 2005). "رد: كائن OLE - تمثيل الصورة النقطية؟" . مجموعة الأخبار : microsoft.public.win32.programmer.ole . يوزنت: iZFkEiesFHA.1204@TK2MSFTNGXA01.phx.gbl . تاريخ الاسترجاع : 29 سبتمبر 2020 .
- ↑ أونيل، مايك (9 فبراير 2005). "أداة تحرير متقدمة لعرض الصور النقطية وكائنات OLE الأخرى" . مشروع الكود . مؤرشف من الأصل في 31 ديسمبر 2011. تم الاطلاع عليه في 29 سبتمبر 2020 .
- ↑ "ACC: لماذا تتسبب كائنات OLE في زيادة حجم قواعد البيانات" . مايكروسوفت . 19 يناير 2007. مؤرشف من الأصل في 15 فبراير 2008.
روابط خارجية
- ripOLE - يستخرج المرفقات من مستندات OLE
- معلومات أساسية عن تقنية OLE من موقع docs.microsoft.com
- التواصل بين العمليات
- واجهات برمجة تطبيقات مايكروسوفت
