Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Разрешение экрана  [new]
Любезный
Member

Откуда:
Сообщений: 519
Приветствую всех.

Такой вопрос. В приложении на D2010 пытаюсь получить разрешение экрана текущего монитора по горизонтали. Точно знаю, что значение равно 1600 (разрешение 1600х1200), но все использованные мной способы выдают 1280. Пробовал Screen.Width и GetDeviceCaps. Есть ли другие способы, которые могут выдать точные значения?
4 июн 18, 19:59    [21467769]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 45047

Screen.Monitors?..

Posted via ActualForum NNTP Server 1.5

4 июн 18, 21:16    [21467871]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
GunSmoker
Member

Откуда:
Сообщений: 3050
Виртуализация DPI? Включи high DPI awared в манифесте.
4 июн 18, 21:31    [21467893]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
d7i
Member

Откуда:
Сообщений: 252
GetSystemMetrics в помощь.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724385(v=vs.85).aspx
4 июн 18, 21:46    [21467918]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
krapotkin
Member

Откуда: Екатеринбург
Сообщений: 608
теоретическое максимальное разрешение монитора или то разрешение, которое сейчас установлено в системе??
4 июн 18, 22:20    [21467986]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
Любезный
Member

Откуда:
Сообщений: 519
автор
Screen.Monitors?

Попробовал через Screen.MonitorFromWindow(Self.Handle).Width - бестолку.

автор
Виртуализация DPI? Включи high DPI awared в манифесте.

автор
GetSystemMetrics в помощь.

Спасибо. Попробую на днях.

автор
теоретическое максимальное разрешение монитора или то разрешение, которое сейчас установлено в системе??

Последнее.
5 июн 18, 00:17    [21468311]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
krapotkin
Member

Откуда: Екатеринбург
Сообщений: 608
если честно, никогда меня не обманывал Screen.Width на Windows
он же не с потолка эти данные берет
5 июн 18, 09:54    [21468747]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 7608
krapotkin
если честно, никогда меня не обманывал Screen.Width на Windows
он же не с потолка эти данные берет
Конечно, не с потолка - драйвер видеоадаптера возвращает.
Поэтому на месте автора я бы не шаманил с правильным по сути кодом, а разбирался с косяком драйвера.
5 июн 18, 10:12    [21468803]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
Любезный
Member

Откуда:
Сообщений: 519
автор
Поэтому на месте автора я бы не шаманил с правильным по сути кодом, а разбирался с косяком драйвера.

Вероятно, так и есть. Тем более это ноут с HDMI, который я цепляю к разным экранам.
Вот пример выполнения простенького кода на том же ноуте, но на другом мониторе:
procedure TForm1.FormShow(Sender: TObject);
begin
 ShowMessage (IntToStr(Screen.Width));
end;

+
Картинка с другого сайта.
6 июн 18, 19:07    [21473832]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
Любезный
Member

Откуда:
Сообщений: 519
Сегодня попробовал этот же код на обычном десктопе с D2010 и Win10x64 - показывает правильно 1920. Забыл написать, что проблемный ноут - с виндой 8.1х64.
Пожалуй, действительно проблема в дровах.
7 июн 18, 17:38    [21477009]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
Dimonka
Member

Откуда:
Сообщений: 1010
Возможно фишка в масштабировании шрифтов?
7 июн 18, 19:01    [21477262]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2571
Dimonka,

Врятли. Ни разу не видел, что бы неверные данные приходили. Максимум - что мониторы попутаны бывают. В винде 1 и 2 а в делфе это 1 и 0. Тоже скорее всего винда криво данные раздаёт.
7 июн 18, 19:03    [21477269]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2571
Концов так и не нашел. Может кто знает, к слову что по этому поводу?
7 июн 18, 19:04    [21477277]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
d7i
Member

Откуда:
Сообщений: 252
Используйте GetDeviceCaps https://msdn.microsoft.com/en-us/library/windows/desktop/dd144877(v=vs.85).aspx
И обратите внимание:
On a multiple monitor system, if hdc is the desktop, GetDeviceCaps returns the capabilities of the primary monitor. If you want info for other monitors, you must use the multi-monitor APIs or CreateDC to get a HDC for the device context (DC) of a specific monitor.
7 июн 18, 19:21    [21477336]     Ответить | Цитировать Сообщить модератору
 Re: Разрешение экрана  [new]
чччД__
Guest
makhaon
Концов так и не нашел. Может кто знает, к слову что по этому поводу?

У нас один товарищ вроде с чем-то сходным разбирался, я тут ненадолго пересекся с ним, он рассказал, что начиная с висты, можно у системы запрашивать/задавать "AspectRatio", типа у тебя 1600х1200 разрешение соответствует физическому AspectRato 4:3, но можно задать 5:4 и везде станет 1280 x 1024.
В общем, сказал, что надо гуглить метод "GetAspectRatio".
И да, мопэд не мой, подробностей в ближайшее время не жди.
7 июн 18, 19:29    [21477349]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить