获得显示器的相关信息

  1. /*
  2.     下面的例子说明了如何使用函数EnumDisplayDevice获得显示器的信息.
  3. */
  4. BOOL GetDisplayMonitorInfo(int nDeviceIndex, LPSTR lpszMonitorInfo)
  5. {
  6.     FARPROC EnumDisplayDevices;
  7.     HINSTANCE  hInstUser32;
  8.     DISPLAY_DEVICE DispDev; 
  9.     char szSaveDeviceName[33];  // 32 + 1 for the null-terminator
  10.     BOOL bRet = TRUE;
  11.     HRESULT hr;
  12.     hInstUser32 = LoadLibrary("c://windows/User32.DLL");
  13.     if (!hInstUser32) return FALSE;  
  14.     //获取函数的入口地址
  15.     EnumDisplayDevices = (FARPROC)GetProcAddress(hInstUser32,"EnumDisplayDevicesA");
  16.     if (!EnumDisplayDevices)
  17.     {
  18.         FreeLibrary(hInstUser32);
  19.         return FALSE;
  20.     }
  21.     //通过宏来填充一个结构体
  22.     ZeroMemory(&DispDev, sizeof(DispDev));
  23.     DispDev.cb = sizeof(DispDev); 
  24.     // 首次调用EnumDisplayDevice之后,DispDev.DeviceString中保存的是适配器
  25.     //的名称
  26.     if (EnumDisplayDevices(NULL, nDeviceIndex, &DispDev, 0)) 
  27.     {  
  28.         //字符串的复制,通过此函数的第二个参数设置要复制的数据的长度可以
  29.         //确保复制的过程数据不越界
  30.         hr = StringCchCopy(szSaveDeviceName, 33, DispDev.DeviceName);
  31.         //这里用来检查复制是否成功,检查的方式是使用宏SUCCEED和FAILED
  32.         if (FAILED(hr))
  33.         {
  34.             /*
  35.             #define SUCCEEDED(Status) ((HRESULT)(Status) >= 0)
  36.             #define FAILED(Status) ((HRESULT)(Status)<0)
  37.             HRESULT其实就是LONG型,如此看来FAILED的意思就是其检查的值小于0,
  38.             SUCCESSED的意思就是其检查的值不小于0.
  39.             */
  40.             // TODO: write error handler
  41.         }
  42.         // 通过第二次调用EnumDisplayDevices,并且第一个参数设置成适配器的名称,
  43.         //DispDev.DeviceString中保存的便是显示器的名称了. 
  44.         EnumDisplayDevices(szSaveDeviceName, 0, &DispDev, 0);   
  45.         //在下面的操作中,必须确保lpszMonitorInfo长度为129个字节且以0结尾
  46.         hr = StringCchCopy(lpszMonitorInfo, 129, DispDev.DeviceString);
  47.         if (FAILED(hr))
  48.         {
  49.             // TODO: write error handler
  50.         }
  51.     } 
  52.     else
  53.     {
  54.         bRet = FALSE;
  55.     }
  56.     FreeLibrary(hInstUser32);
  57.     return bRet;
  58. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值