控制我的应用程序的Windows 7任务栏分组

时间:2012-08-03 02:39:48

标签: c# .net windows taskbar

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

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

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

我的思维过程是,有一种方法可以某种方式修改信息窗口的窗口句柄,让任务栏单独分组,但老实说,我甚至不知道从哪里开始。

修改

我找到了一些新信息。我可以使用此处所述的SHGetPropertyStoreForWindow执行某些操作:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx#where

  

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

2 个答案:

答案 0 :(得分:2)

Application User Model IDs说:

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

答案 1 :(得分:0)

我使用Windows API Code Pack for .NET和以下代码解决了这个问题:

TaskbarManager.Instance.SetApplicationIdForSpecificWindow(window, guid);

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