У кого есть 8.1 и 10 винда, верно ли GetVersionEx работает?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

У кого есть 8.1 и 10 винда, верно ли GetVersionEx работает?

Сообщение Pantalone » 03.03.2016 (Чт) 20:08

Не могу протестировать на реальном компе, а на виртуалке возвращает неверные результаты.
На 8.1 возвращает ID системы 6.2, и на 10 винде тоже.
А должна 6.3 и 10 судя по всему: https://en.wikipedia.org/wiki/List_of_M ... s_versions
Может чего не так делаю?
Во вложении простой проект с GetVersionEx.
Вложения
DetectOS.rar
Примерчик для GetVersionEx
(4.93 Кб) Скачиваний: 152
Capture1.PNG
Capture1.PNG (74.64 Кб) Просмотров: 2156
Capture2.PNG
Capture2.PNG (48.91 Кб) Просмотров: 2156

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: У кого есть 8.1 и 10 винда, верно ли GetVersionEx работа

Сообщение Pantalone » 03.03.2016 (Чт) 20:49

Нашел. Они что-то сделали с GetVersionEx, без манифеста к файлу программы на 8.1 и выше функция теперь возвращает кривой результат.
https://msdn.microsoft.com/ru-ru/library/windows/desktop/dn302074(v=vs.85).aspx

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: У кого есть 8.1 и 10 винда, верно ли GetVersionEx работа

Сообщение Admiralisimys » 03.03.2016 (Чт) 22:34

Pantalone вот тут больше деталей - Manifest Madness.
Кстати там в конце статьи имеется пример такого манифеста - settings.manifest.
В нём так же указанно что приложение поддерживает и High-DPI.
А вообще рекомендуемый способ проверки версии OS это VerifyVersionInfo, однако и этот способ может быть признан со временем устаревшим, о чём и говорит предупреждение.
А вот из не рекомендованных способов, к статье Overcoming Windows 8.1's deprecation of GetVersionEx and GetVersion APIs в комментария было предложено использовать RtlGetVersion().

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: У кого есть 8.1 и 10 винда, верно ли GetVersionEx работа

Сообщение Pantalone » 03.03.2016 (Чт) 23:02

Благодарю за инфу.
Admiralisimys писал(а):В нём так же указанно что приложение поддерживает и High-DPI.

Там по ссылке написано, что это для Direct3D full-screen applications, вроде можно пренебречь.

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: У кого есть 8.1 и 10 винда, верно ли GetVersionEx работа

Сообщение Admiralisimys » 03.03.2016 (Чт) 23:54

Pantalone из личного опыта, на оконных приложениях с Direct2D линии становились более чёткими после включения манифеста, в котором указывалось что есть поддержка High-DPI.
Из увиденного на демонстрациях - Making Your Desktop Apps Shine on High- DPI Displays на 25:45 на вполне оконном приложение проверяют изменение DPI для одного из мониторов. Где-то даже было видео как из одного монитора с одним DPI перетаскивают окно в другой, с другим значением DPI.
Вообще-то этот манифест применяют, когда разработчик приложения хочет дать понять ОС, что приложение полностью с ним совместимо, дабы последняя не задействовала к первому механизм обратной совместимости.
Показания GetVersion этот как раз свидетельство того, что приложение запущено в режиме совместимости с Windows 8 (6.2.9200) на Windows 10.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: У кого есть 8.1 и 10 винда, верно ли GetVersionEx работа

Сообщение Pantalone » 04.03.2016 (Пт) 1:27

По крайней мере на 19 дюймах программа с манифестом, где прописано <dpiAware>True/PM</dpiAware>, не отличается от той, что без манифеста :)
Надо будет как-то разобраться.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

    TopList