2010-10-12 134 views

回答

18

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"]; 
    } 
} 
+7

我永遠不會被隱藏在WMI中的大量信息所驚歎。 – 2010-10-12 09:14:21

+1

一些通過VGA線連接的舊顯示器通常是啞設備,因爲它們只報告「連接」和EDID信息。沒有電源狀態存在;新顯示器發生了什麼變化,所以他們可以告訴? – 2010-10-12 09:25:20

+1

@mhambra - 一切? – codekaizen 2010-10-12 09:27:39

-4

這不能做:有沒有辦法來檢查顯示器的電源。您可以檢查輔助監視器是否啓用:使用System.Windows.Forms.Screen.AllScreens

+1

我不能相信有沒有方法檢查編程。我見過操作系統這樣做。爲什麼這是被投票決定的? – codekaizen 2010-10-12 09:16:27

3

所有活動的屬性不爲Windows是否使用顯示或不告訴你。即使關閉顯示器,DVI/HDMI也會報告連接。簡而言之,除了自制東西之外,沒有其他方法可以檢查 - 比如掛上光線傳感器或攝像頭並將其指向顯示器的電源燈:)