Как получить разрешение экрана в рубине - PullRequest
2 голосов
/ 11 ноября 2010

Как получить разрешение экрана (высота, ширина) в скрипте ruby?

Ответы [ 6 ]

3 голосов
/ 11 ноября 2010

В Linux:

x, y = `xrandr`.scan(/current (\d+) x (\d+)/).flatten

В Windows используйте WIN32OLE и такие .

2 голосов
/ 07 декабря 2016

Вот так я решил свою проблему с получением разрешения.Поскольку я использовал Ruby 2.3.0, я не могу использовать модуль DL (так как он был исключен).Следующим является использование Fiddle

usr32=Fiddle::dlopen("user32")
gsm=Fiddle::Function.new(usr32["GetSystemMetrics"],[Fiddle::TYPE_LONG],Fiddle::TYPE_LONG)
x= gsm.call(0)
y= gsm.call(1)
puts x,y
2 голосов
/ 11 ноября 2010

Ruby не имеет представления о графическом интерфейсе.Для этого вам нужно использовать что-нибудь вроде Ruby Xlib Wrapper .

1 голос
/ 09 апреля 2018

Я решил, используя tput, например,

cols  = %x[tput cols].to_i
0 голосов
/ 09 мая 2013

Из Ruby Forum

require 'dl/import'
require 'dl/struct'

SM_CXSCREEN =   0
SM_CYSCREEN =   1

user32 = DL.dlopen("user32")

get_system_metrics = user32['GetSystemMetrics', 'ILI']
x, tmp = get_system_metrics.call(SM_CXSCREEN,0)
y, tmp = get_system_metrics.call(SM_CYSCREEN,0)

puts "#{x} x #{y}"
0 голосов
/ 09 ноября 2012

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

require 'Qt4'

desktop = Qt::DesktopWidget.new
desktop.screenGeometry(desktop.primaryScreen)

Объект, возвращаемый screenGeometry, представляет собой QRect, который имеет высоту, ширину и целый набор других потенциально полезных атрибутов . Очевидно, это специально для основного экрана, но вы также можете использовать desktop.numScreens, чтобы определить количество экранов и проверить их все по отдельности.

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

...