السلام عليكم ورحمة الله
DDE اختصار Dynamic Data Exchange بديل آخر عن COM و Automation وتقنية للحوار بين تطبيقات الخادم (Server Application) وفق المنهج عميل/خادم
معظم البرامج الشهيرة التي نستخدمها يوميا (المتصفحات، البرامج المكتبية...) تتوفر على خدمات DDE تسمح بالاتصال معها إرسالا واستقبالا للبيانات: IE، MsOffice، Explorer...
يوفر دلفي مجموعة من المكونات (المنسية!) للتعامل مع DDE موجودة في التبويب System
نأخذ مثالين لتوضيح الفكرة
1- المثال الأول: مثال بسيط للاستعلام عن الصفحة المفتوحة في IE
- ضع مكون DdeClientConv1 (العميل) على النموذج...
- افتح المتصفح IE على أي صفحة (ضروري لتشغيل الخدمة)
- الآن اضبط الخصائص:
-- DDeService على IExplore (اسم الخادم)
-- وDdeTopic على WWW_GetWindowInfo (الموضوع الذي تود الاستعلام عنه)
-- وServiceApplication على IExplore.exe (اسم التطبيق -اختياري-)
-- اترك الخيار ConnectMode على ddeAutomatic ...
- ضع زرا واكتب عند الضغط عليه:
نفذ التطبيق ولاحظ عنوان النموذج
يمكن استخدام مكون TDdeClientItem وربطه مع TDdeClientConv من DdeConv ثم نستقبل العائدات من TDdeClientItem بمثل هذا:
إذا لم ينجح معك ذلك أعد القيام به بشكل ديناميكي مستخدما التابع SetLink هكذا:
2-المثال الثاني فتح متصفح Windows للبحث عن الملفات في مسار معين:
- ضع نفس المكون واضبط الخادم هذه المرة:
-- DDeService على Folders (خادم لمتصفح Windows)
-- وDdeTopic على AppProperties
-- وServiceApplication على explorer.exe
- هذه المرة نقوم بتنفيذ Macro مباشرة بهذا الشكل:
للبحث عن الملفات في المسار: c:\windows\system32
هذا مثال بسيط لتوضيح فكرة DDE ولك أن تبحث كيفية الاتصال بالبرامج الأخرى
ملاحظة:
تنصح Microsoft باستخدام Automation بدلا عن DDE إن أمكن للاتصال بالبرامج Word, Excel ... لما تقدمة من دعم أفضل وخدمات إضافية.
-----
تم إعداد مثال مرفق السورس.
وعرض فلاش لطريقة إعداد تطبيقين بدلفي وربطها بتقنية DDE. الرابط:
http://www.mediafire.com/?vgqr84elldqsrej
بالتوفيق.
DDE اختصار Dynamic Data Exchange بديل آخر عن COM و Automation وتقنية للحوار بين تطبيقات الخادم (Server Application) وفق المنهج عميل/خادم
معظم البرامج الشهيرة التي نستخدمها يوميا (المتصفحات، البرامج المكتبية...) تتوفر على خدمات DDE تسمح بالاتصال معها إرسالا واستقبالا للبيانات: IE، MsOffice، Explorer...
يوفر دلفي مجموعة من المكونات (المنسية!) للتعامل مع DDE موجودة في التبويب System
كود :
TDdeClientConv;TDdeClientItem;TDdeServerItemنأخذ مثالين لتوضيح الفكرة
1- المثال الأول: مثال بسيط للاستعلام عن الصفحة المفتوحة في IE
- ضع مكون DdeClientConv1 (العميل) على النموذج...
- افتح المتصفح IE على أي صفحة (ضروري لتشغيل الخدمة)
- الآن اضبط الخصائص:
-- DDeService على IExplore (اسم الخادم)
-- وDdeTopic على WWW_GetWindowInfo (الموضوع الذي تود الاستعلام عنه)
-- وServiceApplication على IExplore.exe (اسم التطبيق -اختياري-)
-- اترك الخيار ConnectMode على ddeAutomatic ...
- ضع زرا واكتب عند الضغط عليه:
PHP كود :
Caption := DdeClientConv1.RequestData('0xFFFFFFFF')
يمكن استخدام مكون TDdeClientItem وربطه مع TDdeClientConv من DdeConv ثم نستقبل العائدات من TDdeClientItem بمثل هذا:
PHP كود :
Caption := DdeClientItem1.DdeConv.RequestData('0xFFFFFFFF');
إذا لم ينجح معك ذلك أعد القيام به بشكل ديناميكي مستخدما التابع SetLink هكذا:
PHP كود :
with DdeClientConv1 do
begin
SetLink('IExplore','WWW_GetWindowInfo');
Caption:= RequestData('0xFFFFFFFF');
end;
2-المثال الثاني فتح متصفح Windows للبحث عن الملفات في مسار معين:
- ضع نفس المكون واضبط الخادم هذه المرة:
-- DDeService على Folders (خادم لمتصفح Windows)
-- وDdeTopic على AppProperties
-- وServiceApplication على explorer.exe
- هذه المرة نقوم بتنفيذ Macro مباشرة بهذا الشكل:
PHP كود :
DdeClientConv1.ExecuteMacro('[FindFolder(, c:\windows\system32)]', False);
هذا مثال بسيط لتوضيح فكرة DDE ولك أن تبحث كيفية الاتصال بالبرامج الأخرى

ملاحظة:
تنصح Microsoft باستخدام Automation بدلا عن DDE إن أمكن للاتصال بالبرامج Word, Excel ... لما تقدمة من دعم أفضل وخدمات إضافية.
-----
تم إعداد مثال مرفق السورس.
وعرض فلاش لطريقة إعداد تطبيقين بدلفي وربطها بتقنية DDE. الرابط:
http://www.mediafire.com/?vgqr84elldqsrej
بالتوفيق.

