【发布时间】:2020-09-28 22:40:36
【问题描述】:
我正在 Surface Book 上开发一项可以控制设备旋转锁定的功能。这涉及打开/关闭旋转锁定,以及将其全部禁用。
澄清一下,我的问题不是关于打开/关闭旋转锁定,这会使图标变为蓝色或中性。
我说的是启用/禁用旋转锁定,这会使图标变为灰色或中性。
我已经阅读了一些微软文档和在线搜索结果,但它们似乎都关注旋转锁的开/关状态,而不是启用/禁用状态。
- 我知道 SetAutoRotationPreferences 的 UWP 功能,但这似乎只在平板电脑模式(而非桌面模式)下锁定方向,并且不会影响旋转锁定图标状态。
- 我知道未记录/不受支持的 Win32 API
SetAutoRotation,它只能打开/关闭旋转锁定,而不是启用/禁用。 - 我知道旋转锁定图标可以使用 Windows 注册表键
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AutoRotation将 ValueNameSlateEnable设置为 0 以编程方式进行操作,但它需要重新启动设备才能应用。李> - 我知道
SHChangeNotify可以用来刷新桌面,但我无法让它工作。如果这表明我做错了,我使用了值SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, IntPtr.Zero, IntPtr.Zero)。
是否有任何 Win32 API 功能可以控制旋转锁的启用/禁用状态,或者是否有任何 API 可以立即应用 windows 注册表修改?我被困住了。任何帮助将不胜感激。
【问题讨论】:
-
您为什么要这样做?当你的应用失去焦点、退出或崩溃时,你会恢复它吗?您正在更改您不拥有的其他应用程序的行为,并且当用户第一次尝试执行某些旋转(或不旋转)的事情时,他们预计会逃避您的应用程序,永不回头。
-
@1201ProgramAlarm 由于专有原因,我无法完全披露,但我只想澄清一下,我从未说过这是一个应用程序。我正在探索 Windows 功能并想知道这是否可以完成,同时表明我已经做了一些研究。如果答案是“不,它不能完成”,那么该信息对我将有助于我跟进后续步骤。
标签: c# c++ windows winapi user32