Как получить ориентацию экрана Windows с Ruby и Win32API - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь настроить ориентацию экрана Windows, чтобы поместить в игру своего рода пасхальное яйцо, которое произойдет, когда дисплей перевернут.

Я знаю, что Fiddle существует, но это не тот вопрос, который я задаюспросил.Если это невозможно сделать в 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 вернет настройки экрана, на котором запущено приложение.

1 Ответ

0 голосов
/ 22 марта 2019

В 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...