Есть ли способ определить физический размер монитора?
в дюймах, например, 21' монитор. Приложение является стандартным приложением WinForms.
EDIT: похоже, что на самом деле нет надежного способа выполнить то, что мне нужно.
5 ответов
Я думаю о двух путях, которые могут работать в особых условиях:
попробуйте получить имя оборудования монитора. В моей системе с двумя мониторами я использую один SyncMaster 205BW и один SyncMaster 173T. Это 20" и 17 " мониторов. Понимаешь, о чем я? Однако одна из проблем заключается в том, что я не уверен, что вы программно можете получить эти строки. Windows, похоже, получает только SyncMaster:screenres.формат PNG.
вы может использовать
GetDeviceCaps(GetDC(GetDesktopWindow), VERTSIZE)
получить " высоту, в миллиметрах, физического экрана.- и то же самое сHORZSIZE
и "ширина". Но это будет работать только в том случае, если вы откалибровали свой дисплей, я считаю. По крайней мере, в моей системе значения намного больше фактической высоты и ширины...Я понятия не имею о вашем контексте, но если ваше приложение действительно нуждается в физическом размере устройства вывода конечного пользователя, почему бы и нет задать его? Ты мог бы ... легко спросите размер монитора во время установки (например, используя отличную настройку Inno) и сохраните значение в реестре. Тогда тривиально писать процедуру
GetPhysicalMonitorSize
что просто считывает значение из реестра.
Это не может быть гарантировано. Windows не может знать размер монитора, если его драйвер не запросит его и не сообщит ответ windows.
тем не менее, вы можете попробовать
SystemInformation.PrimaryMonitorSize
или GetDeviceCaps(dc, HORZSIZE)
и GetDeviceCaps(dc, VERTSIZE)
и затем вычислить квадрат на гипотенузе.
обратите внимание, что есть также принято отвечать к идентичному вопросу прямо здесь при переполнении стека.
веб-приложение или настольное приложение? Все, что вы можете узнать о веб-приложении, - это разрешение экрана браузера, используя javascript:
<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 );
вы можете использовать EDID в реестре для получения физического размера экрана. Драйвер монитора сообщает Windows физический размер экрана.
Если нет .NET-конкретного способа, вы всегда можете использовать собственный API Windows:GetSystemMetrics
С SM_CYSCREEN
или SM_CXSCREEN
.