更改固定的任务栏图标(Windows 7)

Posted

技术标签:

【中文标题】更改固定的任务栏图标(Windows 7)【英文标题】:Change pinned taskbar icon (windows 7) 【发布时间】:2010-11-01 10:14:36 【问题描述】:

我不想自定义 Windows 7 任务栏中显示的图标。 当我的应用程序运行时,我可以通过更改主窗口图标来实现,但是当应用程序被固定时,会显示 exe 的图标。

如何将我的应用程序的任务栏图标设置为与嵌入在 exe 中的图标不同的图标?

没试过,这个solution 可以用但是看起来很脏。


编辑:

我们的应用程序编译一次,但取决于配置文件,功能是否启用,因此它是一个产品或另一个。我们不想为每个产品编译一个 exe。

上面的解决方案可能不起作用,因为我的应用程序的许多实例可以安装在不同的路径中(所以你最终会得到相同的 exe 文件名但不同的图标!),这个注册表项是设计不当还是我遗漏了什么?

【问题讨论】:

我会假设不会对此提供支持,只是因为如果我固定了一个图标,我会假设该图标以后不会变成其他东西。我可以理解的叠加层,但不是 IE 图标在单击时变成 Firefox 图标。 看到它:***.com/questions/1285798/… 【参考方案1】:

编辑 下面的信息有点过时了;所有新的 Windows 7 位现在都可作为托管 API 使用,可在此处获取:http://code.msdn.microsoft.com/WindowsAPICodePack

调试大师Sasha Goldshtein 在新的任务栏 API 上有一个series of articles。你应该看看Overlay Icons and Progress Bars API。

您可以从 Microsoft Code 上的 Windows 7 Taskbar Developer Resources 下载示例代码。您正在寻找的是IMClient 示例:

IMClient 示例演示了如何 任务栏覆盖图标和任务栏 进度条可以点亮 应用程序的任务栏按钮 依赖额外的对话或 在系统通知中的图标上 区域(托盘)。

(来源:microsoft.co.il)

(来源:microsoft.co.il)

(来源:microsoft.co.il)

我相信这应该可以帮助你实现你想要的。

【讨论】:

我知道,我已经在我的应用中使用了覆盖图标/pgbar,但覆盖与应用图标不同。固定和关闭应用时不显示叠加层...【参考方案2】:

如果您想在任务栏中有一个快捷方式,可以直接转到有用的地方,例如“我的文档”目录。简单的修复。 . .

将文件夹拖放到任务栏中(这会创建图像的快捷方式)。导航到放置该快捷方式的目录,右键单击快捷方式并选择“属性”以更改目标。选择“常规”选项卡以更改快捷方式的名称。快捷方式放在这里:

C:\Users[user]\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar

您可以导航到此目录并编辑“图像”快捷方式的属性。

【讨论】:

【参考方案3】:

右键单击固定图标,在弹出窗口中您会看到程序标题,再次右键单击并转到属性。在那里,您可以通过单击按钮来更改图标 “更改图标”。对我来说,它需要重新启动才能完成更改。

【讨论】:

【参考方案4】:

据我所知,由于某种原因,您无法更改已固定到任务栏的程序的图标。要做到这一点,只需取消固定程序,在开始菜单中找到它,右键单击 - 属性 - 更改图标。然后将其重新固定到任务栏,它将具有新图标!

【讨论】:

【参考方案5】:

当您将应用程序固定到任务栏时,它只是在以下目录中创建一个快捷方式:

C:\Users\<User Name>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar

您应该能够识别快捷方式的位置(即,获取 KnownFolders 并从那里工作。UserAppData 应该是那个),然后使用 P/Invoke (IShellLink),您可以更改设置快捷方式的图标使用。机器可能需要重新启动才能生效,但它应该可以工作。

如果您按住 Shift 并右键单击固定的应用程序,然后选择“属性”,您可以看到快捷方式的“更改图标”按钮。这基本上就是你需要用代码来模拟的。

所有这些事情都可以用代码来完成,但你是否认为它们比注册表设置更好,这取决于你。

【讨论】:

不幸的是,当用户自己尝试固定应用程序时,我无法处理它。也许在目录上看一下……真的很脏! 作为用户偏好的一部分,快速启动栏通常应被视为应用程序的禁区,因此应留给用户管理该区域。 即使没有尝试在代码中执行此操作,也能提供出色的信息。谢谢。 此方法确实需要注销/重新启动。无论如何喜欢用SetClassLongPtr触发一个nevent来让它刷新图标?【参考方案6】:

不幸的是,我现在无法对此进行测试,但也许只是创建一个常规的、好的旧快捷方式就可以解决问题?创建应用的快捷方式,更改图标,然后固定快捷方式而不是应用本身?

我会检查下一次何时可以访问我的 Windows 7 机器...

【讨论】:

【参考方案7】:

我不知道我是否理解你的问题,但是..

如果您创建一个应用程序并将主窗口的图标属性设置为,该图标也会出现在任务栏中。但是,如果您将它固定到任务栏,该图标就会消失。我对吗?如果是这样,请转到项目属性并在应用程序选项卡中,放置您想要的 exe 图标。现在,您将在固定时在任务栏中看到该图标。

我对两件事都使用相同的图标:P

【讨论】:

第一部分你是对的。但是无论配置文件是否存在,我的主窗口的图标都不相同。我希望这个图标即使在应用程序被固定而不为每个配置编译一个 exe 时也能保留。 “为每个配置编译一个 exe”是什么意思?在 Windows 7 上,任务栏图标和窗口标题图标是相同的(使用主窗口上的 Icon 属性)。但是,固定图标是 .exe 图标。如果您只有一个 .exe 并且想要固定它,请在该 .exe 上放置一个图标,当应用固定时,您将看到该图标。简而言之,对这两件事使用相同的图标。 我正在开发 3 个版本的应用程序(精简版、普通版、专业版)。营销要求我们为每个版本设置不同的图标。版本由配置 + 序列号确定,我们不想为每个版本生成一个 exe 只是为了更改图标。我知道可以更改图标(请参阅我的问题中的链接),但由于它基于 exe 名称,如果用户安装了两个或更多版本,它将失败。我认为这是不可能的,我们必须保留一个图标或编译多个 exe。【参考方案8】:

您可以使用基于“Windows Vista Bridge”的名为“Windows 7 Bridge”的库来执行此操作。

这些是围绕所有 Vista 和 Windows 7 本机功能的托管包装器。

更多信息可以找到here

【讨论】:

我知道这个库,你能提供更多信息(示例...)如何实现这个吗?【参考方案9】:

看看this blog。他撰写了一系列关于对 Windows 7 任务栏进行编程的博文,所以也许这会为您指明正确的方向。

【讨论】:

以上是关于更改固定的任务栏图标(Windows 7)的主要内容,如果未能解决你的问题,请参考以下文章

在windows中任务栏上的内容为

固定图标状态

电脑任务栏怎么隐藏

如何在 Windows 7 上删除 Java 程序的标题栏和任务栏图标?

Windows 7 的任务栏上的 Delphi 表单图标模糊(启用 MainFormOnTaskbar)

如何设置应用程序的任务栏图标在Windows 7-qt,windows-7,pyqt