【问题标题】:WPF JumpTask another icon than the default one?WPF JumpTask 另一个图标比默认图标?
【发布时间】:2011-07-18 16:19:57
【问题描述】:

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

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

但是我什至如何将我的图标存储为资源,以及我如何知道哪个图标是哪个索引?

【问题讨论】:

    标签: c# wpf vb.net windows-7


    【解决方案1】:

    根据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>
    

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

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

    MSDN forums 中描述的如何创建图标 DLL。

    【讨论】:

    • 你怎么知道哪个图标在哪个索引?您的回答并没有说明这一点。
    • 如何添加图标和/或知道它是什么索引?答案不清楚,链接也不清楚。它说明了如何添加图标,但它们都没有出现在我尝试从 0 到 50 的任何索引中。
    【解决方案2】:

    它在 Win32 资源中寻找您的图标,这与托管资源完全不同。看看这篇优秀的文章来理解这些 - 可以创建它们并指定图标顺序。

    Embed Icons into WPF Application as Resource

    我最终使用了由 Einar Eigilson 创建的 great tool,它允许您将图标作为资源添加到构建后事件中。

    还值得注意的是,无论我做什么,在调试模式下运行时都无法显示图标。即使嵌入静态 win32 资源也没有显示主图标之外的任何图标。在像我一样拔头发之前尝试在 Release 中进行测试。

    【讨论】:

    • 您可以在调试器中运行时显示主窗口图标,方法是将其直接分配给主窗口的 Icon 属性,例如在 InitializeComponent() 之后的窗口构造函数中。以下方法有效,尽管它会为您提供错误的图标大小。 Icon = Imaging.CreateBitmapSourceFromHIcon(KillXDes.Properties.Resources.KillProcIcon.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); 不是一个重要的问题,但他们把它搞砸了。
    猜你喜欢
    • 2019-06-21
    • 1970-01-01
    • 2015-02-05
    • 2018-05-23
    • 2015-06-19
    • 1970-01-01
    • 2022-10-15
    • 2012-04-30
    • 1970-01-01
    相关资源
    最近更新 更多