PDA

View Full Version : سوال: کپی فونت



maJJJid
سه شنبه 08 مرداد 1392, 12:05 عصر
سلام خدمت دوستان.من توی برنامم میخام با متد Copy() چند تا فایل فونت رو داخل C:\Windows\Fonts بریزم ولی فولدر Windows چون سیستمیه فایل ها کپی نمیشه ولی توی فولدر های غیر سیستمی دیگه فایل کپی میشه.
حالا باید چیکار کنم تا بتونم چند تا فایل فونت توی C:\Windows\Fonts کپی کنم ؟


string fileName = "BNazanin.ttf";
string sourcePath = @"D:\TestFolder";
string targetPath = @"C:\Windows\Fonts";
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath, fileName);
System.IO.File.Copy(sourceFile, destFile, true);

sohil_ww
سه شنبه 08 مرداد 1392, 12:19 عصر
تحت ادمین هم اجرا کنی فونت ها کپی نمی شن ؟!

maJJJid
سه شنبه 08 مرداد 1392, 12:47 عصر
تحت ادمین هم اجرا کنی فونت ها کپی نمی شن ؟!


خیر دوست عزیز.

maJJJid
سه شنبه 08 مرداد 1392, 14:03 عصر
از دوستان کسی نیست کمک کنه ؟؟؟ ؟؟؟

maJJJid
سه شنبه 08 مرداد 1392, 16:13 عصر
واقعا از دوستان کسی نیست کمک کنه !!!

aliagamon
سه شنبه 08 مرداد 1392, 16:21 عصر
اگه نیت فقط نصب فونته اینطوری نصب کن

