منزل
Top.Mail.Ru Yandeks.Metrika
المنتدى: "Main";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

إلى

دلل ق البحث عن فروع مماثلة


HELP ME PLZ   (2001-12-15 18:22) [0]

ساعدني من فضلكم أول وقت يعمل مع DLL كيفية استدعاء وظيفة من DLL shki



Oleg Gashev   (2001-12-15 18:35) [1]

استدعاء DLLs

مجموعة المواضيع انظر أيضا

قبل أن تتمكن من استدعاء إجراءات محددة في DLL ، يجب عليك استيرادها. يمكن القيام بذلك بطريقتين: عن طريق الإعلان عن إجراء أو وظيفة خارجية ، أو عن طريق الاتصال بواجهة برمجة تطبيقات Windows مباشرة. بغض النظر عن الطريقة التي تستخدمها ، فإن الإجراءات غير مرتبطة بالتطبيق الخاص بك حتى وقت التشغيل. هذا يعني أنه لا يلزم وجود مكتبة الارتباط الحيوي (DLL) عند ترجمة البرنامج الخاص بك. وهذا يعني أيضًا أنه لا يوجد التحقق من وقت الترجمة لمحاولات استيراد روتين.
كائن Pascal لا يدعم استيراد المتغيرات من DLL.

تحميل ثابت

إن أبسط طريقة لاستيراد إجراء أو وظيفة هي إعلانها باستخدام التوجيه الخارجي. على سبيل المثال ،

الإجراء DoSomething ؛ الخارجية "MYLIB.DLL" ؛

إذا قمت بتضمين هذا الإعلان في برنامج ، يتم تحميل MYLIB.DLL مرة واحدة ، عند بدء تشغيل البرنامج. أثناء تنفيذ البرنامج ، يشير المعرف DoSomething دائمًا إلى نفس نقطة الدخول في نفس DLL.
يمكن وضع الإعلانات الخاصة بالإجراءات المستوردة مباشرة في البرنامج أو الوحدة التي تُطلق عليها. لتبسيط الصيانة ، يمكنك جمع الإعلانات الخارجية في "وحدة استيراد" منفصلة تحتوي أيضًا على أي ثوابت وأنواع مطلوبة للتفاعل مع DLL. (تعد وحدة Delphi في Windows مثالاً جيدًا.) يمكن للوحدات الأخرى التي تستخدم وحدة الاستيراد استدعاء أي إجراءات معلن عنها.

لمزيد من المعلومات حول الإعلانات الخارجية ، راجع الإعلانات الخارجية.
التحميل الديناميكي من خلال مكالمات Windows API.




Oleg Gashev   (2001-12-15 18:36) [2]

-------------------------------------------------- ---------------
فشل LoadLibrary

تقوم وظيفة LoadLibrary بتعيين الوحدة النمطية القابلة للتنفيذ المحددة في مساحة العنوان لعملية الاستدعاء.

مكتبة تحميل HINSTANCE (

LPCTSTR lpLibFileName // عنوان اسم الملف الخاص بالوحدة القابلة للتنفيذ
);


المعلمات

lpLibFileName

يشير إلى سلسلة منتهية بقيمة خالية null الذي يسمي الوحدة النمطية القابلة للتنفيذ (إما ملف .DLL أو .EXE). الاسم المحدد هو اسم ملف الوحدة النمطية ولا يرتبط بالاسم المخزن في وحدة المكتبة نفسها ، كما هو محدد بواسطة الكلمة الأساسية LIBRARY في ملف تعريف الوحدة النمطية (.DEF).

إذا حددت السلسلة مسارًا ولكن الملف غير موجود في الدليل المحدد ، تفشل الوظيفة.
إذا لم يتم تحديد مسار وتم حذف ملحق اسم الملف ، فسيتم إلحاق ملحق المكتبة الافتراضي .DLL. ومع ذلك ، يمكن أن تتضمن سلسلة اسم الملف حرف نقطة زائدة (.) للإشارة إلى أن اسم الوحدة النمطية ليس له امتداد. عند عدم تحديد مسار ، تبحث الوظيفة عن الملف بالتسلسل التالي:

