前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >判断窗口是否在当前虚拟桌面

判断窗口是否在当前虚拟桌面

作者头像
Qt君
发布2023-03-17 14:34:00
1.2K0
发布2023-03-17 14:34:00
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

最近项目中需要判断窗口是否在当前虚拟桌面的需求(Windows平台)。在网上找到了下面的方法,亲测可以实现,分享给大家。如果你有更好的方法,请在留言区分享吧。

IVirtualDesktopManager实例的IsWindowOnCurrentVirtualDesktop提供窗口是否在当前活动的虚拟桌面上。

代码语言:javascript
复制
IServiceProvider* pServiceProvider = NULL;
HRESULT hr = ::CoCreateInstance(
    CLSID_ImmersiveShell, NULL, CLSCTX_LOCAL_SERVER,
    __uuidof(IServiceProvider), (PVOID*)&pServiceProvider);

if (SUCCEEDED(hr))
{
    IVirtualDesktopManager *pDesktopManager = NULL;
    hr = pServiceProvider->QueryService(__uuidof(IVirtualDesktopManager), &pDesktopManager);

    if (SUCCEEDED(hr))
    {
        BOOL bIsOnCurrentDesktop = FALSE;
        hr = pDesktopManager->IsWindowOnCurrentVirtualDesktop(hWnd, &bIsOnCurrentDesktop);

        if (SUCCEEDED(hr))
        {
            // use bIsOnCurrentDesktop as needed...
        }

        pDesktopManager->Release();
    }

    pServiceProvider->Release();
}
  • 代码出处链接: https://stackoverflow.com/questions/40196874/how-to-use-the-ivirtualdesktopmanager-interface-in-c-win32
  • IVirtualDesktopManager官方文档: https://docs.microsoft.com/zh-cn/windows/win32/api/shobjidl_core/nn-shobjidl_core-ivirtualdesktopmanager?redirectedfrom=MSDN
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云桌面
云桌面(Cloud Virtual Desktop,CVD),为您提供随需快捷交付的虚拟远程桌面服务。云桌面可以帮助您轻松构建安全的数字化工作空间,满足移动办公、安全开发、教育实训、在线设计等场景需求,提升业务访问的安全性和连续性。通过自适应传输协议,终端用户可以获得优质的云桌面访问体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档