2009-10-08 12 views

Odpowiedz

38

W języku C#: Screen Class Reprezentuje urządzenie wyświetlające lub wiele urządzeń wyświetlających w jednym systemie. Chcesz atrybut 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

Używając 'foreach (ekran w Screen.AllScreens)' to wygląda jeszcze lepiej. –

+0

Rzeczywiście. Kiedy odpowiedziałem, nie wiedziałem C# :) –

+0

To pokazuje tylko jeden monitor podczas uruchamiania z usługi, czy jest jakieś obejście? –

2

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

GetSystemMetrics to poręczne funkcji można użyć, aby uzyskać wszelkiego rodzaju globalnych wymiarów, jak rozmiaru ikony lub wysokość okna podpisie. W systemie Windows 2000 istnieją nowe parametry, takie jak SM_CXVIRTUALSCREEN i SM_CYVIRTUALSCREEN, aby uzyskać wirtualny rozmiar ekranu dla wielu systemów monitorowania. Również nowicjusze systemu Windows, a także profesjonaliści, powinni zapoznać się z dokumentacją GetSystemMetrics, aby zobaczyć wszystkie różne dane systemowe (wymiary), jakie można uzyskać. Zobacz zestaw SDK platformy za najnowszy numer: http://msdn.microsoft.com/library/en-us/sysinfo/sysinfo_8fjn.asp. GetSystemMetrics to przydatna funkcja, której często potrzebujesz, a nowe rzeczy pojawiają się w każdej wersji systemu Windows.

+0

To jest bardzo fajne. Istnieje kod zarządzany dla większości takich rzeczy ... Na przykład klasa "System.Windows.Forms.SystemInformation" prawdopodobnie zawiera większość. – mbrownnyc

5

Użyj Screen class.

Możesz zobaczyć wszystkie monitory z tablicy Screen.AllScreens i sprawdzić rozdzielczość oraz położenie każdego z nich za pomocą właściwości Bounds.

Należy zauważyć, że niektóre karty graficzne scalą dwa monitory w jeden bardzo szeroki ekran, tak że system Windows uważa, że ​​jest tylko jeden monitor. Jeśli chcesz, możesz sprawdzić, czy szerokość ekranu przekracza dwukrotnie jego wysokość; jeśli tak, to prawdopodobnie jest to horyzontalna rozpiętość i możesz traktować to jako dwa równe ekrany. Jest to jednak bardziej skomplikowane i nie musisz tego robić. Pionowe przęsła są obsługiwane, ale rzadziej.

Powiązane problemy