c#如何将应用程序固定到任务栏

时间:2019-07-23 08:03:33

标签: c# winforms windows-10 taskbar

当用户按下表单的最小化按钮时,我希望将我的应用程序固定在任务栏上,但是我不知道该怎么做,或者我的操作系统是Windows 10。 谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

最小化窗口时,默认情况下,它将在任务栏中最小化。除非您将其设置为不在此处显示。

如果这是您想要的,则无需执行任何操作。按照固定方式,您不应该这样做。


不要要求支持固定,这就是原因

Microsoft竭尽全力防止应用程序更改用户首选项。为什么?因为否则,每个应用程序都会这样做。通过API授予用户首选项访问权限意味着开发人员开始利用它。我的意思是applicationg争取屏幕空间。 您安装了公司A产品,并且取消了公司B产品的固定。

如果存在这样的API,请想象编写一个替换所有引脚的“笑话程序”有多么容易。 是的,那就是恶意软件。

不,仅用于调用可执行文件的API不可行,这意味着存在于操作系统深处的针对任何可执行文件执行此功能的函数调用。然后有人找到它并直接调用它。此外,对于Microsoft来说,将外壳按原样解耦一直是一个大麻烦。

探究地处理它。

进一步阅读Why is there no programmatic access to the Start menu pin list?

因此,答案是“请不要这样做”。


但是其他应用程序做到了...

好的,某些应用程序确实可以固定,怎么做?

不管是什么我都可以告诉你:

  • 这是一个坏习惯。
  • 不能保证它能正常工作,在下一个Windows更新中会更少。

一种方法是模仿用户输入。很难考虑所有情况(如果隐藏任务栏,如果不在通常位置,该怎么办,如果资源管理器未运行,该怎么办,等等),但是您可以想象设置指针位置并发送键。 >


另一种方法是直接写入列表。它在哪里?您可能已经发现固定的项目位于:

%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar

它们是常规的,很好的旧快捷方式。您可以添加自己的。而且行不通。


固定的项目实际上是由组策略控制的。 显然,快捷方式是一种备用。您需要弄乱Windows注册表。参见How to manage Windows Taskbar Items pinning using Group Policy。我想我们需要Favorites中的FavoritesResolveHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband。好吧,这不是简单的清单,而是二进制文件。我最好的猜测是,它是某种打包格式的快捷方式文件的转储,祝您好运。

我没有为您解决这个问题。此外,我敢打赌人们会在这里找到它,开始加以利用,然后由Microsoft对其进行更改,然后它将无法工作。


显然,在某种程度上,有一种编程方式可以做到这一点Pin Items to the Start Menu or Windows 7 Taskbar via Script 。这个想法是从快捷方式中获取一个外壳对象,并在其上运行“ Pin to Tas&kbar”动词。链接文章中提供的脚本。我不会对此进行详细说明,因为...... it does no longer work

  

这是Windows客户端团队故意更改的行为。我相信Windows团队已经意识到了这些问题,但是您可以通过Windows 10反馈应用程序提供反馈。

您也可以在此处阅读

  

固定在“开始”菜单或任务栏上的项目是用户首选项。应用程序不应覆盖用户的偏好。从长远来看,将不支持以编程方式将项目固定到Windows 10中的任务栏或“开始”菜单。只有用户才能固定项目。

显然,它可以通过以管理员权限运行应用程序来运行,但无法确认。无论如何,如您所见,没有任何保证。


另请参阅:How did that program manage to pin itself to my taskbar when I installed it?

如果您真的必须这样做(如Raymond Chen所说的那样),希望您能收到您的奖金。