Ang*_*ker 8 c# visual-studio-2008
以英寸为单位,例如21'显示器.该应用程序是一个标准的WinForms应用程序.
编辑:似乎真的没有一种可靠的方法来完成我的需要.
这不能保证.Windows无法知道监视器的大小,除非其驱动程序询问它并报告对Windows的回复.
但是,您可能想尝试一下
SystemInformation.PrimaryMonitorSize
Run Code Online (Sandbox Code Playgroud)
或 GetDeviceCaps(dc, HORZSIZE) 和GetDeviceCaps(dc, VERTSIZE),然后calulate上斜边的平方.
请注意,Stack Overflow上也存在对相同问题的接受答案.
我正在考虑两种在特殊条件下可能有效的方法:
\n\n尝试获取监视器硬件的名称。在我的双显示器系统上,我使用一台 SyncMaster 205BW 和一台 SyncMaster 173T。它们是 20\xe2\x80\xb3 和 17\xe2\x80\xb3 监视器。你明白我的意思吗?然而,一个问题是我不确定您是否可以通过编程方式获取这些字符串。Windows 似乎只获取 SyncMaster: screenres.png。
您可以使用GetDeviceCaps(GetDC(GetDesktopWindow), VERTSIZE)获取“物理屏幕的高度(以毫米为单位)”。与HORZSIZE“宽度”类似。但我相信,只有在您校准了显示器后,这才有效。至少在我的系统上,这些值比实际的高度和宽度大得多......
我不知道你的背景,但如果你的应用程序确实需要最终用户输出设备的物理尺寸,为什么不问他呢?您可以在安装过程中轻松询问显示器的尺寸(例如使用出色的 Inno Setup),并将该值存储在注册表中。然后编写一个简单GetPhysicalMonitorSize地从注册表中读取值的过程就很简单了。