Qt windows平台判断窗口是否在当前虚拟桌面

#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();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值