前一段时间我看过一篇帖子,但主要答案是Linux。目前,在Windows上使用Ruby获取屏幕分辨率(宽度/高度)的最简单方法是什么。
答案 0 :(得分:1)
一种简单的方法是包装系统命令并在Ruby中执行它们:
@screen = `wmic desktopmonitor get screenheight, screenwidth`
您可以显示它们或将其输出保存在文件中。
为了实际解析它,我在this post中找到了Windows cmd.exe的帮助程序:
for /f %%i in ('wmic desktopmonitor get screenheight^,screenwidth /value ^| find "="') do set "%%f"
echo your screen is %screenwidth% * %screenheight% pixels
通过这种方式,您可以轻松获取变量中的值并将其存储在Ruby程序中。
我找不到一个简单的宝石,就像你用Linux一样。
答案 1 :(得分:1)
您可以按照使用WIN32OLE库的ruby-forum.com上的建议尝试此代码。不过,这适用于Windows。
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}"
答案 2 :(得分:1)
我还建议直接使用系统命令包装。 在win7上测试过。
# also this way
res_cmd = %x[wmic desktopmonitor get screenheight, screenwidth]
res = res_cmd.split
p w = res[3].to_i
p h = res[2].to_i
# or this way
command = open("|wmic desktopmonitor get screenheight, screenwidth")
res_cmd = command.read()
res = res_cmd.split
p w = res[3].to_i
p h = res[2].to_i
# or making a method
def screen_res
res_cmd = %x[wmic desktopmonitor get screenheight, screenwidth]
res = res_cmd.split
return res[3].to_i, res[2].to_i
end
w, h = screen_res
p w
p h