【问题标题】:Screen information while Windows system is locked (.NET)Windows 系统锁定时的屏幕信息 (.NET)
【发布时间】:2011-01-27 17:15:45
【问题描述】:

我们有一个每晚更新用户电脑上的应用程序的过程,这需要关闭应用程序并再次备份(不打算更改该过程)。

问题是我们在启动时构建了一个 Windows AppBar,它需要一个有效的屏幕,而当系统被锁定时,Screen 类中没有一个。所以没有启用任何视觉效果,它显示得很丑。

我们目前解决此问题的唯一方法是检测锁定的屏幕并旋转并等待用户解锁桌面,然后继续启动。保留它不是一种选择,因为这是我们用户工作流程的关键部分,如果他们在前一天晚上就这样离开它,他们希望它能够启动并运行。

有什么想法吗??我似乎无法在任何地方找到显示信息,但它必须存储在某个地方,因为用户仍处于登录状态。

Screen.AllScreens 数组的内容:

** 锁定时:

Device Name    : DISPLAY
Primary        : True
Bits Per Pixel : 0
Bounds         : {X=-1280,Y=0,Width=2560,Height=1024}
Working Area   : {X=0,Y=0,Width=1280,Height=1024}

** 解锁时:

Device Name    : \\.\DISPLAY1
Primary        : True
Bits Per Pixel : 32
Bounds         : {X=0,Y=0,Width=1280,Height=1024}
Working Area   : {X=0,Y=0,Width=1280,Height=994}

Device Name    : \\.\DISPLAY2
Primary        : False
Bits Per Pixel : 32
Bounds         : {X=-1280,Y=0,Width=1280,Height=1024}
Working Area   : {X=-1280,Y=0,Width=1280,Height=964}

【问题讨论】:

    标签: c# .net winforms appbar


    【解决方案1】:

    这需要一些工作,但是您可以使用来自 user32 的 EnumDisplayDevices、EnumDisplaySettingsEx、MonitorFromPoint、GetMonitorInfo 并获取设备的屏幕截图。

    如果 PC 已锁定,或者如果有活动的屏幕保护程序,则屏幕截图始终为米色。您可以检查该情况以了解系统已锁定。这也适用于被 RDP 接入的系统(例如 XP VDI 的瘦客户端。)

    至少这在我的环境中有效。可以通过谷歌搜索找到代码示例。

    【讨论】:

      【解决方案2】:

      对此没有干净的解决方案,Windows 没有提供一种方法来检测工作站是否被锁定以及“错误”的桌面是否处于活动状态。只能检测会话切换,示例代码is here。为了完成这项工作,您几乎不得不在应用程序中包含此代码,并让它留下一个面包屑,以便在重新启动时可以读回。使用一次后请务必重置,以免应用永久卡顿。

      【讨论】:

        【解决方案3】:

        此屏幕锁定问题取决于您使用的版本,XP 使用 GINA 锁定屏幕,Vista 使用 ContentProvider,这两种机制最终都会导致此问题。

        查看屏幕是否锁定的唯一方法是启动屏幕保护程序(这可以通过运行 pinvoke 查询SystemsParameterInfo 来轻松查询,以确定屏幕保护程序是否处于活动状态 - SPI_GETSCREENSAVERRUNNINGSPI_GETSCREENSAVESECURE 确定是否会触发 GINA 或 Content Provider) 时按 WinKey + L 启动屏幕保护程序,在指定的时间段后,如果没有活动,则 GINA 或ContentProvider 启动并用锁定屏幕替换屏幕保护程序...我已包含两个相关链接,这些链接已在此处发布,关于 Windows 下的安全日志信息...

        【讨论】:

          猜你喜欢
          • 2022-01-06
          • 1970-01-01
          • 2023-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-27
          相关资源
          最近更新 更多