c# - 当用户打开它两次时,如何避免为我的应用程序组合任务栏按钮?
问题描述
在较新版本的 Windows 中,当我打开同一个应用程序两次时,任务栏会将两个按钮组合在一起。我能做些什么来避免这种情况(不包括更改 Windows 设置,因为我只希望它用于我的应用程序,而不是所有应用程序)。
解决方案
Raymond Chen 不久前在他的博客上详细介绍了如何做到这一点:如何自定义我的应用程序窗口在任务栏中的分组方式?:
本文中的所有信息均来自 MSDN 中的文章应用程序用户模型 ID (AppUserModelIDs)。
好的,假设您的应用程序实际上是其他应用程序的运行时。您需要做的是为您托管的每个应用程序分配不同的 AppID。这个机制取决于你。您的应用程序可能会明确提供唯一 ID,或者您可以推断出一个。例如,如果您是 Internet Explorer 并且您的“应用程序”是固定网站,您可以使用固定网站的 URL 作为唯一 ID。
然后,您可以获取您的唯一 ID 并为它们创建 AppID。AppID的格式为
CompanyName.ProductName.SubProduct.VersionInformation
其中 SubProduct 是可选的,并且仅当您希望将应用程序的不同版本视为不同时才存在 VersionInformation。(如果您希望升级版本替代旧版本,则省略 VersionInformation 以便新旧版本使用相同的 AppID。)
然后将此 AppID 分配给与“应用程序”关联的每个窗口。您可以通过调用 对整个过程执行此操作
SetCurrentProcessExplicitAppUserModelID
,也可以通过设置属性逐个窗口执行此操作。PKEY_AppUserModel_ID
推荐阅读
- javascript - 带有 Dc.Js 和更新 Jquery 数据表的过滤功能
- matlab - 在 MacOS 上运行为 Windows 编码的 Matlab p 文件
- github - 如何在 Github 中使用语法高亮编写 diff 代码
- reactjs - 无法在 react native 中连接 redux store
- javascript - CSS似乎被发送到页面,但没有任何应用[ExpressJS + Handlebars]
- swift - SpriteNodes之间没有碰撞检测
- python-3.x - Python - OpenCV - 二值化以隔离与背景颜色相同的对象
- php - 这两个 php 函数是否产生相同的结果?
- powershell - Word 绕过密码保护的文件
- python - 如何防止向 ThreadPoolExecutor 提交过多的作业?