Путь к встроенному файлу ресурсов
У меня есть значок в файле ресурсов, который я хочу ссылаться.
Это код, который нуждается в этом пути к файлу значка:
IWshRuntimeLibrary.IWshShortcut MyShortcut ;
MyShortcut = (IWshRuntimeLibrary.IWshShortcut)WshShell.CreateShortcut(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\PerfectUpload.lnk");
MyShortcut.IconLocation = //path to icons path . Works if set to @"c:/icon.ico"
Вместо того, чтобы иметь внешний файл значка, я хочу, чтобы он нашел встроенный файл значка.
Что-то вроде
MyShortcut.IconLocation = Path.GetFullPath(global::perfectupload.Properties.Resources.finish_perfect1.ToString()) ;
Это возможно? если да, то как?
Спасибо
Ответы
Ответ 1
Я думаю, это поможет вам в чем-то...
//Get the assembly.
System.Reflection.Assembly CurrAssembly = System.Reflection.Assembly.LoadFrom(System.Windows.Forms.Application.ExecutablePath);
//Gets the image from Images Folder.
System.IO.Stream stream = CurrAssembly.GetManifestResourceStream("ImageURL");
if (null != stream)
{
//Fetch image from stream.
MyShortcut.IconLocation = System.Drawing.Image.FromStream(stream);
}
Ответ 2
Я думаю, что это должно сработать, но я точно не помню (не для проверки двойной проверки).
MyShortcut.IconLocation = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.IconFilename.ico");
Ответ 3
Просто расширяя ответ SharpUrBrain, который не работал у меня, а не:
if (null != stream)
{
//Fetch image from stream.
MyShortcut.IconLocation = System.Drawing.Image.FromStream(stream);
}
Это должно быть что-то вроде:
if (null != stream)
{
string temp = Path.GetTempFileName();
System.Drawing.Image.FromStream(stream).Save(temp);
shortcut.IconLocation = temp;
}
Ответ 4
Ресурс, в который он встроен, поэтому инкапсулирован в сборку DLL. Таким образом, вы не можете получить свой реальный путь, вы должны изменить свой подход.
Вероятно, вы захотите загрузить ресурс в память и записать его во временный файл, а затем связать его с ним. После изменения значка в файле назначения вы можете сами удалить файл значка.
Ответ 5
Протокол res
может помочь вам в этом: http://msdn.microsoft.com/en-us/library/aa767740(v=vs.85).aspx
Ответ 6
В WPF я сделал это раньше:
Uri TweetyUri = new Uri(@"/Resources/MyIco.ico", UriKind.Relative);
System.IO.Stream IconStream = Application.GetResourceStream(TweetyUri).Stream;
NotifyIcon.Icon = new System.Drawing.Icon(IconStream);