المتطلبات : نظرًا لأننا تلقينا مثل هذا المشروع مؤخرًا ، طلب منا الطرف A وآخرون إضافة الوظائف التي طورناها إلى تطبيق تم تطويره PB بالفعل. الغرض الوحيد هو عدم وجود اثنين من تطبيق exe.
الحل : حزمة تطبيق Delphi في شكل DLL ثم اتصل به في PB.
تصميم :
1. جزء PB
1. قم بإنشاء فئة جديدة غير مرئية N_CST_DEMO ، ونحن نضع جميع المكالمات من نفس الوحدة في هذه الفئة.
2. تحديد مكالمات API. التعريف في التصريح --- الوظائف الخارجية المحلية
// مقبض: هو مقبض النافذة الحالية ؛
Subroutine show_demo (Ulong Handle ، String Param) Library "Project1.dll"
3. إنشاء نموذج جديد w_main.
4. إنشاء قائمة جديدة m_dll.
5. إنشاء عنصر قائمة يسمى Test DLL. اكتب في الحدث الذي تم النقر عليه:
n_cst_demo n_pda N_PDA = إنشاء N_CST_DEMO n_pda.show_demo (مقبض (ParentWindow) ، "ABCD1234") تدمير N_PDA |
وبهذه الطريقة ، تم الانتهاء من جزء PB الخاص بنا.
2. جزء دلفي
1. إنشاء مشروع DLL جديد.
2. إنشاء نموذج جديد. يحفظ.3. كتابة الرمز في المشروع:
Library Project1 ؛ يستخدم sysutils ، الأشكال ، النوافذ ، فصول ، الضوابط ، مربعات الحوار ، unit1 في 'unit1.pas' {form1} ، dm in 'dm.pas' {datamodule1: tdatamodule} ؛ {$ r *.res} الإجراء dllmain (السبب: عدد صحيح) ؛ يبدأ سبب القضية dll_process_attach: يبدأ application.createform (tdatamodule1 ، datamodule1) ؛ نهاية؛ dll_process_detach: يبدأ نهاية؛ dll_thread_attach: ابدأ النهاية ؛ dll_thread_detach: ابدأ النهاية ؛ نهاية نهاية؛ // تذكر ، في Delphi ، يجب تعريف معلمات السلسلة بنوع PCAR الإجراء show_demo (مقبض: thandle ؛ const param: pchar) ؛ var Oldhandle: Thandle ؛ يبدأ // احفظ مقبض DLL oldhandle: = application.handle ؛ // قم بتغيير مقبض تطبيق DLL إلى مقبض النافذة في PB // الغرض من ذلك هو تحقيق أن الملفات القابلة للتنفيذ من DLL و PB تنتمي إلى تطبيق // التأثير: بعد فتح النافذة في DLL ، لن يكون هناك أيقونة في شريط المهام application.handle: = handle ؛ application.createform (tform1 ، form1) ؛ يحاول form1.s_param: = strpas (param) ؛ form1.showmodal ؛ أخيراً form1.free ؛ application.handle: = oldhandle ؛ نهاية؛ نهاية؛ صادرات show_demo ؛ يبدأ dllproc: = dllmain ؛ dllmain (dll_process_attach) نهاية. |