如何在ruby中获得屏幕分辨率
如何在ruby脚本中获得屏幕分辨率(高度,宽度)?
在Linux上:
x, y = `xrandr`.scan(/current (\d+) x (\d+)/).flatten
在Windows上,使用WIN32OLE等 。
Ruby没有GUI的概念。 你需要使用像Ruby Xlib Wrapper这样的东西。
这就是我解决了解决问题的方法。 当我使用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
我在寻找有关如何处理多显示器设置的解决方案时遇到了这个页面,因此我将添加我在此处找到的内容。 对我来说,最好的解决方案是使用Qt,可以按如下方式完成:
require 'Qt4' desktop = Qt::DesktopWidget.new desktop.screenGeometry(desktop.primaryScreen)
screenGeometry
返回的对象是QRect
,它具有高度,宽度和一大堆其他可能有用的属性 。 显然这是专门针对主屏幕的,但您也可以使用desktop.numScreens
来确定有多少屏幕并单独检查它们。
我意识到这个问题已经过时了,但希望这对某些人有用。
来自Ruby论坛
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}"
我用tput
解决了它,例如
cols = %x[tput cols].to_i