delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف يمكن التحقق من مكتبة dll ان كانت مفعلة او لا
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم 
يوجد لدي برنامج يستخدم مكتبة dll 
 نفرض اسمها test.dll ماهوا الكود المناسب للتحقق ان كانت هذه المكتبة تعمل او لا
حاولت مع FindWindow لم ينجح الامر
وعليكم السلام
عن طريقة الدالة LoadLibrary
(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;
عذرا الدالة 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;
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;