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

Ale*_*967 -1 c# taskbar winforms windows-10

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

The*_*aot 6

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

如果这就是你想要的,你什么都不用做。根据固定它,你不应该这样做。


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

微软竭尽全力防止应用程序改变用户偏好。为什么?因为否则,每个应用程序都会这样做。通过 API 访问用户首选项意味着开发人员开始利用它。这意味着应用程序争夺屏幕空间。您安装了 A 公司产品,它取消了 B 公司产品的固定。

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

不,仅用于调用可执行文件的 API 是不可行的,这意味着在操作系统深处的某个地方存在为任何可执行文件执行此操作的函数调用。然后有人找到它并直接调用它。况且,把shell原样解耦也给微软带来了很大的麻烦。

相反,资源管理器会处理它。

进一步阅读为什么没有对开始菜单引脚列表的编程访问?.

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


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

好吧,某些应用程序确实设法固定,他们是如何做到的?

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

  • 这是一种不好的做法。
  • 它不能保证工作,更不用说在下一个 Windows 更新中。

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


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

%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
Run Code Online (Sandbox Code Playgroud)

它们是常规的、古老的、捷径。你可以添加你自己的。它不会工作。


固定的项目实际上是由组策略控制的。显然,快捷方式是后备。您将需要弄乱 Windows 注册表。请参阅如何使用组策略管理 Windows 任务栏项目固定。我想我们要Favorites和FavoritesResolve从HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband。嗯,它不是一个简单的列表,它是二进制的。我最好的猜测是它是某种打包格式的快捷方式文件的转储,祝你好运。

我不是为你解决这个问题。此外,我敢打赌人们在这里找到它,开始利用它,然后 Microsoft 对其进行更改,然后它就不起作用了。


显然,在某些时候有一种编程方式可以通过脚本将项目固定到开始菜单或 Windows 7 任务栏 。这个想法是从快捷方式中获取一个 shell 对象并在其上运行“Pin to Tas&kbar”动词。链接文章中提供的脚本。我不会详细介绍它,因为......它不再起作用:

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

你也可以在那里阅读:

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

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


另请参阅:当我安装该程序时,该程序如何设法将其固定到我的任务栏上?.

如果你真的必须这样做,正如陈雷蒙所说,我希望你能拿到奖金。