WPF JumpTask如何使用非默认图标?

5

我正在使用WPF JumpTask对象,我希望我的Windows 7跳转列表图标是来自我的应用程序的图标 - 但不是默认图标。是另一个不同的图标。

那么我该怎么做呢?我猜我需要指定一个不同的图标资源索引。

但是我该如何将我的图标存储为资源,并且如何知道哪个图标是哪个索引?

2个回答

2
根据MSDN的说明,JumpTask所使用的图标必须作为本地资源可用。因此,您只能从单独的资源文件中加载图标。所以,您需要将IconResourcePath属性设置为带有您的图标的DLL。如果您有几个图标,请使用IconResourceIndex属性来指定所需的图标。
例如,下面的代码:
<Application x:Class="YourApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <JumpList.JumpList>
        <JumpList>
            <JumpTask Title="TargetApp"
                      Description="JumpTask to start TargetApp"
                      ApplicationPath="TargetApp.exe"
                      IconResourcePath="LibWithIcons.dll"
                      IconResourceIndex="2" />
        </JumpList>
    </JumpList.JumpList>
</Application>

将创建一个JumpList并将其设置为JumpTask项TargetApp第三个图标(从LibWithIcons.dll开始,以零为基础的编号)。顺便说一句,如果JumpTask启动另一个应用程序,通常会将IconResourcePath设置为该应用程序的可执行文件,因此它的图标将被显示:

<JumpTask Title="TargetApp"
    Description="JumpTask to start TargetApp"
    ApplicationPath="TargetApp.exe"
    IconResourcePath="TargetApp.exe"
    IconResourceIndex="0" />

如何创建在MSDN论坛上描述的图标DLL。


2
你怎么知道哪个图标在哪个索引位置?你的回答没有说明这一点。 - imoatama
1
你如何添加图标和/或知道它是哪个索引?答案并不清楚,链接也是如此。它说如何添加图标,但是我尝试从0到50的任何索引中都没有出现。 - user99999991

1

它正在寻找Win32资源中的图标,这与托管资源非常不同。查看这篇优秀的文章以了解它们 - 可以创建它们并指定图标顺序。

将图标嵌入WPF应用程序作为资源

最终我使用了Einar Eigilson创建的优秀工具,它允许您在后期构建事件中将图标添加为资源。

值得注意的是,无论我做了什么,即使嵌入静态win32资源,我也无法在调试模式下显示任何除主要图标之外的图标。在像我一样拔光头发之前,请尝试在发布模式下进行测试。


您可以通过直接将主窗口的图标属性分配给它来在调试器中运行时显示主窗口图标,例如在窗口的构造函数中的InitializeComponent()之后。以下代码可以工作,但是它会得到错误的图标大小。Icon = Imaging.CreateBitmapSourceFromHIcon(KillXDes.Properties.Resources.KillProcIcon.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());虽然这不是一个重要问题,但他们搞砸了。 - 15ee8f99-57ff-4f92-890c-b56153

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接