C# 控制我的应用程序的windows 7任务栏分组

C# 控制我的应用程序的windows 7任务栏分组,c#,.net,windows,taskbar,C#,.net,Windows,Taskbar,我的程序需要在用户请求时打开一系列信息窗口,并希望在Windows7任务栏上实现某种自定义分组 所需功能:我的所有信息窗口应分组在一起(即,如果用户系统上启用了分组),但我的主窗口不应与信息窗口分组 我无法为我的信息窗口生成新进程 我的想法是,有一种方法可以修改信息窗口的窗口句柄,让任务栏单独分组,但我真的不知道从哪里开始 编辑 我发现了一些新信息。我可能可以使用SHGetPropertyStoreForWindow执行以下操作: …作为任何应用程序运行窗口的属性。这可以通过以下两种方式之一进行

我的程序需要在用户请求时打开一系列信息窗口,并希望在Windows7任务栏上实现某种自定义分组

所需功能:我的所有信息窗口应分组在一起(即,如果用户系统上启用了分组),但我的主窗口不应与信息窗口分组

我无法为我的信息窗口生成新进程

我的想法是,有一种方法可以修改信息窗口的窗口句柄,让任务栏单独分组,但我真的不知道从哪里开始

编辑

我发现了一些新信息。我可能可以使用
SHGetPropertyStoreForWindow
执行以下操作:

…作为任何应用程序运行窗口的属性。这可以通过以下两种方式之一进行设置: 如果一个进程拥有的不同窗口需要不同的AppUserModelID来控制任务栏分组,请使用SHGetPropertyStoreForWindow检索窗口的属性存储并将AppUserModelID设置为窗口属性

说:

“如果一个进程拥有的不同窗口需要不同的AppUserModelID来控制任务栏分组,请使用检索窗口的属性存储并将AppUserModelID设置为窗口属性。”

我使用和以下代码解决了此问题:

TaskbarManager.Instance.SetApplicationIdForSpecificWindow(window, guid);

分配了相同id的窗口将被分组在一起-具有唯一id的窗口将有一个单独的任务栏图标。

为您的窗口分配相同的appID。这对我很有效。我无法使用Windows API代码包,因为我们是一个.NET 2.0应用程序。我的问题是,我们的应用程序也可以通过COM启动,而当它启动时,它将始终组合在任务栏分组中,并使用与通过COM调用子应用程序的父应用程序相同的图标和任务栏按钮。这是实现此功能的VB.NET代码:
公共声明函数setCurrentProcessExplicitapUserModelId Lib“Shell32.dll”别名“setCurrentProcessExplicitapUserModelId”(ByVal AppID作为字符串)作为整数)
setCurrentProcessExplicitapUserModelId(“CompanyName.ProductName.SubProduct.1.0.0”)
如何获取窗口句柄以及这是什么(gu)id?@方括号:您可以使用任何guid。具有相同guid的窗口将分组在一起-具有唯一id的窗口将具有单独的任务栏图标。