2009-10-08 31 views

回答

38

在C#中:Screen Class表示一個系統上的顯示設備或多個顯示設備。你想要Bounds屬性。

foreach(var screen in Screen.AllScreens) 
{ 
    // For each screen, add the screen properties to a list box. 
    listBox1.Items.Add("Device Name: " + screen.DeviceName); 
    listBox1.Items.Add("Bounds: " + screen.Bounds.ToString()); 
    listBox1.Items.Add("Type: " + screen.GetType().ToString()); 
    listBox1.Items.Add("Working Area: " + screen.WorkingArea.ToString()); 
    listBox1.Items.Add("Primary Screen: " + screen.Primary.ToString()); 
} 
+1

通過使用'foreach(Screen.AllScreens中的屏幕屏幕)',這看起來更好。 – 2013-07-25 13:23:08

+0

確實。當我回答時,我不知道C#:) – 2013-07-29 18:55:18

+0

這隻顯示從服務運行時的一臺顯示器,是否有解決方法? – 2015-07-09 17:19:19

2

http://msdn.microsoft.com/en-us/magazine/cc301462.aspx

GetSystemMetrics的是一個方便的功能,您可以用它來獲得各種全球性的,就像一個窗口標題的圖標或高度的大小。在Windows 2000中,像SM_CXVIRTUALSCREEN和SM_CYVIRTUALSCREEN這樣的新參數可以獲得多個監視器系統的屏幕虛擬大小。 Windows新手和專業人員也應該查看GetSystemMetrics的文檔以查看您可以獲得的所有不同的系統指標(維度)。請參閱平臺SDK以獲得最新的http://msdn.microsoft.com/library/en-us/sysinfo/sysinfo_8fjn.asp。 GetSystemMetrics是您經常需要使用的方便功能,每個Windows版本都會顯示新的內容。

+0

這很酷。對於這些東西中的大部分都有託管代碼......例如,System.Windows.Forms.SystemInformation類可能包含大部分內容。 – mbrownnyc 2013-10-22 17:08:20

5

使用Screen class

你可以看到所有的Screen.AllScreens陣列中的顯示器,檢查每一個使用Bounds屬性的分辨率和位置。

請注意,有些顯卡會將兩臺顯示器合併爲一個非常寬的屏幕,因此Windows認爲只有一臺顯示器。如果你願意,你可以檢查一個屏幕的寬度是否超​​過其高度的兩倍;如果是這樣,它可能是一個水平跨度,你可以把它看作兩個相等的屏幕。但是,這更復雜,你不需要這樣做。縱向跨度也支持,但不太常見。