Windows:作为服务运行时查找屏幕分辨率

时间:2014-09-04 22:15:45

标签: windows winapi

我将代码作为Windows服务运行,希望确定直接连接的监视器的分辨率。

(是的,我很欣赏用户可能通过RDP,VDI等与机器进行交互,所以这并不总是有意义 - 但这只是一种优化,所以在通常情况下有一个直接连接的桌面,它仍然有用。)

我想使用::GetSystemMetrics(SM_CXVIRTUALSCREEN),但它返回0,因为我在会话0中运行。同样EnumDisplayDevices看起来它只适用于当前的交互式会话。

即使没有用户登录,我们也希望能够这样做。

即使作为服务,有没有办法探索硬件屏幕分辨率?

1 个答案:

答案 0 :(得分:1)

EnumDisplayDevices()的{​​{3}}清楚地说:

  

EnumDisplayDevices函数可让您获取有关当前会话中的显示设备的信息

由于服务在会话0中运行,并且会话0中没有显示,因此没有监视器信息可供枚举。

请尝试使用documentation