source: trunk/ab5.0/ablib/src/Classes/System/OperatingSystem.ab

Last change on this file was 661, checked in by イグトランス (egtra), 15 years ago

OperatingSystem.VersionStringをStringBuilder使用に書き換えた。

File size: 2.4 KB
Line 
1' Classes/System/OperatingSystem.ab
2
3#require <Classes/System/Version.ab>
4
5Namespace System
6
7Class OperatingSystem
8 ' Inherits ICloneable', ISerializable
9Public
10 ' Constractor
11 Sub OperatingSystem(platform As PlatformID, version As Version)
12 pf = platform
13 ver = version
14 sp = ""
15 End Sub
16
17 Sub OperatingSystem(ByRef vi As OSVERSIONINFOA)
18 pf = ToPlatformID(vi.dwPlatformId)
19 ver = New Version(vi.dwMajorVersion, vi.dwMinorVersion, vi.dwBuildNumber)
20 sp = New String(vi.szCSDVersion As PCSTR)
21 End Sub
22
23 Sub OperatingSystem(ByRef vi As OSVERSIONINFOW)
24 pf = ToPlatformID(vi.dwPlatformId)
25 ver = New Version(vi.dwMajorVersion, vi.dwMinorVersion, vi.dwBuildNumber)
26 sp = New String(vi.szCSDVersion As PCWSTR)
27 End Sub
28
29 ' Properties
30 Const Function Platform() As PlatformID
31 Return pf
32 End Function
33
34 Const Function Version() As Version
35 Return ver
36 End Function
37
38 Const Function ServicePack() As String
39 Return sp
40 End Function
41
42 Const Function VersionString() As String
43 Dim sb = New Text.StringBuilder
44
45 Select Case pf
46 Case PlatformID.Win32S
47 sb.Append("Microsoft Win32S ")
48 Case PlatformID.Win32Windows
49 sb.Append("Microsoft Windows ")
50 Case PlatformID.Win32NT
51 sb.Append("Microsoft Windows NT ")
52 Case PlatformID.WinCE
53 sb.Append("Microsoft Windows CE ")
54 Case PlatformID.Unix
55 sb.Append("<unknown> ")
56 End Select
57 sb.Append(ver)
58 If String.IsNullOrEmpty(sp) <> False Then
59 sb.Append(" ").Append(sp)
60 End If
61 VersionString = sb.ToString()
62 End Function
63
64 ' Methods
65 Override Function ToString() As String
66 Return VersionString
67 End Function
68
69 Override Function GetHashCode() As Long
70 Return pf.GetHashCode Xor ver.GetHashCode Xor sp.GetHashCode
71 End Function
72
73Private
74 pf As PlatformID
75 ver As Version
76 sp As String
77
78 Static Function ToPlatformID(platformId As DWord) As PlatformID
79 Select Case platformId
80 Case VER_PLATFORM_WIN32s
81 Return PlatformID.Win32S
82 Case VER_PLATFORM_WIN32_WINDOWS
83 Return PlatformID.Win32Windows
84 Case VER_PLATFORM_WIN32_NT
85 Return PlatformID.Win32NT
86 Case VER_PLATFORM_WIN32_CE
87 Return PlatformID.WinCE
88 Case Else
89 Return PlatformID.Unix
90 End Select
91 End Function
92End Class
93
94Enum PlatformID
95 Win32S = VER_PLATFORM_WIN32s '0
96 Win32Windows = VER_PLATFORM_WIN32_WINDOWS '1
97 Win32NT = VER_PLATFORM_WIN32_NT '2
98 WinCE = VER_PLATFORM_WIN32_CE '3
99 Unix = 4
100End Enum
101
102End Namespace
Note: See TracBrowser for help on using the repository browser.