Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Определение Win 7 Добавлено: 13.03.12 22:48  

Автор вопроса:  Alex | Web-сайт: starsorion.com
Есть ли у кого рабочий код под VB6 для определения ,что стоит Win 7?
У меня есть под VBA и он там и показывает норм(оно и понятно, там задействован VBA Office 2007) ,но вот в VB 6 определяет ,что Win XP (

Ответить

  Ответы Всего ответов: 20  

Номер ответа: 1
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #1 Добавлено: 14.03.12 08:56
API-Guide:
  1. Private Declare Function GetVersion Lib "kernel32" () As Long
  2. Public Function GetWinVersion() As String
  3.     Dim Ver As Long, WinVer As Long
  4.     Ver = GetVersion()
  5.     WinVer = Ver And &HFFFF&
  6.     'retrieve the windows version
  7.     GetWinVersion = Format((WinVer Mod 256) + ((WinVer \ 256) / 100), "Fixed")
  8. End Function
  9. Private Sub Form_Load()
  10.     'KPD-Team 1999
  11.     'URL: http://www.allapi.net/
  12.     'E-Mail: KPDTeam@Allapi.net
  13.     MsgBox "Windows version: " + GetWinVersion
  14. End Sub



или

  1. Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
  2. Private Type OSVERSIONINFO
  3.     dwOSVersionInfoSize As Long
  4.     dwMajorVersion As Long
  5.     dwMinorVersion As Long
  6.     dwBuildNumber As Long
  7.     dwPlatformId As Long
  8.     szCSDVersion As String * 128
  9. End Type
  10. Private Sub Form_Load()
  11.     Dim OSInfo As OSVERSIONINFO, PId As String
  12.     'KPD-Team 1998
  13.     'URL: http://www.allapi.net/
  14.     'KPDTeam@Allapi.net
  15.     'Set the graphical mode to persistent
  16.     Me.AutoRedraw = True
  17.     'Set the structure size
  18.     OSInfo.dwOSVersionInfoSize = Len(OSInfo)
  19.     'Get the Windows version
  20.     Ret& = GetVersionEx(OSInfo)
  21.     'Chack for errors
  22.     If Ret& = 0 Then MsgBox "Error Getting Version Information": Exit Sub
  23.     'Print the information to the form
  24.     Select Case OSInfo.dwPlatformId
  25.         Case 0
  26.             PId = "Windows 32s "
  27.         Case 1
  28.             PId = "Windows 95/98"
  29.         Case 2
  30.             PId = "Windows NT "
  31.     End Select
  32.     Print "OS: " + PId
  33.     Print "Win version:" + Str$(OSInfo.dwMajorVersion) + "." + LTrim(Str(OSInfo.dwMinorVersion))
  34.     Print "Build: " + Str(OSInfo.dwBuildNumber)
  35. End Sub
  36.  

Ответить

Номер ответа: 2
Автор ответа:
 Alex



Вопросов: 11
Ответов: 40
 Web-сайт: starsorion.com
 Профиль | | #2
Добавлено: 14.03.12 17:55
Увы , но эти варианты я пробовал...
Показывают , что Windows XP вместо Win 7 , а именно версию ядра - 5

Ядро XP - 5
Ядро Vista/7 - 6.x

В зависимости от релиза - 6.0 или 6.1 - это или Vista или 7 соответственно.

Обе выше представленные процедуры (как впрочем и те , что у меня) показываю версию - 5 ((

Я так полагаю ,что это из-за устаревшей библиотеки VB6. Ну не понимает она версии выше XP)
--------------------------------

Пришлось воспользоваться способом от которого я хотел уйти ,но (( Видимо вариантов нет(

For Each objOS In GetObject("winmgmts:";).InstancesOf("Win32_OperatingSystem";)
    Me.Caption = "Version = " & objOS.Version & vbCrLf & " Architecture = " & objOS.OSArchitecture
Next

Все параметры класса - http://msdn.microsoft.com/en-us/library/windows/desktop/aa394239(v=vs.85).aspx
Нумерация ядер - http://ru.wikipedia.org/wiki/Microsoft_Windows

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 14.03.12 22:53
Здесь используется винапи, версия VB не при чём. На самом деле у вас левая винда какая-то:) у меня ломаная семерка - GetVersion выдаёт "6,01". Формат странный, но суть ясна)

Ответить

Номер ответа: 4
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #4 Добавлено: 15.03.12 00:18
Пришлось воспользоваться способом от которого я хотел уйти ,но (( Видимо вариантов нет(


Как забавный вариант :)
  1. '0 - w95, 1 - win98, 2 - winMe, 3 - winNT, 4 - win2000, 5 - XP, 6 - VISTA, 7 - W7
  2. Public Function winversion() As Long
  3.   Static yet As Boolean
  4.   Static winver As Long
  5.   If yet Then
  6.       winversion = winver
  7.       Exit Function
  8.   End If
  9.   yet = True
  10.     
  11.     Dim osv As OSVERSIONINFO
  12.     osv.dwOSVersionInfoSize = Len(osv)
  13.     GetVersionEx osv
  14.     With osv
  15.         Select Case .dwPlatformId
  16.             Case 1
  17.                 Select Case .dwMinorVersion
  18.                     Case 0:  winversion = 0 'win95
  19.                     Case 10: winversion = 1 ' win98
  20.                     Case 90: winversion = 2 ' winMe
  21.                 End Select
  22.             Case 2
  23.                 Select Case .dwMajorVersion
  24.                     Case 4:  winversion = 3 ' winNT
  25.                     Case Is > 4
  26.                         If .dwMinorVersion = 0 Then
  27.                             winversion = 4 ' win2000
  28.                         Else
  29.                             winversion = 5 ' winXP
  30.                             Dim hm As Long
  31.                             hm = LoadLibrary("kernel32")
  32.                             Dim proc As Long
  33.                             proc = GetProcAddress(hm, "WerGetFlags") ' впервые на арене! vista!
  34.                             If CBool(proc) Then winversion = 6 ' vista
  35.                             'FreeLibrary hm
  36.                             hm = LoadLibrary("Advapi32")
  37.                             proc = GetProcAddress(hm, "AddConditionalAce") 'win7
  38.                             If CBool(proc) Then winversion = 7 ' win7
  39.                             'FreeLibrary hm
  40.                         End If
  41.                 End Select
  42.             Case Else
  43.                 winversion = -1
  44.         End Select
  45.     End With
  46.     winver = winversion
  47. End Function

Ответить

Номер ответа: 5
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #5 Добавлено: 15.03.12 08:16
из первого поста второй код выдает:

OS: Windows NT
Win version: 6.1
Build: 7601


Win 7 SP1 x64
Поддерживаю Winand :)

Ответить

Номер ответа: 6
Автор ответа:
 Alex



Вопросов: 11
Ответов: 40
 Web-сайт: starsorion.com
 Профиль | | #6
Добавлено: 15.03.12 17:38
Win 7 x64
VB конечно опосредованно участвует , но и тем не менее...
У меня 5 выдаёт((

Ответить

Номер ответа: 7
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 15.03.12 20:20
г. а может это XP с семёрочным стилем))

Ответить

Номер ответа: 8
Автор ответа:
 Alex



Вопросов: 11
Ответов: 40
 Web-сайт: starsorion.com
 Профиль | | #8
Добавлено: 15.03.12 22:54
:)

Ответить

Номер ответа: 9
Автор ответа:
 Alex



Вопросов: 11
Ответов: 40
 Web-сайт: starsorion.com
 Профиль | | #9
Добавлено: 15.03.12 23:03
Разобрался я с этим)
В VB было установлено совместимость Windows XP SP3. Убрал и теперь всё норм. И на кой я это сделал?)

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 20.03.12 06:14
Если прога запустилась, значит она не под Windows 7

Ответить

Номер ответа: 11
Автор ответа:
 Alex



Вопросов: 11
Ответов: 40
 Web-сайт: starsorion.com
 Профиль | | #11
Добавлено: 01.04.12 09:52
Как это? Что-то я не понял(

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 03.04.12 22:04
сранная фраза конечно. Видимо программы для Windows 7 вообще не работают:) либо суть в том, что vb6 не совместим с этой ос

Ответить

Номер ответа: 13
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #13 Добавлено: 04.04.12 09:13
Правильно, правильно. Продолжайте писать под ваши win98 :)

Ответить

Номер ответа: 14
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #14
Добавлено: 05.04.12 19:22
Мне вот интересно, что умные люди скажут о Win8. Я смотрел на дев и на консьюмер превью. И не понял глубинной сути этой ОС:) Готовы ли юзеры перейти на такое..

Ответить

Номер ответа: 15
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #15 Добавлено: 06.04.12 12:24
Как показывает практика, юзеры, сидя на своих ХР, до сих пор смотрят на Win7, как эскимосы на мобильник.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам