تنصيب الخطوط برمجيا على الجهاز
#3
(07-11-2025, 12:04 PM)الفجر الابيض كتب : يمكنك استخدام الدالة AddFontResource لإضافة الخط إلى مجلد الخطوط في الويندوز. بعد ذلك، يجب عليك إعلام الويندوز بأن هناك تغيير قد حدث في الخطوط باستخدام الدالة SendMessage.
هذا مثال على كيفية القيام بذلك في دلفي:

كود :
uses   Windows; procedure InstallFont(FontFilePath: string); var   FontPath: array[0..MAX_PATH] of Char; begin   if FileExists(FontFilePath) then   begin     StrPCopy(FontPath, FontFilePath);     if AddFontResource(FontPath) <> 0 then     begin       SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);       // نسخ الخط إلى مجلد الخطوط في الويندوز       CopyFile(PChar(FontFilePath), PChar(ExtractFilePath(GetWindowsDir) + 'Fonts\' + ExtractFileName(FontFilePath)), False);     end;   end; end;

يمكنك استدعاء هذه الدالة بتمرير مسار ملف الخط الذي تريد تثبيته: 

كود :
procedure TForm1.Button1Click(Sender: TObject); begin   InstallFont('C:\Path\To\Your\Font.ttf'); end;

يرجى ملاحظة أن هذه العملية تتطلب صلاحيات إدارية في الويندوز. إذا كنت تقوم بتشغيل البرنامج تحت حساب عادي، قد تظهر رسالة خطأ أو لا يتم تثبيت الخط.
أيضا، يجب عليك إضافة ShellAPI إلى uses إذا كنت تستخدم CopyFile:


كود :
uses   Windows, ShellAPI;
بارك الله فيك أخي العزيز
جربت الكود الذي أخبرتني عنه، لكن الدلفي اعترض على الكلمة ( WM_FONTCHANGE ) ويعطيني خطأ عندها
قلت لي :  يرجى ملاحظة أن هذه العملية تتطلب صلاحيات إدارية 
كيف أتحصل على هذه الصلاحية برمجيا من فضلك
الرد


الردود في هذا الموضوع
RE: تنصيب الخطوط برمجيا على الجهاز - بواسطة khedimaadl - 08-11-2025, 07:23 AM

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


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