检测监视器是否在c#上

是否可以使用c#检测用户监视器是否已打开?

SP

我也发现这篇文章很有帮助

http://www.netframeworkdev.com/net-base-class-library/msmonitorclass-2114.shtml

WMI可能有所帮助。

在Vista +中,有WmiMonitorBasicDisplayParams类,其中“Active”属性告诉您显示是否处于活动状态。

这是一个适合我的例子:

using System.Management; // ... var query = "select * from WmiMonitorBasicDisplayParams"; using(var wmiSearcher = new ManagementObjectSearcher("\\root\\wmi", query)) { var results = wmiSearcher.Get(); foreach (ManagementObject wmiObj in results) { // get the "Active" property and cast to a boolean, which should // tell us if the display is active. I've interpreted this to mean "on" var active = (Boolean)wmiObj["Active"]; } } 

所有Active属性都会告诉您Windows是否正在使用显示器。 即使显示屏关闭,DVI / HDMI也会报告连接。 简而言之,没有其他方法可以检查除自制之外的东西 – 例如连接光传感器或网络摄像头并将其指向显示器的电源指示灯:)

无法执行此操作:无法检查显示器是否已打开电源。 您可以检查是否启用了辅助监视器:使用System.Windows.Forms.Screen.AllScreens