08-11-2025, 07:23 AM
(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 ) ويعطيني خطأ عندها
قلت لي : يرجى ملاحظة أن هذه العملية تتطلب صلاحيات إدارية
كيف أتحصل على هذه الصلاحية برمجيا من فضلك

