嵌入式资源文件的路径

时间:2011-03-12 15:12:04

标签: c# .net

我的资源文件中有一个图标,我想引用它。

这是需要该图标文件路径的代码:

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()) ;
这可能吗?如果是这样的话?

由于

6 个答案:

答案 0 :(得分:5)

我认为这应该有用,但我记不清楚了(不用仔细检查)。

MyShortcut.IconLocation = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.IconFilename.ico");

答案 1 :(得分:4)

我认为它可以帮助你...

//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 :(得分:4)

只是扩展SharpUrBrain's answer,这对我不起作用,而不是:

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;
}

答案 3 :(得分:2)

答案 4 :(得分:1)

它嵌入的资源,因此在DLL程序集中封装。所以你无法找到真正的道路,你必须改变你的方法。

您可能希望在内存中加载资源并将其写入临时文件,然后从那里链接它。在目标文件上更改图标后,您可以删除图标文件本身。

答案 5 :(得分:1)

在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);