从任务栏取消单独进程的分组

Dav*_*ave 2 c++ windows qt taskbar

我正在使用 C++ 和 Qt 编写一个应用程序,用户可以在同一台计算机上运行该应用程序的多个实例。应用程序的每个实例都有两到三个与之关联的窗口。目前,应用程序的所有实例及其窗口都在任务栏中分组在一起(上图)。我希望每个进程在任务栏中都有自己的组(下图)。如何才能实现这一目标?

在此输入图像描述

jwi*_*mar 6

您可以为某些窗口或某些进程设置不同的应用程序 ID。Windows 使用它来确定是否对图标进行分组。

请参阅这篇文章:http://msdn.microsoft.com/en-us/magazine/dd942846.aspx


相关引用:

设置进程的应用程序 ID 涉及从 shell32.dll 调用SetCurrentProcessExplicitAppUserModelIDWin32 函数。设置窗口的应用程序 ID 需要调用该SHGetPropertyStoreForWindow函数,然后操作返回的IPropertyStore对象。以下示例向您展示了如何执行此操作:

PROPVARIANT pv; 
InitPropVariantFromString(L"MyAppID", &pv);
IPropertyStore* pps;
VERIFY(SHGetPropertyStoreForWindow(hwnd, IID_PPV_ARGS(&pps))); 
VERIFY(pps->SetValue(PKEY_AppUserModel_ID, pv)); 
VERIFY(pps->Commit());
Run Code Online (Sandbox Code Playgroud)