Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Определение разрядности системы. / 8 сообщений из 8, страница 1 из 1
01.07.2013, 22:39
    #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
01.07.2013, 22:54
    #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
01.07.2013, 23:07
    #38316486
surbanec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение разрядности системы.
Дмитрий77,

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

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



в 32 битной xp и в 64битной Семерке показывает x86 .... Is64bit=False
...
Рейтинг: 0 / 0
02.07.2013, 10:39
    #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
Период между сообщениями больше года.
15.11.2016, 18:49
    #39347844
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение разрядности системы.
здравствуйте, подскажите пожалуйста
Код: vbnet
1.
Debug.Print Environ("processor_identifier")


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


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


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