1. الدليل الذي تم تحميل التطبيق منه.
2. الدليل الحالي.
3. Windows 95: دليل نظام Windows. استخدم الدالة GetSystemDirectory للحصول على مسار هذا الدليل.

Windows NT: دليل نظام Windows 32. استخدم الدالة GetSystemDirectory للحصول على مسار هذا الدليل. اسم هذا الدليل هو SYSTEM32.

4. Windows NT: دليل نظام Windows 16. لا توجد وظيفة Win32 تحصل على مسار هذا الدليل ، ولكن يتم البحث عنها. اسم هذا الدليل هو SYSTEM.
5. دليل ويندوز. استخدم الدالة GetWindowsDirectory للحصول على مسار هذا الدليل.
6. الدلائل المسردة في متغير بيئة PATH.



الدليل الأول الذي تم البحث فيه هو الدليل الوحيد الذي يحتوي على ملف الصورة المستخدم لإنشاء عملية الاستدعاء (لمزيد من المعلومات ، راجع وظيفة CreateProcess). القيام بذلك يتيح العثور على ملفات مكتبة الارتباط الحيوي (DLL) الخاصة المرتبطة بعملية ما دون إضافة دليل تثبيت العملية إلى متغير بيئة PATH.
بمجرد حصول الوظيفة على مسار مؤهل بالكامل لملف وحدة المكتبة ، تتم مقارنة المسار (حالة مستقلة) بالمسارات الكاملة لوحدات المكتبة المحملة حاليًا في عملية الاستدعاء. تتضمن هذه المكتبات تلك التي تم تحميلها عند بدء العملية وكذلك تلك التي تم تحميلها مسبقًا بواسطة LoadLibrary ولكن لم يتم إلغاء تحميلها بواسطة FreeLibrary. إذا كان المسار يطابق مسار الوحدة النمطية المحملة بالفعل ، فإن الوظيفة تزيد فقط من عدد مرجع الوحدة النمطية وتقوم بإرجاع مؤشر الوحدة النمطية لتلك المكتبة.



إرجاع القيم

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

ملاحظات

يمكن استخدام LoadLibrary لتعيين وحدة نمطية DLL وإرجاع مؤشر يمكن استخدامه في GetProcAddress للحصول على عنوان دالة DLL. يمكن أيضًا استخدام LoadLibrary لتعيين الوحدات النمطية القابلة للتنفيذ الأخرى. على سبيل المثال ، يمكن أن تحدد الدالة ملف .EXE للحصول على مؤشر يمكن استخدامه في FindResource أو LoadResource.
مقابض الوحدة ليست عالمية أو قابلة للتوريث. استدعاء "LoadLibrary" بواسطة عملية واحدة لا ينتج مؤشر يمكن أن تستخدمه عملية أخرى



صفحات: 1 فرع كامل

المنتدى: "Main";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

الطابق العلوي









الذاكرة: 0.57 ميغابايت
الوقت: 0.025 ج
1-22002
بفغ
2001-12-16 16:24
2002.01.08
الرسوم البيانية


3-21898
هذيان
2001-11-30 18:56
2002.01.08
هل من الممكن بدء إجراء مخزن بشكل غير متزامن؟


4-22511
التوصيل والتشغيل
2001-10-29 22:23
2002.01.08
كيفية إيقاف تشغيل الكمبيوتر برمجيا؟


1-22205
دينيس proshkin
2001-12-15 12:46
2002.01.08
QReport - الكثير من البيانات


4-22493
mangoost
2001-11-05 12:06
2002.01.08
كيفية تجاوز انتهاك وصول أثناء محاولة الكتابة (+)





الأفريكانية الألبانية عربي الأرميني أذربيجان الباسكي البيلاروسية Bulgarian التشيكية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية دانماركي Dutch أنجليزي الإستونية الفلبينية Finnish جيب
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية اللغة العبرية الهندية الهنغارية أيسلندي Indonesian الأيرلندية Italian اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايو المالطية Norwegian
اللغة الفارسية بولنديّة البرتغاليّة رومانية Russian صربي السلوفاكيّة سلوفيني إسباني السواحيلي Swedish Thai التركية الأوكراني الأردية الفيتنامية ويلزي اليديشية البنغالي البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المهاراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский