Ruby调用Win32API——EnumDisplaySettings的调用

本文介绍了如何使用Ruby调用Win32API的EnumDisplaySettings接口来获取显示器设置信息。通过详细讲解调用过程、结构体处理和偏移量计算,为Ruby开发者提供了Windows系统级别的屏幕信息获取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序

今天写了一个用Ruby调用Win32接口的程序,基础功能是枚举出当前显示设备支持的分辨率。

先上代码:

require 'Win32API'

class EnumDisplaySetting
  DM_188_FLAG_S_LEN = 188
  DM_188_FLAG_W_LEN = 220

  DM_188_Pointer_FLAG     = "A32S4Ls13A32SL*"
  DM_188_Display_FLAG     = "A32S4L5s5A32SL*"


  # 188 type flag
  DM_DeviceName        = 0
  DM_SpecVersion       = 1
  DM_DriverVersion     = 2
  DM_Size              = 3
  DM_DriverExtra       = 4
  DM_Fields            = 5

  # Printer
  DM_Orientation       = 6
  DM_PaperSize         = 7
  DM_PaperLength       = 8
  DM_PaperWidth        = 9
  DM_Scale             = 10
  DM_Copies            = 11
  DM_DefaultSource     = 12
  DM_PrintQuality      = 13
  DM_Color_p             = 14
  DM_Duplex_p            = 15
  DM_YResolution_p       = 16
  DM_TTOption_p          = 17
  DM_Collate_p           = 18
  DM_FormName_p          = 19
  DM_LogPixels_p         = 20
  DM_BitsPerPel_p        = 21
  DM_PelsWidth_p         = 22
  DM_PelsHeight_p        = 23
  DM_DisplayFlags_p      = 24
  DM_DisplayFrequency_p  = 25

  # Display
  DM_Position_x         = 6  # 显示器的坐标原点X
  DM_Position_y         = 7  # 显示器的坐标原点Y
  DM_DisplayOrientation = 8  # 显示方向:0 - DMDO_DEFAULT; 1 - DMDO_90; 2 - DMDO_180; 3 - DMDO_270; 
  DM_DisplayFixedOutput = 9  # 固定分辨率屏幕显示小分辨率图像时的方式: 0 - DMDFO_DEFAULT; 1 - DMDFO_STRETCH; 2 - DMDFO_CENTER;
  DM_Color_d             = 10  # 彩色打印机的色彩模式:1 - DMCOLOR_MONOCHROME(单色); 2 - DMCOLOR_COLOR(彩色)
  DM_Duplex_d            = 11  # 双面打印,还是单面
  DM_YResolution_d   
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值