以英寸为单位,例如21'监视器。该应用程序是一个标准的WinForms应用程序。
编辑:似乎没有一种可靠的方法可以实现我的需要。
答案 0 :(得分:5)
这不能保证。 Windows无法知道监视器的大小,除非其驱动程序询问它并报告对窗口的回复。
但是,您可能想尝试
SystemInformation.PrimaryMonitorSize
或GetDeviceCaps(dc, HORZSIZE)
和GetDeviceCaps(dc, VERTSIZE)
然后计算斜边上的方块。
请注意,Stack Overflow上还有一个accepted answer相同的问题。
答案 1 :(得分:2)
网络应用或桌面应用?您可以使用javascript:
了解有关Web应用程序的所有内容,即浏览器的屏幕分辨率<script language="javascript">
var width = screen.width;
var height = screen.height;
if( width < 1280 || height < 1024)
{
alert("This web page is best viewed with a screen resolution of 1280 by 1024 or higher. Your current resolution is " + width + " by " + height + ". If possible please change your resolution.");
}
else
{
alert("Your screen resolution is pretty big!")
}
</script>
对于桌面应用,您可以这样做:
MessageBox.Show( "Monitor Size:" +
SystemInformation.PrimaryMonitorSize );
答案 2 :(得分:2)
我正在考虑在特殊情况下可能有两种方法:
尝试获取监视器硬件的名称。在我的双显示器系统上,我使用一个SyncMaster 205BW和一个SyncMaster 173T。这些是20“和17”显示器。你明白我的意思吗?但是,一个问题是,我不确定您是否可以通过编程方式获取这些字符串。 Windows似乎只获得SyncMaster:screenres.png。
您可以使用GetDeviceCaps(GetDC(GetDesktopWindow), VERTSIZE)
获取“物理屏幕的高度,以毫米为单位”。和HORZSIZE
以及“宽度”类似。但是,只有你校准了显示器才会有效,我相信。至少在我的系统上,这些值比实际的高度和宽度要大得多......
我不知道您的上下文,但如果您的应用确实需要最终用户输出设备的物理尺寸,为什么不询问他?您可以在设置期间轻松询问显示器的大小(例如,使用优秀的Inno设置),并将值存储在注册表中。然后编写一个简单地从注册表中读取值的过程GetPhysicalMonitorSize
是微不足道的。
答案 3 :(得分:2)
您可以使用注册表中的EDID来获取物理屏幕大小。显示器的驱动程序将物理屏幕大小报告给Windows。
答案 4 :(得分:1)
如果没有特定于.NET的方式,您始终可以使用原生Windows API:GetSystemMetrics
SM_CYSCREEN
或SM_CXSCREEN
。