如何在Windows8中通过Regetry或ACPI获取屏幕自动旋转的状态(禁用或启用)?
我需要禁用屏幕自动旋转,我将使用winkey + O来更改屏幕自动旋转控件。
有没有人有类似的经历?
答案 0 :(得分:3)
如果您想更改自动旋转状态,可能会有帮助:
//C++
typedef BOOL (WINAPI* SETAUTOROTATION)(BOOL bEnable);
SETAUTOROTATION SetAutoRotation = (SETAUTOROTATION)GetProcAddress(GetModuleHandle(TEXT("user32.dll")), (LPCSTR)2507);
if(SetAutoRotation != NULL)
{
SetAutoRotation(TRUE);
}
或
//C#
[DllImport("user32.dll", EntryPoint = "#2507")]
extern static bool SetAutoRotation(bool bEnable);
SetAutoRotation(true);
答案 1 :(得分:1)
我找到了答案。
public enum tagAR_STATE : uint
{
AR_ENABLED = 0x0,
AR_DISABLED = 0x1,
AR_SUPPRESSED = 0x2,
AR_REMOTESESSION = 0x4,
AR_MULTIMON = 0x8,
AR_NOSENSOR = 0x10,
AR_NOT_SUPPORTED = 0x20,
AR_DOCKED = 0x40,
AR_LAPTOP = 0x80
}
[DllImport("user32.dll")]
public static extern bool GetAutoRotationState(ref tagAR_STATE input);
希望能帮助其他人。
答案 2 :(得分:1)
This MSDN example似乎可以使用看起来像“官方”API调用SetDisplayAutoRotationPreferences
的内容来执行此操作,该调用位于User32.dll中(不是kernel.dll,如示例所示)并已定义在WinUser.h中。
此示例优于其他建议的优点是它首先检查是否支持并首先启用自动旋转。
答案 3 :(得分:1)
注册表和Windows + O热键在系统级别工作,调整用户设置。应用程序不应该乱用它。有一种应用程序级方式来设置自动旋转首选项,一旦用户关闭您的应用程序或切换到另一个应用程序,他们的现有设置(或其他应用程序)将接管。
MSDN在这里使用相关API有一个很好的例子:https://code.msdn.microsoft.com/windowsapps/Auto-Rotation-Preferences-87ae2902
如果您的应用只有一个在其生命周期内保留的自动旋转偏好,那么最简单的方法就是在清单中设置它。有一些选项,你没有使用API,如支持横向和横向翻转。
答案 4 :(得分:0)
另一个替代方案,这个似乎在我的平板电脑上始终如一。检查此注册表项。您也可以更改密钥,设备将立即获取更改:
键:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AutoRotation
设置:Enable
它是一个DWORD,因此设置为0表示禁用自动旋转,或设置为1表示启用自动旋转。
现在,如果我能找到一种强制应用程序仅在横向模式下工作的方法!...