我试图使Windows屏幕方向,以便在显示器翻转时会出现某种复活节彩蛋。
我知道小提琴存在,但这不是我问的问题。如果不能在Win32API中完成,请告诉我,我将放弃此次要功能。
免责声明,Ruby不是我最熟悉的语言,但是我喜欢学习和克服挑战,因此请继续学习。
class DisplayData < Struct.new(:dmFields)
def initialize(dmFields=1); super end
end
def Win32API.orientation
data = DisplayData.new()
getDisplaySettings = Win32API.new('user32','EnumDisplaySettingsEx','%w(P I P)', 'l')
getDisplaySettings.call("", -1, (data.object_id << 1))
return data.dmFields
end
我感觉自己接近了,我只是感觉到自己错过了一些大事或没有正确理解一些重要事情。
编辑1:要检测的上下颠倒屏幕应该是应用程序在其中运行的屏幕。如果我正确理解这一点,则解析nil值将返回应用程序正在运行的屏幕的屏幕设置。
答案 0 :(得分:0)
在C ++中,代码将如下所示:
DEVMODE devMode;
RtlSecureZeroMemory(&devMode, sizeof(DEVMODE));
devMode.dmSize = sizeof(DEVMODE);
devMode.dmFields = DM_DISPLAYORIENTATION;
BOOL result = EnumDisplaySettingsEx(NULL, ENUM_CURRENT_SETTINGS, &devMode, EDS_RAWMODE);
if (result)
{
DWORD displayOrient = devMode.dmDisplayOrientation; // Get display device orientation
}
还有
确定显示方向是纵向还是横向 方向,请检查dmPelsWidth与dmPelsHeight的比率。