如何通过Regetry或ACPI在Windows8中获得屏幕自动旋转的状态(禁用或启用)?
我需要禁用屏幕自动旋转,我将使用winkey + O来改变屏幕自动旋转控制。
有没有人有类似的经历?
如果您想更改自动旋转状态,以下可能会有所帮助:
//C++ typedef BOOL (WINAPI* SETAUTOROTATION)(BOOL bEnable); SETAUTOROTATION SetAutoRotation = (SETAUTOROTATION)GetProcAddress(GetmoduleeHandle(TEXT("user32.dll")), (LPCSTR)2507); if(SetAutoRotation != NULL) { SetAutoRotation(TRUE); }
要么
//C# [DllImport("user32.dll", EntryPoint = "#2507")] extern static bool SetAutoRotation(bool bEnable); SetAutoRotation(true);
我找到了答案。
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);
希望能帮助别人。
这个MSDN示例似乎是做了这个工作,使用看起来像一个'官方'API调用SetDisplayAutoRotationPreferences
,它是在User32.dll中(而不是kernel.dll作为示例状态),并在WinUser.h中定义。
这个例子优于其他建议的优点是它首先检查是否首先支持和启用自动旋转。
注册表和Windows + O热键在系统级别工作,调整用户设置。 应用程序不应该混淆它。 有一种应用程序级别的方式来设置自动旋转首选项,一旦用户关闭你的应用程序或切换到不同的应用程序,然后他们现有的设置(或其他应用程序)接管。
MSDN有一个使用相关API的好例子: https : //code.msdn.microsoft.com/windowsapps/Auto-Rotation-Preferences-87ae2902
如果您的应用程序只有一个始终保留的自动偏好,那么将其设置在清单中是最简单的。 有几个选项,你没有得到的API,如支持横向和横向翻转。
另一种选择,这是似乎一直在我的平板电脑上工作的一个。 检查此注册表项。 您也可以更改密钥,设备将立即接受更改:
键: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AutoRotation
设置: Enable
这是一个DWORD,所以设置为0来禁用自动旋转或1来启用自动旋转。
现在,只要我能找到一种方法来强制应用程序在横向模式下工作!…