PDA

View Full Version : سوال: تشخیص دادن شاخه نصب ویندوز / پوشه فونت و کپی یک فونت



shahryari
شنبه 27 خرداد 1391, 09:48 صبح
با سلام خدمت دوستان
بنده با استفاده از این کد این کار رو انجام میدم:
--------------------------------------------------------------------

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim a, b, c As String
c = Application.StartupPath + "\fonts\tahoma.ttf"
a = Environment.GetEnvironmentVariable("windir").ToString
b = "\Fonts"
If IO.File.Exists(c) = True Then
IO.File.Copy(c, a + b+"\tahoma.ttf",true)
Else
MsgBox("يافت نشد", MsgBoxStyle.Critical, "خطا")
End If
End Sub
کپی فونت در پوشه فونت بدرستی انجام میشود.
اما.............
يك مشكل كوچك دارد
تا زماني كه سيستم ريستارت نشود و يا پوشه فونت يكبار باز و بسته نشود، ويندوز ، فونت تازه نصب (كپي) شده را نميشناسد
سوال:
براي حل اين مشكل چه پيشنهادي داريد؟
آيا در وي بي كدي هست بتواند يك پوشه را باز و بسته كند و يا ريست كند و امثالهم :متفکر:

dragon2018
یک شنبه 28 خرداد 1391, 00:15 صبح
برای این کار ابتدا دو تابع زیر را در برنامه تعریف کنید:

Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long

Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long
(اولی برای اضافه کردن فونت و دومی برای حذف آن)
سپس برای اضافه کردن فونت دلخواه در یکی از رویداد های برنامه (مانند هنگام لود شدن برنامه) کد زیر را بگذارید:
("مسیر فونت در سیستم"http://pccloob.ir/i/icons/s34.gifAddFontResource
مانند: ("AddFontResource("C:UsersiccDesktopNew folderSKOODKBD.ttf
و برای حذف آن بجای AddFontResource از RemoveFontResource استفاده کنید.

نکته: تا وقتی خودتون فونت رو حذف نکنین یا کاربر کامپیوترشو ریستارت نکنه فونت در سیستم کاربر باقی میمونه. (تو برنامه های دیگه هم دیده میشه)

shahryari
یک شنبه 28 خرداد 1391, 09:27 صبح
با سلام وتشکر از حسن توجه
چندسوال::متفکر:
1- چرا در رویداد فرم لود؟؟!!
هدف من از این کار اینه که در قسمت مثلا سایر تنظیمات برنامه ام یک باتن بذارم و به کاربر بگم که: در صورت بهم ریخته بودن فونتها و ... روی دکمه کلیک کنید!
2- در صورت ریمو کردن فونت چه آدرسی بنویسم؟
با تشکر