如何在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