我将代码作为Windows服务运行,希望确定直接连接的监视器的分辨率。
(是的,我很欣赏用户可能通过RDP,VDI等与机器进行交互,所以这并不总是有意义 - 但这只是一种优化,所以在通常情况下有一个直接连接的桌面,它仍然有用。)
我想使用::GetSystemMetrics(SM_CXVIRTUALSCREEN)
,但它返回0,因为我在会话0中运行。同样EnumDisplayDevices
看起来它只适用于当前的交互式会话。
即使没有用户登录,我们也希望能够这样做。
即使作为服务,有没有办法探索硬件屏幕分辨率?
答案 0 :(得分:1)
EnumDisplayDevices()
的{{3}}清楚地说:
EnumDisplayDevices函数可让您获取有关当前会话中的显示设备的信息。
由于服务在会话0中运行,并且会话0中没有显示,因此没有监视器信息可供枚举。
请尝试使用documentation。