2010-10-12 54 views

cevap

18

WMI yardımcı olabilir.

Vista +'da, WmiMonitorBasicDisplayParams sınıfı vardır; burada "Etkin" özelliği, ekranın etkin olup olmadığını belirtir.

İşte Benim için çalışan bir örnek:

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'de gizlenmiş bilgi miktarına hayret etmekten asla vazgeçmem. –

+1

VGA kablosuyla bağlanan bazı eski ekranlar, yalnızca 'bağlı' ve EDID bilgilerini bildirdikleri için genellikle aptal cihazlardır. NO güç durumu mevcut; Yeni ekranlarda neler değişti, anlatabilirler? –

+1

@mhambra - Her şey mi? – codekaizen

-4

yararlı olan bu yazı keşfettim: Monitör açık olup olmadığını kontrol etmek için bir yolu yoktur. Bir ikincil monitörün etkin olup olmadığını kontrol edebilirsiniz: System.Windows.Forms.Screen.AllScreens

+1

Programatik olarak kontrol etmek için _no_ yolu olduğuna inanamıyorum. Bunu işletim sistemini gördüm. Bu neden oylanıyor? – codekaizen

3

Tüm Etkin özellik, Windows ekran kullanarak olup olmadığını söylemek etmez. Ayrıca, ekran kapatıldığında bile DVI/HDMI bir bağlantı bildirir. Kısacası, ev yapımı bir şeyden başka bir şey kontrol etmek için bir yöntem yoktur - ışık sensörü veya web kamerası takıp monitörün güç ışığında işaret etmek gibi :)

İlgili konular