[DllImport("gdi32.dll", EntryPoint="AddFontResourceW", SetLastError=true)]
public static extern int AddFontResource(
[In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);

بعد اینطوری استفاده کن:

result = AddFontResource(@"C:\MY_FONT_LOCATION\MY_NEW_FONT.TTF");
error = Marshal.GetLastWin32Error();


اینم نمونه :

[TestFixture]
public class TenantTests
{

[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);


[Test]
public void InstallFont()
{

var result = AddFontResource(@"C:\MY_FONT_LOCATION\MY_NEW_FONT.TTF");
var error = Marshal.GetLastWin32Error();
if (error != 0)
{
Console.WriteLine(new Win32Exception(error).Message);
}
}
}

CsharpNevisi
سه شنبه 08 مرداد 1392, 16:35 عصر
اگه نیت فقط نصب فونته اینطوری نصب کن

[DllImport("gdi32.dll", EntryPoint="AddFontResourceW", SetLastError=true)]
public static extern int AddFontResource(
[In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);

بعد اینطوری استفاده کن:

result = AddFontResource(@"C:\MY_FONT_LOCATION\MY_NEW_FONT.TTF");
error = Marshal.GetLastWin32Error();


اینم نمونه :

[TestFixture]
public class TenantTests
{

[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);


[Test]
public void InstallFont()
{

var result = AddFontResource(@"C:\MY_FONT_LOCATION\MY_NEW_FONT.TTF");
var error = Marshal.GetLastWin32Error();
if (error != 0)
{
Console.WriteLine(new Win32Exception(error).Message);
}
}
}


من یه فونت کنار برنامه ام دارم ............ خب چطوری نصبش کنم ؟؟؟ ... ادرسشو کجا باید بدم ؟؟؟؟ مثلا بگم فونتی که با این ام کنار برنامه ام هست میخوام نصب شه ... !!!

maJJJid
سه شنبه 08 مرداد 1392, 16:36 عصر
اگه نیت فقط نصب فونته اینطوری نصب کن

[DllImport("gdi32.dll", EntryPoint="AddFontResourceW", SetLastError=true)]
public static extern int AddFontResource(
[In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);

بعد اینطوری استفاده کن:

result = AddFontResource(@"C:\MY_FONT_LOCATION\MY_NEW_FONT.TTF");
error = Marshal.GetLastWin32Error();


اینم نمونه :

[TestFixture]
public class TenantTests
{

[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);


[Test]
public void InstallFont()
{

var result = AddFontResource(@"C:\MY_FONT_LOCATION\MY_NEW_FONT.TTF");
var error = Marshal.GetLastWin32Error();
if (error != 0)
{
Console.WriteLine(new Win32Exception(error).Message);
}
}
}




دوست عزیز, این خط رو کجا باید بنویسم؟ چه namespace ای باید یوزینگ کنم؟

[DllImport("gdi32.dll", EntryPoint="AddFontResourceW", SetLastError=true)]
public static extern int AddFontResource(
[In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);


یه سوال دیگه, اینجور dll ها که ایمپورت باید کنی چیه؟ فرقشون با dll هایی که Add Reference میکنی بعد یوزینگشون میکنی چیه ؟؟؟

CsharpNevisi
سه شنبه 08 مرداد 1392, 16:38 عصر
دوست عزیز, این خط رو کجا باید بنویسم؟ چه namespace ای باید یوزینگ کنم؟

[DllImport("gdi32.dll", EntryPoint="AddFontResourceW", SetLastError=true)]
public static extern int AddFontResource(
[In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);


یه سوال دیگه, اینجور dll ها که ایمپورت باید کنی چیه؟ فرقشون با dll هایی که Add Reference میکنی بعد یوزینگشون میکنی چیه ؟؟؟

این دی ال ال ها برای خود ویندوز هستند .... و تو تمام سیستم ها هم هستند ... ولی دی ال ال هایی که اد رفرنس میکنی .. ممکنه در سیستم مقصد نباشن .... !!!!
اون کدم باید تو کلاس برنامه بنویسی

CsharpNevisi
سه شنبه 08 مرداد 1392, 16:42 عصر
چه namespace ای باید یوزینگ کنم
using System.Runtime.InteropServices;

maJJJid
سه شنبه 08 مرداد 1392, 16:50 عصر
این دی ال ال ها برای خود ویندوز هستند .... و تو تمام سیستم ها هم هستند ... ولی دی ال ال هایی که اد رفرنس میکنی .. ممکنه در سیستم مقصد نباشن .... !!!!
اون کدم باید تو کلاس برنامه بنویسی

ممنونم دوست عزیز.فهمیدم باید چه namespace ای رو اضافه کنم.
using System.Runtime.InteropServices;

فقط دوست عزیز اگه اطلاعات بیشتری از اینجور dll ها داری خوشحال میشم بدونم.اینکه میگی این dll ها واسه خود ویندوز هستن یعنی چی؟
خیلی دوست داشتم همیشه بدونم اینجور dll ها چی هستن و چرا باید اینجوری Import کنی.
اگه مقاله ای یا مطلبی داری تو این زمینه ممنون میشم.

aliagamon
سه شنبه 08 مرداد 1392, 17:13 عصر
شما با add refrence فایل DLL رو درون برنامه add میکونید اما این فایل ها که جزء سیستم هستند نیاز ندارند که add شوند چون میشه مستقیم اونا رو از سیستم گرفت
ببخشید دیر جواب دادم رفتم یه چک کردم دیدم میشه که با xcopy هم کپی کرد اما یه کامند حرف y از گاربر میخواد میگه :
<yes/no/all>
ولی راحت تره استفادش پیشنهاد میکنم که اگه مشکلی پیش نمیاد اینو استفاده کن

Process proc = new Process();
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.FileName = @"C:\WINDOWS\system32\xcopy.exe";
proc.StartInfo.Arguments = string.Format("{0} {1} /E /I", @"C:\Users\Ali\Desktop\AFSANEH.ttf", @"C:\Windows\Fonts");
proc.Start();
proc.WaitForExit();

و یه یوزینگ هم میخواد که اینه:

using System.Diagnostics;

مقاله هم یه نگاه میندازم بعدا انگلیسی میخوانی؟

maJJJid
سه شنبه 08 مرداد 1392, 17:21 عصر
شما با add refrence فایل DLL رو درون برنامه add میکونید اما این فایل ها که جزء سیستم هستند نیاز ندارند که add شوند چون میشه مستقیم اونا رو از سیستم گرفت
ببخشید دیر جواب دادم رفتم یه چک کردم دیدم میشه که با xcopy هم کپی کرد اما یه کامند حرف y از گاربر میخواد میگه :
<yes/no/all>
ولی راحت تره استفادش پیشنهاد میکنم که اگه مشکلی پیش نمیاد اینو استفاده کن

Process proc = new Process();
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.FileName = @"C:\WINDOWS\system32\xcopy.exe";
proc.StartInfo.Arguments = string.Format("{0} {1} /E /I", @"C:\Users\Ali\Desktop\AFSANEH.ttf", @"C:\Windows\Fonts");
proc.Start();
proc.WaitForExit();

و یه یوزینگ هم میخواد که اینه:

using System.Diagnostics;

مقاله هم یه نگاه میندازم بعدا انگلیسی میخوانی؟


خیلی ممنونم دوست عزیز.آره انگلیسیم خوبه.

aliagamon
سه شنبه 08 مرداد 1392, 17:24 عصر
من یه فونت کنار برنامه ام دارم ............ خب چطوری نصبش کنم ؟؟؟ ... ادرسشو کجا باید بدم ؟؟؟؟ مثلا بگم فونتی که با این ام کنار برنامه ام هست میخوام نصب شه ... !!!

این اموزش ساخت فایل msi نصب تو ویژوال هست که همین کارو میکنه فونت رو نصب میکنه
http://brutaldev.com/post/2009/03/26/Installing-and-removing-fonts-using-C

maJJJid
سه شنبه 08 مرداد 1392, 17:34 عصر
این اموزش ساخت فایل msi نصب تو ویژوال هست که همین کارو میکنه فونت رو نصب میکنه
http://brutaldev.com/post/2009/03/26/Installing-and-removing-fonts-using-C

ممنونم دوست عزیز.

aliagamon
سه شنبه 08 مرداد 1392, 18:01 عصر
ولا چیزی پیدا نکردم که خیلی نمونه و مثال داشته باشه ببین چیکار میخوای بکنی جداگونه بگرد دنبال استفاده ازش تو گوگل
http://www.c-sharpcorner.com/UploadFile/shrijeetnair/win32api12062005005528AM/win32api.aspx
http://msdn.microsoft.com/en-us/library/ff818516%28v=vs.85%29.aspx

maJJJid
سه شنبه 08 مرداد 1392, 18:05 عصر
ولا چیزی پیدا نکردم که خیلی نمونه و مثال داشته باشه ببین چیکار میخوای بکنی جداگونه بگرد دنبال استفاده ازش تو گوگل
http://www.c-sharpcorner.com/UploadFile/shrijeetnair/win32api12062005005528AM/win32api.aspx
http://msdn.microsoft.com/en-us/library/ff818516%28v=vs.85%29.aspx

خیلی خیلی ممنون دوستم.واسه کاری که میخام بکنم چجوری باید تو گوگل سرچ کنم واسه DLL ؟

aliagamon
سه شنبه 08 مرداد 1392, 18:24 عصر
والا سرچ کردن با چند بار امتحان لغت دستت میاد مثلا کلمه هایی مثل How to همیشه جواب میده یه بار امتحان کنی میفهمی همیشه جواب میده:شیطان:
منابع تخصصی تر هم هست مثل codeproject.com و stackoverflow.com سورس هم بخوای pscode.com هست عالیه:چشمک:

CsharpNevisi
سه شنبه 08 مرداد 1392, 18:33 عصر
ببین دوست عزیز ... ویندوز اطلاعات خود مثل ایکن ها ... اشاره گرها و کلا چزایی که مربوط به API ویندوز هستو تو این دی.ال.ال ها نگه میداره .... !!!
حالا چون این دی.ال.ال ها تو همه ویندوزها باید باشه ... نیازی به استفاده و افزودن به رفرنس نیست .... !!!!
کلش همینه دیگه .... !!!
حالا اگه یه لیستی از این دی.ال.ال ها میخوایی بفرما >>>> http://www.pinvoke.net/

maJJJid
سه شنبه 08 مرداد 1392, 19:23 عصر
والا سرچ کردن با چند بار امتحان لغت دستت میاد مثلا کلمه هایی مثل How to همیشه جواب میده یه بار امتحان کنی میفهمی همیشه جواب میده:شیطان:
منابع تخصصی تر هم هست مثل codeproject.com و stackoverflow.com سورس هم بخوای pscode.com هست عالیه:چشمک:

بازم ممنون استاد.

maJJJid
سه شنبه 08 مرداد 1392, 19:26 عصر
ببین دوست عزیز ... ویندوز اطلاعات خود مثل ایکن ها ... اشاره گرها و کلا چزایی که مربوط به API ویندوز هستو تو این دی.ال.ال ها نگه میداره .... !!!
حالا چون این دی.ال.ال ها تو همه ویندوزها باید باشه ... نیازی به استفاده و افزودن به رفرنس نیست .... !!!!
کلش همینه دیگه .... !!!
حالا اگه یه لیستی از این دی.ال.ال ها میخوایی بفرما >>>> http://www.pinvoke.net/

خیلی خیلی ازت ممنونم.دستت طلا.

maJJJid
سه شنبه 08 مرداد 1392, 20:03 عصر
من یه فونت کنار برنامه ام دارم ............ خب چطوری نصبش کنم ؟؟؟ ... ادرسشو کجا باید بدم ؟؟؟؟ مثلا بگم فونتی که با این ام کنار برنامه ام هست میخوام نصب شه ... !!!

فقط دوست عزیز این خط کد آدرس محلیه که فایل فونت اونجاست ؟

var result = AddFontResource(@"C:\MY_FONT_LOCATION\MY_NEW_FONT. TTF");

maJJJid
سه شنبه 08 مرداد 1392, 20:07 عصر
حالا دوستان عزیز مشکل من اینه که باید فایل فونت رو تو قسمت منابع سیستم (Resources) بذارم و چجوری باید آدرس اونو بدست بیارم ؟


var result = AddFontResource(@" ");

maJJJid
سه شنبه 08 مرداد 1392, 20:29 عصر
دوست عزیز فونت نصب نمیشه !!!
اینم کد:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Font
{
public partial class Form1 : Form
{
[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)] string lpFileName);

public void InstallFont()
{

var result = AddFontResource(@"D:\Temp\BAseman.TTF");
var error = Marshal.GetLastWin32Error();
if (error != 0)
{
Console.WriteLine(new Win32Exception(error).Message);
}
}

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void btnInstall_Click(object sender, EventArgs e)
{
InstallFont();
}
}
}

samadblaj
سه شنبه 08 مرداد 1392, 20:36 عصر
یکی از بهترین و کاملترین مقله در رابطه با نصب فونت ببینید (http://barnamenevis.org/showthread.php?130802-%D8%B7%D8%B1%D9%8A%D9%82%D9%87-%D9%86%D8%B5%D8%A8-%D9%81%D9%88%D9%86%D8%AA-%D9%88-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%D9%8A-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D9%81%D9%88%D9%86%D8%AA-%D9%87%D8%A7%D9%8A-%D9%86%D8%B5%D8%A8-%D8%B4%D8%AF%D9%87-%D8%B1%D9%88%D9%8A-%D8%B3%D9%8A%D8%B3%D8%AA%D9%85&referrerid=235579)
لطفا طریقه قرار دادن فونت در setup رو هم توضیح دهید

aliagamon
سه شنبه 08 مرداد 1392, 21:10 عصر
اولا که من اونو تو کنسول نوشتم پس از Console.Writeline نباید استفاده کنی تو وینفرم او پاک کن و یه مسیج باکس بزار....
بیا از کلاس FontOperation این سورس کمک بگیر (http://barnamenevis.org/showthread.php?130802-%D8%B7%D8%B1%D9%8A%D9%82%D9%87-%D9%86%D8%B5%D8%A8-%D9%81%D9%88%D9%86%D8%AA-%D9%88-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%D9%8A-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D9%81%D9%88%D9%86%D8%AA-%D9%87%D8%A7%D9%8A-%D9%86%D8%B5%D8%A8-%D8%B4%D8%AF%D9%87-%D8%B1%D9%88%D9%8A-%D8%B3%D9%8A%D8%B3%D8%AA%D9%85&referrerid=235579)(دست دوستمونم درد نکه که الان لینک داد)[سورسی که من دادم یه نمونه بود که خودت استفاده کنی به دلخواه ولی این کامله و میتونی با یه خط کد ازش استفاده کنی تو تاپیک اموزش هم هست که چطوری ساخته]
دستورات btnInstallFOnt رو ببین میفهمی چطور استفاده شده....
اینطوری راحت تر میفهمی من مثال نزدم شاید نفهمیده باشی...
اگرم باز نتونستی استفاده کنی یگو میخوای چیکار کنی فردا وقتم ازاده درستش میکنم برات:لبخند:

samadblaj
سه شنبه 08 مرداد 1392, 21:30 عصر
علی آقا یه سوال من میخوام با install shild برا برنامه ام setup درست کنم آیا میشه install shild خودش فونت ها رو نصب نمیکنه؟
دوستانی که استفاده مرده ان راهنمایی کنند.

aliagamon
سه شنبه 08 مرداد 1392, 21:44 عصر
من Installshiled11 دارم اینجا میری
Installation > Using Components > Installing Fonts.
همین معلومه دیگه

samadblaj
سه شنبه 08 مرداد 1392, 22:00 عصر
من Installshiled11 دارم اینجا میری
Installation > Using Components > Installing Fonts.
همین معلومه دیگه
Installshiled11 کار نکرده بودم با advansid setup کار کردم که میشد پس جای نگرانی نیست به راحتی میشه فونت ها رو توسط indtallShild نصب کرد.
ممنونم دوست عزیز