powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Определение разрядности системы.
8 сообщений из 8, страница 1 из 1
Определение разрядности системы.
    #38316476
Фотография surbanec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте форумчане.

задался вопросом этим вопросом. нужно определить достаточно точно и правильно разрядность ОС

Вот как определяю разрядность я в своей программе:
Код: vbnet
1.
2.
3.
identif = Split(Environ("processor_identifier"), " ")(0)
If InStr(1, identif, "x86") > 0 Then bits = "32"
If InStr(1, identif, "64") > 0 Then bits = "64"



Вот примерчик который я нашел в инете за пару секунд:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim x64 As String 'объявляем переменные
Private Sub Form_Load()
x64 = Environ("PROGRAMFILES(x86)") ' присваиваем системную переменную папки, если это x86 то системная переменная выдаст пустоту, потому что в ней нет системной папки!
If (x64 = "") Then ' а тут и определим что выдаст переменная x64 если пустоту то у пользователя x32, а если выдаст не пустоту а в случае x64 она выдаст путь: C:\Program Files (x86), который не как не похож на пустоту согласитесь =).
MsgBox "У тебя x32 (x86)" ' выдает такосообщение если переменная = пустоте
Else
MsgBox "У тебя x64" 'или если переменная =  C:\Program Files (x86) (а путь до папки это явно не пустота)
End If
End Sub




Помогите определиться что наиболее лучше.. какой код работоспособен на 100% на любой машинке с любой ос начиная с XP до 8?
Или может есть другие способы определить Разрядность ОС?
...
Рейтинг: 0 / 0
Определение разрядности системы.
    #38316482
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
surbanec,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Private Declare Function GetProcAddress Lib "kernel32" _
 (ByVal hModule As Long, _
 ByVal lpProcName As String) As Long
Private Declare Function GetModuleHandle Lib "kernel32" _
 Alias "GetModuleHandleA" _
 (ByVal lpModuleName As String) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function IsWow64Process Lib "kernel32" _
 (ByVal hProc As Long, bWow64Process As Boolean) As Long
Private Declare Function GetSystemWow64Directory Lib "kernel32.dll" _
 Alias "GetSystemWow64DirectoryA" (ByVal lpBuffer As String, ByVal uSize As Long) As Long

Public Function Is64bit() As Boolean
  Dim handle As Long, bolFunc As Boolean

  ' Assume initially that this is not a Wow64 process
  bolFunc = False

  ' Now check to see if IsWow64Process function exists
  handle = GetProcAddress(GetModuleHandle("kernel32"), _
   "IsWow64Process")

  If handle > 0 Then ' IsWow64Process function exists
    ' Now use the function to determine if
    ' we are running under Wow64
    IsWow64Process GetCurrentProcess(), bolFunc
  End If

  Is64bit = bolFunc

End Function
...
Рейтинг: 0 / 0
Определение разрядности системы.
    #38316486
Фотография surbanec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

странно не работает.

Код: vbnet
1.
If Is64bit = True Then Me.Caption = "x64" Else Me.Caption = "x86"



в 32 битной xp и в 64битной Семерке показывает x86 .... Is64bit=False
...
Рейтинг: 0 / 0
Определение разрядности системы.
    #38316727
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot surbanec]странно не работает.

Код: vbnet
1.
If Is64bit = True Then Me.Caption = "x64" Else Me.Caption = "x86"



Разбирайся с синтаксисом того чего пишешь.
Так попробуй.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Command1_Click()
    If Is64bit Then Me.Caption = "x64" Else Me.Caption = "x86"
    MsgBox Is64bit
    
    Dim x64 As Boolean
    x64 = Is64bit
    If x64 Then Me.Caption = "x64" Else Me.Caption = "x86"
    MsgBox Is64bit
    
    If Is64bit Then
      Me.Caption = "x64"
    Else
      Me.Caption = "x86"
    End If
End Sub
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Определение разрядности системы.
    #39347844
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здравствуйте, подскажите пожалуйста
Код: vbnet
1.
Debug.Print Environ("processor_identifier")


в моём случае ответ:
x86 Family 15 Model 2 Stepping 9, GenuineIntel
никто не знает, что это означает?
...
Рейтинг: 0 / 0
Определение разрядности системы.
    #39347853
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Определение разрядности системы.
    #39347859
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, спасибо
...
Рейтинг: 0 / 0
Определение разрядности системы.
    #39348050
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня
Код: vbnet
1.
Split(Environ("processor_identifier"), " ")(0)


Intel64-догадаться можно, что это х64, но странно как-то это
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Определение разрядности системы.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]