如何在ruby中获得屏幕分辨率

时间:2010-11-11 12:12:53

标签: ruby screen resolution

如何在ruby脚本中获取屏幕分辨率(高度,宽度)?

6 个答案:

答案 0 :(得分:3)

在Linux上:

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

在Windows上,使用WIN32OLE and such

答案 1 :(得分:2)

Ruby没有GUI的概念。你需要使用类似Ruby Xlib Wrapper之类的东西。

答案 2 :(得分:2)

这就是我解决了解决问题的方法。当我使用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

答案 3 :(得分:1)

我用tput解决了它, e.g。

cols  = %x[tput cols].to_i

答案 4 :(得分:0)

我在寻找有关如何处理多显示器设置的解决方案时遇到了此页面,因此我将添加我在此处找到的内容。对我来说,最好的解决方案是使用Qt,可以按如下方式完成:

require 'Qt4'

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

screenGeometry返回的对象是QRect,其高度,宽度和a whole bunch of other potentially useful attributes。显然这是专门用于主屏幕的,但您也可以使用desktop.numScreens来确定有多少个屏幕并单独检查它们。

我意识到这个问题很老,但希望这对某人有用。

答案 5 :(得分:0)

来自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}"