C# 在任务栏(如Skype)中实现单独的应用程序实例

C# 在任务栏(如Skype)中实现单独的应用程序实例,c#,windows,winapi,skype,taskbar,C#,Windows,Winapi,Skype,Taskbar,我注意到现在Skype的一些更新,如果你启动2或3个Skype实例,它们在windows任务栏中显示为单独的窗口,你可以单独拖动它们,而不是将其他应用程序“粘”在一起,你可以一次拖动它们。 我的问题是如何在我的应用程序中实现单独的外观,是否可以从C#或通过winapi?shell使用每个窗口的(AppUserModelID)对任务栏中的窗口进行分组 默认情况下,由给定EXE生成的每个窗口(即使在不同的进程中)都共享一个系统生成的AppUserModelID 您可以通过调用为每个进程提供自己的Ap

我注意到现在Skype的一些更新,如果你启动2或3个Skype实例,它们在windows任务栏中显示为单独的窗口,你可以单独拖动它们,而不是将其他应用程序“粘”在一起,你可以一次拖动它们。
我的问题是如何在我的应用程序中实现单独的外观,是否可以从C#或通过winapi?

shell使用每个窗口的(AppUserModelID)对任务栏中的窗口进行分组

默认情况下,由给定EXE生成的每个窗口(即使在不同的进程中)都共享一个系统生成的AppUserModelID

您可以通过调用为每个进程提供自己的AppUserModelID。根据你的描述,这可能就是Skype正在做的事情,尽管我还没有检查

通过在窗口上设置不同的属性,可以为每个窗口提供自己的AppUserModelID

请注意,这些ID需要具有特定的:

CompanyName.ProductName.SubProduct.VersionInformation

雷蒙德·陈(Raymond Chen)对此表示关注,我链接到的文档也值得一读

我不知道WinForms对此有明确的支持,但您当然可以使用interop直接调用Win32 API