如何使用Ruby和Win32API获得Windows屏幕方向

问题描述 投票:0回答:1

我正试图让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值将返回运行应用程序的屏幕的屏幕设置。

ruby winapi
1个回答
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的比率。

© www.soinside.com 2019 - 2024. All rights reserved.