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

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

PlatformIDで#198を回避

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 Select Case pf
44 Case PlatformID.Win32S
45 VersionString = "Microsoft Win32S "
46 Case PlatformID.Win32Windows
47 VersionString = "Microsoft Windows "
48 Case PlatformID.Win32NT
49 VersionString = "Microsoft Windows NT "
50 Case PlatformID.WinCE
51 VersionString = "Microsoft Windows CE "
52 Case PlatformID.Unix
53 VersionString = "<unknown> "
54 End Select
55 VersionString = VersionString + ver.ToString
56 If String.IsNullOrEmpty(sp) <> False Then
57 VersionString = VersionString + " " + sp
58 End If
59 End Function
60
61 ' Methods
62 Override Function ToString() As String
63 Return VersionString
64 End Function
65
66 Override Function GetHashCode() As Long
67 Return pf.GetHashCode Xor ver.GetHashCode Xor sp.GetHashCode
68 End Function
69
70Private
71 pf As PlatformID
72 ver As Version
73 sp As String
74
75 Static Function ToPlatformID(platformId As DWord) As PlatformID
76 Select Case platformId
77 Case VER_PLATFORM_WIN32s
78 Return PlatformID.Win32S
79 Case VER_PLATFORM_WIN32_WINDOWS
80 Return PlatformID.Win32Windows
81 Case VER_PLATFORM_WIN32_NT
82 Return PlatformID.Win32NT
83 Case VER_PLATFORM_WIN32_CE
84 Return PlatformID.WinCE
85 Case Else
86 Return PlatformID.Unix
87 End Select
88 End Function
89End Class
90
91Enum PlatformID
92 Win32S = VER_PLATFORM_WIN32s '0
93 Win32Windows = VER_PLATFORM_WIN32_WINDOWS '1
94 Win32NT = VER_PLATFORM_WIN32_NT '2
95 WinCE = VER_PLATFORM_WIN32_CE '3
96 Unix = 4
97End Enum
98
99End Namespace
Note: See TracBrowser for help on using the repository browser.