Страница 2 из 3
Как определить разрядность Windows: 32 или 64
Добавлено: 15 Март 2016, 17:57
kreator
Developer писал(а):Функция работала, но только на последних версиях Windows результат был некорректен

Чуда не произошло!

Как определить разрядность Windows: 32 или 64
Добавлено: 15 Март 2016, 18:41
Shur
Из всего вышесказанного можно ли сделать вывод, что при появлении очередной версии ОС это свойство Клариона может "лажать", пока не выйдет очередная версия Клариона, в которой эта новая ОС будет "профиксена"?
Как определить разрядность Windows: 32 или 64
Добавлено: 15 Март 2016, 18:46
Developer
Shur писал(а): Из всего вышесказанного можно ли сделать вывод, что при появлении очередной версии ОС это свойство Клариона может "лажать", пока не выйдет очередная версия Клариона, в которой эта новая ОС будет "профиксена"?
Совершенно правильный вывод!
Как определить разрядность Windows: 32 или 64
Добавлено: 15 Март 2016, 19:00
Developer
Вот поэтому, вне зависимости от версии Clarion которые "догоняют" Windows для специфических запросов к системе Windows предпочтительнее использовать функции Windows API.
О чём я и писал с просьбой портировать функцию Windows API IsWow64Process с C++ на Clarion IsWow64Process
Вне зависимости от версии Clarion использование функций Windows API
гарантирует корректный результат
Но этот подход сложнее

Требует знаний С++ по портированию кода из Microsoft MSDN в код Clarion
Применение SYSTEM{PROP:WindowsVersion,1-10} проще и доступнее, но имеет зависимость от SoftVelocity

Как определить разрядность Windows: 32 или 64
Добавлено: 16 Март 2016, 10:40
kreator
Developer писал(а):Применение SYSTEM{PROP:WindowsVersion,1-10} проще и доступнее, но имеет зависимость от SoftVelocity

Не факт. SV наверняка тоже использует WinApi. Я другого пути не вижу. Для чистоты эксперимента нужно взять Clarion9.1 и Win10, и посмотреть результат SYSTEM{PROP:WindowsVersion,9}. Если будет 14, то используется WinApi. Developer, если всё это под рукой, проверь ради принципа. У меня Win10 есть, а C9.1 давно в архиве.
Как определить разрядность Windows: 32 или 64
Добавлено: 16 Март 2016, 10:48
kreator
Только надо помнить, что в equates.clw константы для данного пропа появились с десятой версии.
Как определить разрядность Windows: 32 или 64
Добавлено: 16 Март 2016, 11:51
Developer
Вот собранный пример на Clarion 9.1.11396 для получения сведений об Windows собранный с применением equates.clw от Clarion 10.0.0.11975
На Windows 7 x64 SP1 SYSTEM{PROP:WindowsVersion,9} результат = 0
Проверьте у кого есть Windows 10

Как определить разрядность Windows: 32 или 64
Добавлено: 16 Март 2016, 12:26
kreator
На Win10 отработала неправильно. Даже первый индекс показала "Windows 8", даже не 8.1 (изначально стояла 8.1).
Похоже, я не прав. Надежда на то, что в C10 с введением поддержки индексов данного пропа, сделали всё правильно, через WinApi. Проверить можно будет на следующей версии Винды (которой не будет

).
Как определить разрядность Windows: 32 или 64
Добавлено: 16 Март 2016, 14:46
Губин Игорь
kreator писал(а): На Win10 отработала неправильно. Даже первый индекс показала "Windows 8", даже не 8.1 (изначально стояла 8.1).
Похоже, я не прав. Надежда на то, что в C10 с введением поддержки индексов данного пропа, сделали всё правильно, через WinApi. Проверить можно будет на следующей версии Винды (которой не будет

).
А теперь поставим самую свежую версию Clarion (12104

), ПЕРЕКОМПИЛИРУЕМ и убедимся, что всё прекрасно работает

Как определить разрядность Windows: 32 или 64
Добавлено: 18 Март 2016, 11:21
kreator
Губин Игорь писал(а):А теперь поставим самую свежую версию Clarion (12104

), ПЕРЕКОМПИЛИРУЕМ и убедимся, что всё прекрасно работает

Не знаю, что имеет ввиду Игорь, но заметил, что программа Developer'а отрабатывает странно. Я её перекомпилил на C10, она всё равно показывает неправильно. И я завис, не пойму в чём дело. У меня в программе, например, system{prop:WindowsVersion,9} показывает 14, а у Developer'а - 12.
Как определить разрядность Windows: 32 или 64
Добавлено: 25 Июль 2016, 12:34
kreator
Админы поставили Windows10 Корпоративная. Clarion (билд 12104) определяет её как Windows8.1. Ситуация странная, потому что с другими Win10 всё нормально.
Как определить разрядность Windows: 32 или 64
Добавлено: 25 Июль 2016, 14:04
Developer
Случайно не Windows 10 Enterprise LTSB?
Проверю на своём компьютере с Windows 10 - сообщу о результате

Как определить разрядность Windows: 32 или 64
Добавлено: 25 Июль 2016, 15:21
kreator
Developer писал(а):Случайно не Windows 10 Enterprise LTSB?
Windows 10 Enterprise. А что такое LTSB?
Как определить разрядность Windows: 32 или 64
Добавлено: 25 Июль 2016, 15:28
Губин Игорь
kreator писал(а): Не знаю, что имеет ввиду Игорь, но заметил, что программа Developer'а отрабатывает странно. Я её перекомпилил на C10
Я,
тупо, не глядя на его программу, воскурил мануал

и проверил работу примера из хелпа. Всё отработало на ура на всех доступных мне версиях Windows. К сожалению, доступа к Enterpraise у меня нет
Как определить разрядность Windows: 32 или 64
Добавлено: 25 Июль 2016, 22:27
Oleg Fomin
Коллеги, простите что не слишком рано встреваю в тему, редко бываю на форуме. Не так давно в буржуйских ньюсах делал маленький анонс. Работает приблуда на любой версии Clarion. Не забывайте добавлять к приложению соответствующий манифест, иначе Windows 10 прикидывается 8-кой и определение версии Windows будет некорректным. Источники информации указаны прямо в коде в комментах.
-------- Forwarded Message --------
Subject: ANN: Fomin Windows Version 1.0 (Freeware)
Date: 10 Jun 2016 16:55:45 -0400
Hi All,
http_://fomintools.com/FominWindowsVersion.zip
Windows version detection in Clarion applications and hand coded projects using MSDN documented Windows API functions.
Windows language agnostic, fast and reliable (I hope).
Freeware. Full source code included.
Ready to run executable also included for your convenience. You are encouraged to test it on various Windows versions.
Bug reports, suggestions, feature requests are welcome.
Enjoy,