تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] طلب بسيط فى كود لنسخ مجموعة فونت الى مجلد الفونت فى بارتشن C
#1
صباح العادة على كل الزملاء .. 
السؤال ببساطة : محتاج كود نسخ مجموعة ملفات فونت الى بارتشن C
المشكلة أن لدى أكثر من كود لنسخ أى ملف من أى مكان الى أى مكان آخر .....   و لكن
المشكلة أن النسخ سيتم الى بارتشن الـ C   و هذه  هى المشكلة أنه عند تنفيذ الكود يعطى رسالة مفادها أن البارتشن به حماية و ضرورة الاتصال بالآدمين ..
فما هو الحل ؟
الرد
تم الشكر بواسطة: asemshahen5
#2
برنامجك يحتاج الى ان يكون مشغلا كمسئول وهذا اما يكون بالضغط بالزر الايمن على ملف برنامجك التنفيذذي واختيار تشغيل كمسئول
او من خلال الكود وهذا يكون كالتالي:
في الفيجوال ستوديو اذهب الى نافذة الحل واختر اسم مشروعك واضغط بالزر اليمين
من القائمة المنسدلة اختر الخيار الاخير Properties
من النافذة التالية تاكد من اختيار التبويب الاول والمسمى Application
اضغط على الزر المسمى View Windows Settings

استبدل الكود التالي والموجود في السطر رقم 19
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
بالكود التالي:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
احفظ التغييرات ويفضل اختيار الامر Clean ثم Rebuild

الرد
#3
(10-05-20, 09:03 AM)معاند الحظ كتب : برنامجك يحتاج الى ان يكون مشغلا كمسئول وهذا اما يكون بالضغط بالزر الايمن على ملف برنامجك التنفيذذي واختيار تشغيل كمسئول
او من خلال الكود وهذا يكون كالتالي:
في الفيجوال ستوديو اذهب الى نافذة الحل واختر اسم مشروعك واضغط بالزر اليمين
من القائمة المنسدلة اختر الخيار الاخير Properties
من النافذة التالية تاكد من اختيار التبويب الاول والمسمى Application
اضغط على الزر المسمى View Windows Settings

استبدل الكود التالي والموجود في السطر رقم 19
<requestedExecutionLevel  level="asInvoker" uiAccess="false" />
بالكود التالي:
<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
احفظ التغييرات ويفضل اختيار الامر Clean ثم Rebuild

أشكرك أخى الفاضل .. لكن للأسف الموجود فعليا requireAdministrator .. و بالتالى لازالت المشكلة قائمة
الرد
تم الشكر بواسطة: ابراهيم ايبو
#4
الاخ الكريم 
لا ادري ماهو الكود الذي تستخدمه لنسخ الخطوط ولا بقية المتغيرات التي قد تكون هي السبب في عدم السماح لك بالنسخ الى مجلد خطوط ويندوز
لكن بعد البحث وجدت انك تحتاج الى استخدام الوضيفة AddFontResource

كود :
<DllImport("gdi32.dll"), CharSet := CharSet.Auto> _
Public Shared Function AddFontResource(ByVal lpszFilename As String) As Integer

الخيار lpszFilename هو مسار الملف المراد نسخه

بعدها يجب ان تعلم النظام واي برنامج قد يستخدم الخط بانه تم تغيير الخطوط وذلك باستخدام الوضيفة التالية :


كود :
Public Const HWND_BROADCAST As Integer = &HFFFF
Public Const WM_FONTCHANGE As Integer = &H1D

<DllImport("user32.dll"), CharSet := CharSet.Auto> _
Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer

واستخدم الكود التالي لنداء الوضيفة السابقة :


كود :
SendMessage(New IntPtr(HWND_BROADCAST), WM_FONTCHANGE, IntPtr.Zero, IntPtr.Zero)

الان فلتعلم ان حصل ووجدت الخط واستطعت استخدامه بان هذا سيلغى عند تشغيل الجهاز لاحقا او اعادة التشغيل
ولكي تجعل التغيير دائم يجب عليك ان تضيف قيمة الى مفتاح سجل النظام (Registry) المخصص للخطوط التالي:

كود :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

مع ملاحظة انه قد يختلف المسار السابق حسب نظام تشغيلك 

اخيرا اتمنى يكون الحل صحيح


المصدر:

طريقة تثبيت الخطوط الى مجلد الخطوط

الرد
تم الشكر بواسطة: ابراهيم ايبو , ابو روضة , ابو روضة



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


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