أخواني أثابكم الله
كيف أعمل ملف DLL يتلقى أمر من برنامجي ومن ثم أستطيع حذفه بدون إغلاق البرنامج
لأني عملت عدة ملفات DLL ولكني لم أستطع حذفه رغم أني لم أضيفه في References ولكنه يضل مربوط بالبرنامج
فما الحل بارك الله فيكم ويسر أموركم
أخواني أثابكم الله
كيف أعمل ملف DLL يتلقى أمر من برنامجي ومن ثم أستطيع حذفه بدون إغلاق البرنامج
لأني عملت عدة ملفات DLL ولكني لم أستطع حذفه رغم أني لم أضيفه في References ولكنه يضل مربوط بالبرنامج
فما الحل بارك الله فيكم ويسر أموركم
السلام عليكم
اذا لم تستطع حذفه فالظاهر انه مستخدم من قبل البرنامج لذا عليك بعد استخدامه مباشرة اطلاق سراحه
وهذا يعتمد على الطريقة التي تستخدمها
تم تعديل هذه المشاركة بواسطة TareqVB في 4 يوليو 2008 في 11:36 — السبب: صراحه = سراحه
أخي TareqVB بارك الله فيك
ولكن لم أفهمك كيف أقوم بأطلاق صراحة هل يوجد كود معين ينهي الDLL
ياليت توضح أثابك الله وغفر لك
1- استخدم الدالة GetModuleHandle لارجاع مقبض لملف الـDLL .
2- قم بتحرير الـDLL عن طريق الدالة FreeLibrary مستخدما المقبض السابق .
[color= #800000;]Private [color= #800000;]Declare [color= #800000;]Function GetModuleHandle Lib [color= #ff0000;]"kernel32.dll" Alias [color= #ff0000;]"GetModuleHandleA" [color= #66cc66;]( _ ByVal lpModuleName [color= #800000;]As [color= #800000;]String[color= #66cc66;]) [color= #800000;]As [color= #800000;]Long
[color= #800000;]Private [color= #800000;]Declare [color= #800000;]Function FreeLibrary Lib [color= #ff0000;]"kernel32.dll" [color= #66cc66;]( _ ByVal hLibModule [color= #800000;]As [color= #800000;]Long[color= #66cc66;]) [color= #800000;]As [color= #800000;]Long
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
الاخ الكريم ، المقصود بإطلاق صراحة هو فصل عملية الربط مع برنامجك !!!
يعني مثلاً لو كنت رابطة مع المكتبة بهذا الأسلوب :
''إدراج مكتبة.
Set obj = CreateObject("ADODB.Connection")
''إطلاق صراح مكتبة.
Set obj = Nothingشكراً
لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي
ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك
أنت وتصرفاتك
ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه
اشد آلام ... فصمتي أنا عنوان
السلام عليكم
الكيفية كما ذكرت لك تعتمد على طريقة استخدامك لهذه المكتبة وكما ذكر الاخوة
اما ب Set obj = Nothing
او FreeLibrary
ونرجو ذكر طريقتك لاستدعاء المكتبة
أخواني بارك الله فيكم وأعانكم على طاعته
هذا كود استدعاء ملف DLL
Private Declare Function Sname Lib "SETANP.dll" (ByVal Fname As String)
UP
أخواني أفيدونا بارك الله فيكم
???????????????????????????????????
ليت أخي GamingMasteR تشرحلي أكثر كيفيه أستخدام الدوال اللي وضعتهم
معليش بس والله لم أفهم كيفيه أستخدامهم هل ألغي الكود الذي وضعته في ردي ام ماذا
أعانك الله على طاعته ويسر أمورك ورزقك الذريه الصالحة
المشروع بالمرفقات وهذا الكود :
[color= #800000;]Private [color= #800000;]Declare [color= #800000;]Function GetModuleHandle Lib [color= #ff0000;]"kernel32.dll" Alias [color= #ff0000;]"GetModuleHandleA" [color= #66cc66;]( _
ByVal lpModuleName [color= #800000;]As [color= #800000;]String[color= #66cc66;]) [color= #800000;]As [color= #800000;]Long
[color= #800000;]Private [color= #800000;]Declare [color= #800000;]Function FreeLibrary Lib [color= #ff0000;]"kernel32.dll" [color= #66cc66;]( _
ByVal hLibModule [color= #800000;]As [color= #800000;]Long[color= #66cc66;]) [color= #800000;]As [color= #800000;]Long
[color= #800000;]Private [color= #800000;]Sub Command1_Click[color= #66cc66;]([color= #66cc66;])
[color= #800000;]Dim hModule [color= #800000;]As [color= #800000;]Long
hModule = GetModuleHandle[color= #66cc66;]([color= #ff0000;]"USP10.dll"[color= #66cc66;]) [color= #008000;]'change with you dll name
[color= #800000;]If hModule <> [color= #cc66cc;]0 [color= #800000;]Then
FreeLibrary hModule
[color= #800000;]End [color= #800000;]If
[color= #800000;]End [color= #800000;]Submov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
وفقك الله وأثابك في دنياك وآخرتك أخي GamingMaste
الحمدلله الآن فهمت ألف شكر وجزاك الله عنا خير الجزاء وبعد عنك كل مكروه وأعانك على طاعته
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…