C# 当用户打开我的应用程序两次时,如何避免任务栏按钮组合在一起?

C# 当用户打开我的应用程序两次时,如何避免任务栏按钮组合在一起?,c#,.net,vb.net,C#,.net,Vb.net,在较新版本的Windows中,当我打开同一应用程序两次时,任务栏会将两个按钮组合在一起。我能做些什么来避免这种情况(不包括更改Windows设置,因为我只希望它用于我的应用程序,而不是所有的应用程序)。陈雷蒙在他的博客上详细介绍了如何做到这一点: 本文中的所有信息都来自MSDN中的文章 好的,假设您的应用程序实际上是其他应用程序的运行时。您需要做的是为托管的每个应用程序分配不同的AppID。其机制取决于您。您的应用程序可能会显式地提供一个唯一的ID,或者您可以推断出一个唯一的ID。例如,如果您是

在较新版本的Windows中,当我打开同一应用程序两次时,任务栏会将两个按钮组合在一起。我能做些什么来避免这种情况(不包括更改Windows设置,因为我只希望它用于我的应用程序,而不是所有的应用程序)。

陈雷蒙在他的博客上详细介绍了如何做到这一点:

本文中的所有信息都来自MSDN中的文章

好的,假设您的应用程序实际上是其他应用程序的运行时。您需要做的是为托管的每个应用程序分配不同的AppID。其机制取决于您。您的应用程序可能会显式地提供一个唯一的ID,或者您可以推断出一个唯一的ID。例如,如果您是Internet Explorer,并且您的“应用程序”是固定的网站,则可以使用被固定的网站的URL作为唯一ID

然后,您可以获取您的唯一ID并为其创建AppID。问题是

子产品是可选的,只有当您希望应用程序的不同版本被视为不同时,版本信息才会显示。(如果您希望升级版本替换旧版本,则省略版本信息,以便旧版本和新版本使用相同的AppID。)

然后将此AppID分配给与“应用程序”关联的每个窗口。您可以通过调用
SetCurrentProcessExplicitAppUserModelID
对整个进程执行此操作,也可以通过设置
PKEY\u AppUserModel\u ID
属性对整个进程执行此操作


您想将应用程序的实例限制为一个还是多个?@RossBush我需要多个实例,但不要组合在一起,以便在多个实例之间轻松切换。@Joey谢谢,这正是我需要的。我已经实现了它,它很有效。你应该把它作为一个答案发布,这样我就可以标记它。@viking_grll:我在电话上,所以用链接页面上复制的关键信息来写一个真实的答案有点太麻烦了。现在纠正了。
CompanyName.ProductName.SubProduct.VersionInformation