كيف يمكن التحقق من مكتبة dll ان كانت مفعلة او لا
#1
السلام عليكم 
يوجد لدي برنامج يستخدم مكتبة dll 
 نفرض اسمها test.dll ماهوا الكود المناسب للتحقق ان كانت هذه المكتبة تعمل او لا
حاولت مع FindWindow لم ينجح الامر
الرد
#2
وعليكم السلام
عن طريقة الدالة LoadLibrary
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • محمودد
الرد
#3
(30-03-2022, 07:36 PM)Agmcz كتب : وعليكم السلام
عن طريقة الدالة LoadLibrary

   
كود :
begin   hmod := LoadLibrary('kernel32.dll');   if (hmod <> 0) then begin     GetDType := GetProcAddress(hmod, 'GetDriveTypeA');     if (@GetDType <> nil) then begin       DriveType := GetDType('c:\');       ShowMessage('Drive Type is : ' + IntToStr(DriveType));     end     else       ShowMessage('GetProcAddress failed');     FreeLibrary(hmod);   end   else     ShowMessage('LoadLibrary Failed!'); end;
[-] كل من 1 user says قال شكرا ل محمودد على المشاركة المفيدة
  • ELARAPY
الرد
#4
عذرا الدالة LoadLibrary تستخدم لتحميل المكتبة إلى الذاكرة.
إستخدم GetModuleHandle
كود :
function CheckDLLIsLoaded(DllName: PChar): Boolean; begin   Result := GetModuleHandle(DllName) <> 0; end; procedure TForm1.Button1Click(Sender: TObject); begin   if CheckDLLIsLoaded('TestDLL.dll') then   ShowMessage('This library is loaded'); end;
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 2 users say قال شكرا ل Agmcz على المشاركة المفيدة
  • محمودد, ELARAPY
الرد
#5
Shy
كود :
function IsLibraryInstalled(const LibFileName: string): Boolean;   {Checks if a library with name LibFileName is installed.} var   DLLHandle: Windows.THandle; // handle to DLL begin   // Try to load DLL   try     DLLHandle := SysUtils.SafeLoadLibrary(LibFileName);   except     DLLHandle := 0;   end;   // Check if DLL has been loaded   Result := DLLHandle <> 0;   if Result then     Windows.FreeLibrary(DLLHandle); end;
[-] كل من 2 users say قال شكرا ل Ndagor على المشاركة المفيدة
  • محمودد, ELARAPY
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم