Страница 1 из 3
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 05 Ноябрь 2012, 19:13
				 soft42
				При инсталляции программы часто необходимо установить еще и драйвер. А драйвера как правило бывают 32-битные и 64-битные. Отсюда и вопрос. Просмотрел несколько инсталляторов, нет у них такого функционала, что если Виндовс-32, то инсталлируем это, если 64 - устанавливаем то-то. Может кто-то задавался этим вопросом? Пока проблема переложена на пользователя. Если драйвер говорит, что не подходит к этой Windows, то пользователь сам запускает другую сборку драйвера. Это не есть хорошо  
 
Заранее извиняюсь, если вопрос был. Честно просмотрел десяток последних страниц - не увидел 

 
			 
			
					
				Re: Как определить разрядность Windows: 32 или 64
				Добавлено: 06 Ноябрь 2012, 10:21
				 soft42
				Порылся в Инете. Есть несколько способов... Склоняюсь к использованию 
SHGetSpecialFolderPath. Вроде как самый надежный метод 

 
			 
			
					
				Re: Как определить разрядность Windows: 32 или 64
				Добавлено: 06 Ноябрь 2012, 11:13
				 Дед Пахом
				Тоже стало любопытно. Склоняюсь к способу с функцией IsWow64Process.
			 
			
					
				Re: Как определить разрядность Windows: 32 или 64
				Добавлено: 06 Ноябрь 2012, 13:50
				 Губин Игорь
				soft42 писал(а): Просмотрел несколько инсталляторов, нет у них такого функционала, что если Виндовс-32, то инсталлируем это, если 64 - устанавливаем то-то. Может кто-то задавался этим вопросом? 
InnoSetup 
http://www.jrsoftware.org тебе в помощь.
 
			 
			
					
				Re: Как определить разрядность Windows: 32 или 64
				Добавлено: 06 Ноябрь 2012, 19:41
				 soft42
				
Чесно говоря, не совсем понял. Слаб я в англицком. Да и менять инсталлятор не хочется. Написал программку из 3 строк (1 Мб 

 ). Инсталлятор запускает программёшку, она определяет разрядность и в соответствии с результатом активирует 32-битный или 64-битный драйвер  

 .
Проверил на 3 компах, вроде корректно работает.
 
			 
			
					
				Re: Как определить разрядность Windows: 32 или 64
				Добавлено: 07 Ноябрь 2012, 13:25
				 Губин Игорь
				Ну, ежели не хочешь, не меняй.
			 
			
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 14 Март 2016, 20:20
				 Developer
				Привет всем!
Обращаюсь к знатокам с просьбой портировать рабочий проект с C++ в рабочий проект с получением exe на Clarion с целью определения запущено ли 32-х битное приложение в Windows x64 с помощью WoW64 через функцию Windows API IsWow64Process.
Заранее благодарю!
			 
			
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 14 Март 2016, 21:28
				 kreator
				Вот так попробуйте (сам не пробовал, без надобности пока):
Код: Выделить всё
SYSTEM{PROP:WindowsVersion,7}  !- Returns '1' if program is running on 64 bit Windows, otherwise an empty string
 
			 
			
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 14 Март 2016, 21:46
				 Дед Пахом
				kreator писал(а): Вот так попробуйте (сам не пробовал, без надобности пока):
Код: Выделить всё
SYSTEM{PROP:WindowsVersion,7}  !- Returns '1' if program is running on 64 bit Windows, otherwise an empty string
 
Вроде работает, на Win10 64 возвращает 1.
 
			 
			
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 14 Март 2016, 21:53
				 kreator
				Я же говорю - "Clean & Elegant Language (©)"  

 .
 
			 
			
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 15 Март 2016, 3:45
				 Developer
				Kreator и Дед Пахом спасибо за  отклик и помощь  
  
Вот по Вашей наводке обнаружил:
https://clarionhub.com/t/did-you-know-a ... h-poll/473
Проверю на разных версиях Windows  и сообщу о результатах!
А просьбу портировать Windows API IsWow64Process оставляю: есть много вопросов связанных с Windows API уже решенных на  C++, С# и Delphi, которые просто необходимо портировать в Clarion для решения специфических задач  
Необходимы хорошие образцы примеров портирования из C++, С# и Delphi в Clarion  
 
Да и знания в C++, C# и Delphi всегда в помощь и для Clarion  
 
Да и ещё по этой теме, решение данного вопроса есть в новой версии IceTips ITUtilities - вот только, к сожалению, для нас в свободном доступе их нет - а жаль, как видно из описаний в них есть решения на часто возникающие вопросы связанные решение которых связано Windows API.
 
			 
			
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 15 Март 2016, 4:55
				 Developer
				Проверил -  на Clarion 10.0.0.11975 - функция
SYSTEM{PROP:WindowsVersion,1}  - SYSTEM{PROP:WindowsVersion,10}
отлично работает только с версии Clarion 10.0.0.11897  
 
При компиляции в Clarion 7 - Clarion 10 включая версию Clarion 10.0.0.11822 функция одинаково работает на Windows 7 x64 но возвращаемые значения некорректны  
 
На этих же версиях Clarion некорректно работает на Windows 8-10  
 
Отличный аналог и возможная альтернатива IsWow64Process   
 
kreator писал(а): Я же говорю - "Clean & Elegant Language (©)"
 
Kreator и Дед Пахом спасибо Вам за помощь!  

 
			 
			
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 15 Март 2016, 15:46
				 Shur
				Developer, я дико извиняюсь, понял только что на Clarion 10.0.0.11975 всё нормально. Остальное как-то не просёк. 
Можете ли составить табличку по результатам, где по одной оси версии Клариона, а по другой оси версии Windows?
Хотя, может это лишнее, если у всех базовая версия 10.0.0.11975?
			 
			
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 15 Март 2016, 17:19
				 kreator
				Shur писал(а):Developer, я дико извиняюсь, понял только что на Clarion 10.0.0.11975 всё нормально. Остальное как-то не просёк.
Можете ли составить табличку по результатам, где по одной оси версии Клариона, а по другой оси версии Windows?
Хотя, может это лишнее, если у всех базовая версия 10.0.0.11975?
Мне кажется, здесь какое-то недопонимание. Этот prop не новый, как-то всегда работал. Не может быть уж таких глобальных проблем. Я использую system{prop:WindowsVersion,8} и system{prop:WindowsVersion,9} и достаточно давно, проблем вроде никогда не было.
 
			 
			
					
				Как определить разрядность Windows: 32 или 64
				Добавлено: 15 Март 2016, 17:31
				 Developer
				Ситуация такая, ранее до версии Clarion 10.0.0.11897 функция существовала ещё с Clarion 6 в виде SYSTEM{PROP:WindowsVersion}
Функция работала, но только на последних версиях Windows результат был некорректен  
 
Начиная с версии Clarion 10.0.0.11897 функция возвращает корректный результат на всех существующих версиях Windows  
 
Код: Выделить всё
The SYSTEM{PROP:WindowsVersion} supports passing an optional index parameter from 1 to 10:
SYSTEM{PROP:WindowsVersion,1}  ! - The Clarion description of the Windows version  (same value as without an index parameter)
SYSTEM{PROP:WindowsVersion,2}  ! - Description of Windows version from Windows itself
SYSTEM{PROP:WindowsVersion,3}  ! - Major version number
SYSTEM{PROP:WindowsVersion,4}  ! - Minor version number
SYSTEM{PROP:WindowsVersion,5}  ! - Build number
SYSTEM{PROP:WindowsVersion,6}  ! - Service pack number
SYSTEM{PROP:WindowsVersion,7}  ! - Returns '1' if program is running on 64 bit Windows, otherwise an empty string
SYSTEM{PROP:WindowsVersion,8}  ! - Returns '1' if program is running on a server version of Windows, otherwise an empty string
SYSTEM{PROP:WindowsVersion,9}  ! - Equate value representing the Windows version (separate for client and server versions)
SYSTEM{PROP:WindowsVersion,10} ! - Equate value representing the Windows edition