【问题标题】:Is there a way to enable/disable (grey out) the Rotation Lock in Action Center programmatically on a Windows 10 device without rebooting?有没有办法在 Windows 10 设备上以编程方式启用/禁用(灰色)操作中心中的旋转锁定,而无需重新启动?
【发布时间】:2020-09-28 22:40:36
【问题描述】:

我正在 Surface Book 上开发一项可以控制设备旋转锁定的功能。这涉及打开/关闭旋转锁定,以及将其全部禁用。

澄清一下,我的问题不是关于打开/关闭旋转锁定,这会使图标变为蓝色或中性。

我说的是启用/禁用旋转锁定,这会使图标变为灰色或中性。

我已经阅读了一些微软文档和在线搜索结果,但它们似乎都关注旋转锁的开/关状态,而不是启用/禁用状态。

  • 我知道 SetAutoRotationPreferences 的 UWP 功能,但这似乎只在平板电脑模式(而非桌面模式)下锁定方向,并且不会影响旋转锁定图标状态。
  • 我知道未记录/不受支持的 Win32 API SetAutoRotation,它只能打开/关闭旋转锁定,而不是启用/禁用。
  • 我知道旋转锁定图标可以使用 Windows 注册表键 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AutoRotation 将 ValueName SlateEnable 设置为 0 以编程方式进行操作,但它需要重新启动设备才能应用。李>
  • 我知道SHChangeNotify 可以用来刷新桌面,但我无法让它工作。如果这表明我做错了,我使用了值SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, IntPtr.Zero, IntPtr.Zero)

是否有任何 Win32 API 功能可以控制旋转锁的启用/禁用状态,或者是否有任何 API 可以立即应用 windows 注册表修改?我被困住了。任何帮助将不胜感激。

【问题讨论】:

  • 您为什么要这样做?当你的应用失去焦点、退出或崩溃时,你会恢复它吗?您正在更改您不拥有的其他应用程序的行为,并且当用户第一次尝试执行某些旋转(或不旋转)的事情时,他们预计会逃避您的应用程序,永不回头。
  • @1201ProgramAlarm 由于专有原因,我无法完全披露,但我只想澄清一下,我从未说过这是一个应用程序。我正在探索 Windows 功能并想知道这是否可以完成,同时表明我已经做了一些研究。如果答案是“不,它不能完成”,那么该信息对我将有助于我跟进后续步骤。

标签: c# c++ windows winapi user32


【解决方案1】:

在提交same question to the MSDN forums 关于此问题后,似乎一致认为没有 API 公开了使“旋转锁定”图标变灰的能力。但是,未记录的 SetAutoRotation API 可以打开和关闭“旋转锁定”图标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2012-11-14
    相关资源
    最近更新 更多