Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.224.215.188] |
|
Сообщ.
#1
,
|
|
|
Private Const VER_PLATFORM_WIN32s = 0, VER_PLATFORM_WIN32_WINDOWS = 1, VER_PLATFORM_WIN32_NT = 2 Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As TOSVersionInfo) As Long Private Type TOSVersionInfo dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Public Function IsWindowsNT() As Boolean Dim osvi As TOSVersionInfo osvi.dwOSVersionInfoSize = Len(osvi) GetVersionEx osvi IsWindowsNT = (osvi.dwPlatformId = VER_PLATFORM_WIN32_NT) End Function Public Function IsWindows98() As Boolean Dim osvi As TOSVersionInfo osvi.dwOSVersionInfoSize = Len(osvi) GetVersionEx osvi IsWindows98 = (osvi.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS And osvi.dwMinorVersion >= 10 And osvi.dwMajorVersion = 4) End Function IsWindowsNT ' True, если установлена NT IsWindows98 ' True, если установлена Windows98/ME Иначе 95 |
Сообщ.
#2
,
|
|
|
Следующий код определяет Win до таких тонкостей : NT3, NT3.1, NT3.5, NT3.51, NT 4, Win95, Win95OSR2, Win2000, WinXP, Win98, Win98SE (ed: Win2k3, WinVista).
Option Explicit Public Const VER_PLATFORM_WIN32s = 0 Public Const VER_PLATFORM_WIN32_WINDOWS = 1 Public Const VER_PLATFORM_WIN32_NT = 2 Public Type OSVERSIONINFO OSVSize As Long 'size, in bytes, of this data structure dwVerMajor As Long 'ie NT 3.51, dwVerMajor = 3; NT 4.0, dwVerMajor = 4. dwVerMinor As Long 'ie NT 3.51, dwVerMinor = 51; NT 4.0, dwVerMinor= 0. dwBuildNumber As Long 'NT: build number of the OS 'Win9x: build number of the OS in low-order word. ' High-order word contains major & minor ver nos. PlatformID As Long 'Identifies the operating system platform. szCSDVersion As String * 128 'NT: string, such as "Service Pack 3" 'Win9x: 'arbitrary additional information' End Type Public Declare Function GetVersionEx Lib "kernel32" _ Alias "GetVersionExA" _ (lpVersionInformation As OSVERSIONINFO) As Long Public Function GetWinVer() As String #If Win32 Then Dim OSV As OSVERSIONINFO OSV.OSVSize = Len(OSV) If GetVersionEx(OSV) = 1 Then Select Case OSV.PlatformID Case VER_PLATFORM_WIN32s: GetWinVer = "32s" Case VER_PLATFORM_WIN32_NT: Select Case OSV.dwVerMajor Case 3: Select Case OSV.dwVerMinor Case 0: GetWinVer = "NT3" Case 1: GetWinVer = "NT3.1" Case 5: GetWinVer = "NT3.5" Case 51: GetWinVer = "NT3.51" End Select Case 4: GetWinVer = "NT 4" Case 5: Select Case OSV.dwVerMinor Case 0: GetWinVer = "Win2000" Case 1: GetWinVer = "WinXP" Case 2: GetWinVer = "Win2k3" ' Windows Server 2003 End Select Case 6: GetWinVer = "Vista" 'Vista End Select Case VER_PLATFORM_WIN32_WINDOWS: Select Case OSV.dwVerMinor Case 0: If OSV.dwBuildNumber = 950 Then GetWinVer = "Windows 95" Else ' 1111 for OSR 2. For OSR 2.5 = ??? GetWinVer = "Windows 95 OSR2" End If Case 90: GetWinVer = "ME" Case Else: If OSV.dwBuildNumber = 1998 Then GetWinVer = "Windows 98" Else GetWinVer = "Windows 98 Release 2" End If End Select End Select End If #Else GetWinVer = "3x" #End If End Function Вот по этой ссылке лежит код, который определяет винду до таких тонкостей как Home Edition, Server, Workstation, Professional и т.п - http://vbnet.mvps.org/index.html?code/syst...etversionex.htm |