2013-04-28 18 views
6

.NET çerçevesini (4.5) yeterince iyi bilmiyorum, bu yüzden bir yanıt bulamadığım bir soru var için.Ekran çözünürlüğü C# sınıfında olsun (no form/wpf/aps.net/...)

Windows formlarıyla çalışmadığınızda veya WPF, Silverlight, ASP.NET vb. Başka herhangi bir grafik ortamı ile çalışmadığında ana ekranın ekran çözünürlüğünü nasıl alabilirim? Çözümü bir sınıf kitaplığında (dll) almaya çalışıyorum ve oradan iletiyorum.

.NET'in böyle bir işlevi var mı?

+0

basit bir yöntem XD kullanarak büyük bir dll sevmiyorum. Bu bir seçenek mi? –

+0

http://stackoverflow.com/questions/1317235/c-get-complete-desktop-size?rq=1 – bizzehdee

+0

@SamPlusPlus: Teşekkürler, ancak bu işe yaramazsa, referans eklerken bir hata alıyorum. – DerpyNerd

cevap

10

Winforms ortamında çalışmıyor olmanıza rağmen, yine de DLL'lerine bir başvuru ekleyebilirsiniz. System.Windows.Forms.dll bir başvuru ekleyerek kullanabilirsiniz anlamına gelir:

İşte
SystemInformation.VirtualScreen.Width 
SystemInformation.VirtualScreen.Height 
+2

+1: [PrimaryMonitorSize] (http://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation.primarymonitorsize.aspx) 'nin bu durumda muhtemelen daha uygun olduğunu unutmayın (sadece çoklu için önemlidir -monitor yapılandırmaları). –

+0

Hey, ve teşekkürler ... Referansı daha önce eklemeyi denedim ama bir şekilde işe yaramadı! Bir kez daha vurmaya karar verdim ve şimdi çalışıyor:/Tekrar denememi istediğin için teşekkürler! – DerpyNerd

1

ne ihtiyaç vardır.

Çok geç ama sanırım başka bir işe yaramayacaktır :) Yanıt, SystemMetric ile P/Invoke kullanıyor.

Birincil ekranınızın boyutunu System.Windows.Forms.dll dosyasına başvuru eklemeden alabilirsiniz.

http://pinvoke.net/default.aspx/Enums.SystemMetric

Ben içeri aktarmak üzere bir GUI arayüzüne sahip olmasa bile sen pencere formları başvuru ekleyebilir

+0

Emin değilim, bir fonksiyon için bir kez bir DLL başvuru referansından daha fazla bir performans darbe performansı için bir DLL almıyor muyum? Yani, .NET çerçevesinin bir parçası olan bir DLL'ye başvurmak, uygulamanızı her zaman bir işlev gerektirdiğinde bir DLL'yi içe aktarmadan daha hantal hale getirmez. Bir şey mi eksik? – DerpyNerd

+0

Aslında, 32 api işlevi kazanmak için P/invoke kullanarak birçok .NET yöntemi vardır. Bunu görmek için referencesource.microsoft.com adresine erişmelisiniz. Yani, .dll dll ithal etmek istemiyorsanız, doğrudan win32 api çağırabilirsiniz. Bu durumda, ekran boyutunu almak için SystemMetric enum'u bir veya iki değerle oluşturmanız gerekir. Sonra GetSystemMetrics işlevini çağırın. –