我们有一个应用程序,我们称之为MyApp.在安装时,我们为MyApp创建一个桌面图标,基本上调用MyLauncher.exe /launch MyApp.exe.MyLauncher做了一些有用的东西(检查更新等),然后启动MyApp.

使用Windows 7的用户可能希望将其固定到任务栏(即桌面图标上的鼠标右键,"Pin to Taskbar"):

但是,由于快捷方式指向MyLauncher,当用户启动应用程序时(使用桌面图标或任务栏图标)会发生以下情况:MyLauncher执行其操作,然后启动MyApp.在任务栏上,结果如下:

我理解为什么会这样.由于MyLauncher启动了MyApp,因此Windows 7任务栏将它们视为两个不同的应用程序.
显然,我的问题是:作为MyLauncher和MyApp的开发者,我可以对此做点什么吗?我希望Windows 7任务栏能够将所有实例MyApp.exe与快捷方式"关联" 起来MyLauncher.exe /lauch MyApp.exe.
我的程序需要在用户请求时打开一系列信息窗口,并希望在Windows 7任务栏上实现某种自定义分组.
期望的功能:我的所有信息窗口应该组合在一起(如果在用户系统上启用了分组),但我的主窗口不应该与信息窗口分组.
我无法为我的信息窗口生成新进程.
我的思维过程是,有一种方法可以修改信息窗口的窗口句柄,以便让任务栏单独分组,但老实说,我甚至不知道从哪里开始.
编辑
我找到了一些新的信息.我可能能够SHGetPropertyStoreForWindow像这里所说的那样做:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v = vs.85).aspx #where
...作为任何应用程序运行窗口的属性.这可以通过以下两种方式之一设置:如果一个进程拥有的不同窗口需要不同的AppUserModelID来控制任务栏分组,请使用SHGetPropertyStoreForWindow检索窗口的属性存储并将AppUserModelID设置为窗口属性.
我正在使用两个程序,“启动程序”(更新程序)和“主”程序。starter 更新并启动 main.
当固定到 Windows 任务栏或开始菜单时,程序必须表现良好。例如,用户应该能够:
是否可以使固定的快捷方式直接指向“starter”而不是“main”?
我尝试使用通用 ID 对它们进行分组,但这不会影响固定的路径。
现在我正在“starter”进程中加载“main”。这按预期工作,但有一个问题,即所有更新都受到 .NET 版本的“starter”的限制,该版本现在已经很旧了,即 .NET 3.5。