الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف أعمل ملف Dll يستقبل معلومة من البرنامج بدون اضافتة في References

مغلق
بدأه M.555 في 11 فبراير 2008 · 8 رد · 959 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أخواني لدي في الفورم Text1

أريد أن أعمل ملف DLL يستقبل المعلومة المكتوبة في

Text1

ويطلع رسالة خطأ باللي مكتوب في

Text1

بمجرد ماأضغط على زر الكومند

بس الأهم في الموضوع هو عدم إضافة ملف DLL في

References

وفقكم الله وأثابكم وجعل آخر أعمالكم طاعتة

#2

ملف DLL ملف يحتوي بيانات وأوامر كما تعلم , فإذا حضرتك عاوز تشغله بدون إضافته لبرنامجك , يجب عليك تشغيله من خلال برنامج آخر

اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

#3

أخي Ala2 VB وفقك الله

أعتقد أنة أستطيع تشغيلة بدون إضافتة لبرنامج آخر فقط أعرفة للرجستري

بس لاأعرف الطريقة

حبذا لو أحد الأخوة يعطينا مثال بسيط مثلاً عن رسالة خطأ موجودة في ملف DLL

ومن خلال البرنامج أضيف الTEXT للرسالة

أثابكم الله

#5

أخي أسامة بارك الله فيك أنا يدوب مبتدىْ في الفيجول بيسك بدخلني في السي بلس بلس

يمكن مافهمتوني علشان أسهلكم طلبي في مثال في المرفقات

هذا المثال يمكنك من أستخراج معلومات معينة من ملف الDLL الي البرنامج

أنا أريد العكس

وفقكم الله فيما يحب

Bobo_PlugI.zip

#6

السلام عليكم ورحمة الله وبركاته,

اكتب ملف الـ DLL في البداية وليقم باستقبال نص ما عبر دالة ما بداخله.. يمكنك ان تقوم بطلبه دون اضافته الى الـ references من خلال استدعاء الدالة LoadLibrary و GetProcAddress من دوال الـ API ومن ثم تنفيذ الدالة الموجودة في ملف الـ DLL بعد الحصول على عنوانها من خلال GetProcAddress في الذاكرة.

هذا الامر سيتم وقت التنفيذ.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7

جزاك الله خيرا على الدالتين أخي Junkie الفاضل .

وللأخ M.555 :

اقتباس
يمكنك ان تقوم بطلبه دون اضافته الى الـ references من خلال استدعاء الدالة LoadLibrary و GetProcAddress من دوال الـ API

هذه هي الدوال أخي

Public Declare Function GetProcAddress Lib "kernel32" Alias "GetProcAddress" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

#8

العفو أخ علاء وللتوضيح بخصوص الاستخدام,

Public Declare Function GetProcAddress Lib "kernel32" Alias "GetProcAddress" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

في البداية تقوم باستدعاء LoadLibrary لتحصل على مقبض الملف في الذاكرة, المقبض سيكون بطول 4 بايتات لذلك كما هو معرف كـ Long يمكن ان نقوم باستدعائه بالشكل:

dim sAns as String
sAns = App.Path
If Right(App.Path, 1) <> "\" Then sAns = sAns & "\"
AppPath = sAns
dim hFile as long
hFile = LoadLibrary(AppPath & "file name.dll")
' انتبه اني افترض وجود الملف في نفس مجلد البرنامج
dim addr as long
addr = GetProcAddress(hFile, "GetText")
' GetText هو اسم الدالة الموجودة في ملف الـ DLL
' hFile هو المقبض الذي حصلنا عليه

' يمكنك الان استدعاء الدالة من الملف بعد ان حصلت على المقبض

لا املك هواية كافية في الفيجوال لذا يرجى التصحيح لو كان في الكود خطأ

بخصوص استدعاء الدالة من الملف لا اعلم بالضبط كيف يتم هذا في الفيجوال, هل من خلال متحول أيضا او من خلال call

الامر يتبع لاستخدام الدالة, طالما ان الدالة في الملف ستقوم بعرض النص بشكل رسالة فاذن يجب تمرير النص للدالة في الذاكرة

ستحتاج عندها الى تمرير النص الى الدالة

ربما يتم الامر بالشكل

addr(text)

بأي حال, هذه الفكرة العامة

لا تنسى مراجعة رابط الاخ أسامة ففيه أيضا الحل لك.

والله الموفق

تم تعديل هذه المشاركة بواسطة Junkie في 12 فبراير 2008 في 12:55

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#9

جزاكم الله ألف خير أخي علاء و أخي Junkie على الرد وجعلة في ميزان حسناتكم

بس لو تعملوا مثال بسيط أكون لكم من الشاكرين

بحيث يكون في ملف الDLL رسالة خطأ Masgbox يستقبل المحتوى من البرنامج

ومن ثم الDLL يطلع رسالة الخطأ لأني أريد أن أضع فية معلومة آخرى بنفس الطريقة

بصراحة أخوكم مبتدىْ وناوي آخذ كورس في البرمجة بس لازم يكون عندى خلفية ولو بسيطة

بارك الله فيكم

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…