#include <shobjidl_core.h>
#include <combaseapi.h>
#include <shobjidl_core.h>
#pragma comment(lib,"Ole32.lib")
#pragma comment(lib,"Strmiids.lib")
const CLSID CLSID_VirtualDesktopManagerInternal = {
0xC5E0CDCA, 0x7B6E, 0x41B2, 0x9F, 0xC4, 0xD9, 0x39, 0x75, 0xCC, 0x46, 0x7B };
const CLSID CLSID_VirtualDesktopManager = {
0xAA509086, 0x5CA9, 0x4C25, 0x8F, 0x95, 0x58, 0x9D, 0x3C, 0x07, 0xB4, 0x8A };
const CLSID CLSID_ImmersiveShell = {
0xC2F03A33 , 0x21F5 , 0x47FA , 0xB4 , 0xBB , 0x15 , 0x63 , 0x62 , 0xA2 , 0xF2 , 0x39};
IServiceProvider* pServiceProvider = NULL;
//
HRESULT hr = ::CoCreateInstance(
CLSID_ImmersiveShell, NULL, CLSCTX_LOCAL_SERVER,
__uuidof(IServiceProvider), (PVOID*)&pServiceProvider);
qDebug() << GetLastError();
if (SUCCEEDED(hr))
{
IVirtualDesktopManager *pDesktopManager = NULL;
hr = pServiceProvider->QueryService(__uuidof(IVirtualDesktopManager), &pDesktopManager);
if (SUCCEEDED(hr))
{
BOOL bIsOnCurrentDesktop = FALSE;
hr = pDesktopManager->IsWindowOnCurrentVirtualDesktop((HWND)winId(), &bIsOnCurrentDesktop);
if (SUCCEEDED(hr))
{
qDebug() << bIsOnCurrentDesktop;
}
pDesktopManager->Release();
}
pServiceProvider->Release();
}