前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WMI技术介绍和应用——查询桌面信息

WMI技术介绍和应用——查询桌面信息

作者头像
方亮
发布2019-01-16 10:47:22
1.1K0
发布2019-01-16 10:47:22
举报
文章被收录于专栏:方亮

        本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。

        在Windows操作系统中,存在很多Windows Station。而每一个Windows Station又存在一个或者多个Windows Desktop。我们一般所说的桌面只是这些众多桌面中的一个。以下内容将介绍如何使用WMI查询桌面的相关信息。(转载请指明出于breaksoftware的csdn博客)

如何使用WMI枚举所有的桌面?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT * FROM Win32_Desktop" );
    recvnotify.ExcuteFun();

        一些字段我会在之后解释,我们先看下Name这个字段。每个桌面都有自己的Name信息。在我当前XP系统中,存在以下桌面的名字:

        NT AUTHORITY\SYSTEM

        NT AUTHORITY\LOCAL SERVICE

        NT AUTHORITY\NETWORK SERVICE

        我当前登录的域+用户名(对应名字省略)

        .DEFAULT

        一般来说,我们会比较关心一般意义上的桌面信息。我们可以通过指定域+用户名的方式获取它的信息:SELECT * FROM Win32_Desktop WHERE NAME = 'Your Login Name'。

如何使用WMI判断指定桌面是否支持ALT+TAB(快速任务切换)?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT CoolSwitch FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

        可以见的,我的电脑上是支持ALT+TAB进行切换的。 如何使用WMI查询光标闪烁的时间间隔时间?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT CursorBlinkRate FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

        这个时间是以毫秒为单位的。可以见的,在我这个桌面中光标闪烁的时间间隔是530毫秒。

如何使用WMI判断拖动窗口时,窗口内部也在跟着移动?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT DragFullWindows FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

        我们按住非客户区拖动窗口,可能存在两种效果:

        1 原窗口还在原来位置,而只有一个空心的框子跟着我们鼠标在拖动。等到我们鼠标松开,窗口才移动过去。这种情况,我们的查询将返回FALSE。

        2 原窗口随着鼠标的位置移动而移动。这种情况我们将返回TRUE。

如何使用WMI查询桌面上两个图标之间的距离?

代码语言:javascript
复制
   CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT IconSpacing FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
   recvnotify.ExcuteFun();

        可以见得我这个桌面中两个图标之间的间距是43像素,我量了一下,的确如此。

如何使用WMI获取桌面图标下的文字的字体?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT IconTitleFaceName FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

如何使用WMI查询桌面图标下的文字字体大小?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT IconTitleSize FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

        注意此处是使用Point为单位的。

如何使用WMI判断是否开启了屏保?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT ScreenSaverActive FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

        该字段为TRUE就是启用了屏保。

如何使用WMI获取屏保程序的路径?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT ScreenSaverExecutable FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

如何使用WMI判断从屏保恢复后是否需要输入密码?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT ScreenSaverSecure FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

        可见当前桌面中从屏保恢复后不用输入密码。

如何使用WMI获取需要等待多久才开启屏保?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT ScreenSaverTimeout FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

        这个时间单位是秒。可以见得当前桌面等待600秒后将进入屏保程序。

如何使用WMI查询桌面的背景图路径?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT Wallpaper FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

如何使用WMI判断桌面背景图是拉伸效果?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT WallpaperStretched FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

        可以见的,当前桌面的背景图是拉伸效果。但是如果该值是FALSE,则说明不是拉伸效果,即可能是平铺或者居中。那

如何使用WMI在已知不是拉伸效果的情况下,如何判断是平铺或者居中呢?

代码语言:javascript
复制
    CSynQueryData recvnotify(L"root\\CIMV2",L"SELECT WallpaperTiled FROM Win32_Desktop WHERE Name = 'Your Login Name'" );
    recvnotify.ExcuteFun();

         在WallpaperStretched为FALSE的情况下,如果WallpaperTiled为TRUE,则证明当前桌面背景图是平铺的,否则说明是居中的。

        更多的信息在Win32_Desktop

        工程源码见《WMI技术介绍和应用——WMI概述》结尾。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013年01月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档