windows-pr 0.4.0-mswin32 → 0.5.0-mswin32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGES CHANGED
@@ -1,3 +1,9 @@
1
+ = 0.5.0 - 23-May-2006
2
+ * Added the Registry module
3
+ * Added the EventLog module
4
+ * Added the National module
5
+ * Added the SystemInfo module
6
+
1
7
  = 0.4.0 - 7-May-2006
2
8
  * Bug fix for the WaitForMultipleObjects method in synchronize.rb
3
9
  * Added the Window module (just a few constants for now)
@@ -6,16 +12,16 @@
6
12
  * Added the Directory module (CreateDirectory, etc)
7
13
  * Added the Shell module (some constants, a few methods for now)
8
14
  * Added the Unicode module (WideCharToMultiByte, etc)
9
- * Added process creation, priority and startf flags to process.rb
15
+ * Added process creation, priority and startf flags to the Process module
10
16
 
11
17
  = 0.3.0 - 22-Apr-2006
12
- * Added the limits module.
13
- * Added the security module.
14
- * Fixed a signature bug in the msvcrt/buffer module.
18
+ * Added the Limits module.
19
+ * Added the Security module.
20
+ * Fixed a signature bug in the MSVCRT/Buffer module.
15
21
 
16
22
  = 0.2.0 - 13-Apr-2006
17
- * Added the filesystem module.
18
- * Fixed signature and dll mistakes in the file module.
23
+ * Added the FileSystem module.
24
+ * Fixed signature and dll mistakes in the File module.
19
25
 
20
26
  = 0.1.0 - 4-Apr-2006
21
27
  * Initial release
data/MANIFEST CHANGED
@@ -7,17 +7,28 @@ windows-pr.gemspec
7
7
  doc/conversion_guide.txt
8
8
 
9
9
  lib/windows/clipboard.rb
10
+ lib/windows/console.rb
10
11
  lib/windows/device_io.rb
12
+ lib/windows/directory.rb
11
13
  lib/windows/error.rb
14
+ lib/windows/eventlog.rb
12
15
  lib/windows/file.rb
13
16
  lib/windows/filesystem.rb
14
17
  lib/windows/handle.rb
18
+ lib/windows/library.rb
15
19
  lib/windows/limits.rb
16
20
  lib/windows/memory.rb
21
+ lib/windows/national.rb
17
22
  lib/windows/path.rb
23
+ lib/windows/process.rb
24
+ lib/windows/registry.rb
18
25
  lib/windows/security.rb
26
+ lib/windows/shell.rb
19
27
  lib/windows/sound.rb
20
28
  lib/windows/synchronize.rb
29
+ lib/windows/system_info.rb
30
+ lib/windows/unicode.rb
31
+ lib/windows/window.rb
21
32
 
22
33
  lib/windows/msvcrt/buffer.rb
23
34
  lib/windows/msvcrt/file.rb
@@ -12,7 +12,7 @@ LPDWORD => 'P'
12
12
  LPTSTR => 'P'
13
13
  UINT => 'I'
14
14
  VOID => 'V'
15
- WORD => 'I'
15
+ WORD => 'I'
16
16
 
17
17
  = C Data Types
18
18
  void => 'V'
@@ -20,6 +20,6 @@ void* => 'P'
20
20
  char* => 'P'
21
21
  const char* => 'L'
22
22
  int => 'I'
23
- long => 'L'
23
+ long => 'L'
24
24
  struct => 'P'
25
25
  struct* => 'P'
@@ -1,36 +1,3 @@
1
- #############################################################################
2
- # clipboard.rb
3
- #
4
- # Includes the following functions:
5
- #
6
- # CloseClipboard()
7
- # CoundClipboardFormats()
8
- # EmptyClipboard()
9
- # EnumClipboardFormats()
10
- # GetClipboardData()
11
- # GetClipboardFormatName()
12
- # IsClipboardFormatAvailable()
13
- # OpenClipboard()
14
- # RegisterClipboardFormat()
15
- # SetClipboardData()
16
- #
17
- # Defines the following constants:
18
- #
19
- # CF_TEXT
20
- # CF_BITMAP
21
- # CF_METAFILEPICT
22
- # CF_SYLK
23
- # CF_DIF
24
- # CF_TIFF
25
- # CF_OEMTEXT
26
- # CF_DIB
27
- # CF_PALETTE
28
- # CF_PENDATA
29
- # CF_RIFF
30
- # CF_WAVE
31
- # CF_UNICODETEXT
32
- # CF_ENHMETAFILE
33
- #############################################################################
34
1
  require 'Win32API'
35
2
 
36
3
  module Windows
data/lib/windows/error.rb CHANGED
@@ -26,6 +26,7 @@ module Windows
26
26
  SEM_NOOPENFILEERRORBOX = 0x8000
27
27
 
28
28
  NO_ERROR = 0
29
+ ERROR_SUCCESS = 0
29
30
  ERROR_INVALID_FUNCTION = 1
30
31
  ERROR_FILE_NOT_FOUND = 2
31
32
  ERROR_PATH_NOT_FOUND = 3
@@ -271,7 +272,7 @@ module Windows
271
272
  SetLastError = Win32API.new('kernel32', 'GetLastError', 'L', 'V')
272
273
  SetLastErrorEx = Win32API.new('kernel32', 'GetLastError', 'LL', 'V')
273
274
  SetErrorMode = Win32API.new('kernel32', 'SetErrorMode', 'I', 'I')
274
- FormatMessage = Win32API.new('kernel32', 'FormatMessage', 'LPLLPLP', 'L')
275
+ FormatMessage = Win32API.new('kernel32', 'FormatMessage', 'LLLLPLP', 'L')
275
276
 
276
277
  def GetLastError
277
278
  GetLastError.call
@@ -0,0 +1,85 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module EventLog
5
+ EVENTLOG_SEQUENTIAL_READ = 0x0001
6
+ EVENTLOG_SEEK_READ = 0x0002
7
+ EVENTLOG_FORWARDS_READ = 0x0004
8
+ EVENTLOG_BACKWARDS_READ = 0x0008
9
+
10
+ EVENTLOG_SUCCESS = 0x0000
11
+ EVENTLOG_ERROR_TYPE = 0x0001
12
+ EVENTLOG_WARNING_TYPE = 0x0002
13
+ EVENTLOG_INFORMATION_TYPE = 0x0004
14
+ EVENTLOG_AUDIT_SUCCESS = 0x0008
15
+ EVENTLOG_AUDIT_FAILURE = 0x0010
16
+
17
+ EVENTLOG_FULL_INFO = 0
18
+
19
+ BackupEventLog = Win32API.new('advapi32', 'BackupEventLog', 'LP', 'I')
20
+ ClearEventLog = Win32API.new('advapi32', 'ClearEventLog', 'LP', 'I')
21
+ CloseEventLog = Win32API.new('advapi32', 'CloseEventLog', 'L', 'I')
22
+ DeregisterEventSource = Win32API.new('advapi32', 'DeregisterEventSource', 'L', 'I')
23
+ GetEventLogInformation = Win32API.new('advapi32', 'GetEventLogInformation', 'LLPLP', 'I')
24
+ GetNumberOfEventLogRecords = Win32API.new('advapi32', 'GetNumberOfEventLogRecords', 'LP', 'I')
25
+ GetOldestEventLogRecord = Win32API.new('advapi32', 'GetOldestEventLogRecord', 'LP', 'I')
26
+ NotifyChangeEventLog = Win32API.new('advapi32', 'NotifyChangeEventLog', 'LL', 'I')
27
+ OpenBackupEventLog = Win32API.new('advapi32', 'OpenBackupEventLog', 'PP', 'L')
28
+ OpenEventLog = Win32API.new('advapi32', 'OpenEventLog', 'PP', 'L')
29
+ ReadEventLog = Win32API.new('advapi32', 'ReadEventLog', 'LLLPLPP', 'I')
30
+ RegisterEventSource = Win32API.new('advapi32', 'RegisterEventSource', 'PP', 'L')
31
+ ReportEvent = Win32API.new('advapi32', 'ReportEvent', 'LIILPILPP', 'I')
32
+
33
+ def BackupEventLog(handle, file)
34
+ BackupEventLog.call(handle, file) != 0
35
+ end
36
+
37
+ def ClearEventLog(handle, file = 0)
38
+ ClearEventLog.call(handle, file) != 0
39
+ end
40
+
41
+ def CloseEventLog(handle)
42
+ CloseEventLog.call(handle) != 0
43
+ end
44
+
45
+ def DeregisterEventSource(handle)
46
+ DeregisterEventSource.call(handle) != 0
47
+ end
48
+
49
+ def GetEventLogInformation(handle, level, buf, buf_size, bytes)
50
+ GetEventLogInformation.call(handle, level, buf, buf_size, bytes) != 0
51
+ end
52
+
53
+ def GetNumberOfEventLogRecords(handle, num)
54
+ GetNumberOfEventLogRecords.call(handle, num) != 0
55
+ end
56
+
57
+ def GetOldestEventLogRecord(handle, rec)
58
+ GetOldestEventLogRecord.call(handle, rec) != 0
59
+ end
60
+
61
+ def NotifyChangeEventLog(handle, event)
62
+ NotifyChangeEventLog.call(handle, event) != 0
63
+ end
64
+
65
+ def OpenBackupEventLog(server, file)
66
+ OpenBackupEventLog.call(server, file)
67
+ end
68
+
69
+ def OpenEventLog(server, source)
70
+ OpenEventLog.call(server, source)
71
+ end
72
+
73
+ def ReadEventLog(handle, flags, offset, buf, bytes, bytes_read, min_bytes)
74
+ ReadEventLog.call(handle, flags, offset, buf, bytes, bytes_read, min_bytes) != 0
75
+ end
76
+
77
+ def RegisterEventSource(server, source)
78
+ RegisterEventSource.call(server, source)
79
+ end
80
+
81
+ def ReportEvent(handle, type, cat, id, sid, num, size, strings, raw)
82
+ ReportEvent.call(handle, type, cat, id, sid, num, size, strings, raw) != 0
83
+ end
84
+ end
85
+ end
@@ -11,6 +11,11 @@ module Windows
11
11
  GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2
12
12
  GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4
13
13
 
14
+ DONT_RESOLVE_DLL_REFERENCES = 0x00000001
15
+ LOAD_LIBRARY_AS_DATAFILE = 0x00000002
16
+ LOAD_WITH_ALTERED_SEARCH_PATH = 0x00000008
17
+ LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x00000010
18
+
14
19
  DisableThreadLibraryCalls = Win32API.new('kernel32', 'DisableThreadLibraryCalls', 'L', 'I')
15
20
  FreeLibrary = Win32API.new('kernel32', 'FreeLibrary', 'L', 'I')
16
21
  FreeLibraryAndExitThread = Win32API.new('kernel32', 'FreeLibraryAndExitThread', 'LL', 'V')
@@ -1,28 +1,3 @@
1
- ######################################################################
2
- # memory.rb
3
- #
4
- # Includes the following functions:
5
- #
6
- # GlobalAlloc()
7
- # GlobalDiscard()
8
- # GlobalFlags()
9
- # GlobalFree()
10
- # GlobalHandle()
11
- # GlobalLock()
12
- # GlobalMemoryStatus()
13
- # GlobalMemoryStatusEx()
14
- # GlobalReAlloc()
15
- # GlobalSize()
16
- # GlobalUnlock()
17
- #
18
- # Defines the following constants:
19
- #
20
- # GHND
21
- # GMEM_FIXED
22
- # GMEM_MOVABLE
23
- # GMEM_ZEROINIT
24
- # GPTR
25
- ######################################################################
26
1
  require 'Win32API'
27
2
 
28
3
  module Windows
@@ -34,11 +9,10 @@ module Windows
34
9
  GPTR = 0x0040
35
10
 
36
11
  GlobalAlloc = Win32API.new('kernel32', 'GlobalAlloc', 'II', 'I')
37
- GlobalDiscard = Win32API.new('kernel32', 'GlobalDiscard', 'I', 'I')
38
12
  GlobalFlags = Win32API.new('kernel32', 'GlobalFlags', 'I', 'I')
39
13
  GlobalFree = Win32API.new('kernel32', 'GlobalFree', 'I', 'I')
40
14
  GlobalHandle = Win32API.new('kernel32', 'GlobalHandle', 'P', 'I')
41
- GlobalLock = Win32API.new('kernel32', 'GlobalLock', 'I', 'P')
15
+ GlobalLock = Win32API.new('kernel32', 'GlobalLock', 'L', 'L')
42
16
  GlobalMemoryStatus = Win32API.new('kernel32', 'GlobalMemoryStatus', 'P', 'V')
43
17
  GlobalMemoryStatusEx = Win32API.new('kernel32', 'GlobalMemoryStatus', 'P', 'V')
44
18
  GlobalReAlloc = Win32API.new('kernel32', 'GlobalReAlloc', 'III', 'I')
@@ -49,10 +23,6 @@ module Windows
49
23
  GlobalAlloc.call(flags, bytes)
50
24
  end
51
25
 
52
- def GlobalDiscard(handle)
53
- GlobalDiscard.call(handle)
54
- end
55
-
56
26
  def GlobalFlags(handle)
57
27
  GlobalFlags.call(handle)
58
28
  end
@@ -0,0 +1,557 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module National
5
+ # Code page identifiers. Used for get_acp_string method.
6
+ CODE_PAGE = {
7
+ 037 => 'IBM EBCDIC = U.S./Canada',
8
+ 437 => 'OEM = United States',
9
+ 500 => 'IBM EBCDIC - International',
10
+ 708 => 'Arabic - ASMO 708',
11
+ 709 => 'Arabic - ASMO 449+, BCON V4',
12
+ 710 => 'Arabic - Transparent Arabic',
13
+ 720 => 'Arabic - Transparent ASMO',
14
+ 737 => 'OEM - Greek (formerly 437G)',
15
+ 775 => 'OEM - Baltic',
16
+ 850 => 'OEM - Multilingual Latin I',
17
+ 852 => 'OEM - Latin II',
18
+ 855 => 'OEM - Cyrillic (primarily Russian)',
19
+ 857 => 'OEM - Turkish',
20
+ 858 => 'OEM - Multilingual Latin I + Euro symbol',
21
+ 860 => 'OEM - Portuguese',
22
+ 861 => 'OEM - Icelandic',
23
+ 862 => 'OEM - Hebrew',
24
+ 863 => 'OEM - Canadian-French',
25
+ 864 => 'OEM - Arabic',
26
+ 865 => 'OEM - Nordic',
27
+ 866 => 'OEM - Russian',
28
+ 869 => 'OEM - Modern Greek',
29
+ 870 => 'IBM EBCDIC - Multilingual/ROECE (Latin-2)',
30
+ 874 => 'ANSI/OEM - Thai (same as 28605, ISO 8859-15)',
31
+ 875 => 'IBM EBCDIC - Modern Greek',
32
+ 932 => 'ANSI/OEM - Japanese, Shift-JIS',
33
+ 936 => 'ANSI/OEM - Simplified Chinese (PRC, Singapore)',
34
+ 949 => 'ANSI/OEM - Korean (Unified Hangul Code)',
35
+ 950 => 'ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)',
36
+ 1026 => 'IBM EBCDIC - Turkish (Latin-5)',
37
+ 1047 => 'IBM EBCDIC - Latin 1/Open System',
38
+ 1140 => 'IBM EBCDIC - U.S./Canada (037 + Euro symbol)',
39
+ 1141 => 'IBM EBCDIC - Germany (20273 + Euro symbol)',
40
+ 1142 => 'IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)',
41
+ 1143 => 'IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)',
42
+ 1144 => 'IBM EBCDIC - Italy (20280 + Euro symbol)',
43
+ 1145 => 'IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)',
44
+ 1146 => 'IBM EBCDIC - United Kingdom (20285 + Euro symbol)',
45
+ 1147 => 'IBM EBCDIC - France (20297 + Euro symbol)',
46
+ 1148 => 'IBM EBCDIC - International (500 + Euro symbol)',
47
+ 1149 => 'IBM EBCDIC - Icelandic (20871 + Euro symbol)',
48
+ 1200 => 'Unicode UCS-2 Little-Endian (BMP of ISO 10646)',
49
+ 1201 => 'Unicode UCS-2 Big-Endian',
50
+ 1250 => 'ANSI - Central European',
51
+ 1251 => 'ANSI - Cyrillic',
52
+ 1252 => 'ANSI - Latin I',
53
+ 1253 => 'ANSI - Greek',
54
+ 1254 => 'ANSI - Turkish',
55
+ 1255 => 'ANSI - Hebrew',
56
+ 1256 => 'ANSI - Arabic',
57
+ 1257 => 'ANSI - Baltic',
58
+ 1258 => 'ANSI/OEM - Vietnamese',
59
+ 1361 => 'Korean (Johab)',
60
+ 10000 => 'MAC - Roman',
61
+ 10001 => 'MAC - Japanese',
62
+ 10002 => 'MAC - Traditional Chinese (Big5)',
63
+ 10003 => 'MAC - Korean',
64
+ 10004 => 'MAC - Arabic',
65
+ 10005 => 'MAC - Hebrew',
66
+ 10006 => 'MAC - Greek I',
67
+ 10007 => 'MAC - Cyrillic',
68
+ 10008 => 'MAC - Simplified Chinese (GB 2312)',
69
+ 10010 => 'MAC - Romania',
70
+ 10017 => 'MAC - Ukraine',
71
+ 10021 => 'MAC - Thai',
72
+ 10029 => 'MAC - Latin II',
73
+ 10079 => 'MAC - Icelandic',
74
+ 10081 => 'MAC - Turkish',
75
+ 10082 => 'MAC - Croatia',
76
+ 12000 => 'Unicode UCS-4 Little-Endian',
77
+ 12001 => 'Unicode UCS-4 Big-Endian',
78
+ 20000 => 'CNS - Taiwan',
79
+ 20001 => 'TCA - Taiwan',
80
+ 20002 => 'Eten - Taiwan',
81
+ 20003 => 'IBM5550 - Taiwan',
82
+ 20004 => 'TeleText - Taiwan',
83
+ 20005 => 'Wang - Taiwan',
84
+ 20105 => 'IA5 IRV International Alphabet No. 5 (7-bit)',
85
+ 20106 => 'IA5 German (7-bit)',
86
+ 20107 => 'IA5 Swedish (7-bit)',
87
+ 20108 => 'IA5 Norwegian (7-bit)',
88
+ 20127 => 'US-ASCII (7-bit)',
89
+ 20261 => 'T.61',
90
+ 20269 => 'ISO 6937 Non-Spacing Accent',
91
+ 20273 => 'IBM EBCDIC - Germany',
92
+ 20277 => 'IBM EBCDIC - Denmark/Norway',
93
+ 20278 => 'IBM EBCDIC - Finland/Sweden',
94
+ 20280 => 'IBM EBCDIC - Italy',
95
+ 20284 => 'IBM EBCDIC - Latin America/Spain',
96
+ 20285 => 'IBM EBCDIC - United Kingdom',
97
+ 20290 => 'IBM EBCDIC - Japanese Katakana Extended',
98
+ 20297 => 'IBM EBCDIC - France',
99
+ 20420 => 'IBM EBCDIC - Arabic',
100
+ 20423 => 'IBM EBCDIC - Greek',
101
+ 20424 => 'IBM EBCDIC - Hebrew',
102
+ 20833 => 'IBM EBCDIC - Korean Extended',
103
+ 20838 => 'IBM EBCDIC - Thai',
104
+ 20866 => 'Russian - KOI8-R',
105
+ 20871 => 'IBM EBCDIC - Icelandic',
106
+ 20880 => 'IBM EBCDIC - Cyrillic (Russian)',
107
+ 20905 => 'IBM EBCDIC - Turkish',
108
+ 20924 => 'IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)',
109
+ 20932 => 'JIS X 0208-1990 & 0121-1990',
110
+ 20936 => 'Simplified Chinese (GB2312)',
111
+ 21025 => 'IBM EBCDIC - Cyrillic (Serbian, Bulgarian)',
112
+ 21027 => '(deprecated)',
113
+ 21866 => 'Ukrainian (KOI8-U)',
114
+ 28591 => 'ISO 8859-1 Latin I',
115
+ 28592 => 'ISO 8859-2 Central Europe',
116
+ 28593 => 'ISO 8859-3 Latin 3',
117
+ 28594 => 'ISO 8859-4 Baltic',
118
+ 28595 => 'ISO 8859-5 Cyrillic',
119
+ 28596 => 'ISO 8859-6 Arabic',
120
+ 28597 => 'ISO 8859-7 Greek',
121
+ 28598 => 'ISO 8859-8 Hebrew',
122
+ 28599 => 'ISO 8859-9 Latin 5',
123
+ 28605 => 'ISO 8859-15 Latin 9',
124
+ 29001 => 'Europa 3',
125
+ 38598 => 'ISO 8859-8 Hebrew',
126
+ 50220 => 'ISO 2022 Japanese with no halfwidth Katakana',
127
+ 50221 => 'ISO 2022 Japanese with halfwidth Katakana',
128
+ 50222 => 'ISO 2022 Japanese JIS X 0201-1989',
129
+ 50225 => 'ISO 2022 Korean',
130
+ 50227 => 'ISO 2022 Simplified Chinese',
131
+ 50229 => 'ISO 2022 Traditional Chinese',
132
+ 50930 => 'Japanese (Katakana) Extended',
133
+ 50931 => 'US/Canada and Japanese',
134
+ 50933 => 'Korean Extended and Korean',
135
+ 50935 => 'Simplified Chinese Extended and Simplified Chinese',
136
+ 50936 => 'Simplified Chinese',
137
+ 50937 => 'US/Canada and Traditional Chinese',
138
+ 50939 => 'Japanese (Latin) Extended and Japanese',
139
+ 51932 => 'EUC - Japanese',
140
+ 51936 => 'EUC - Simplified Chinese',
141
+ 51949 => 'EUC - Korean',
142
+ 51950 => 'EUC - Traditional Chinese',
143
+ 52936 => 'HZ-GB2312 Simplified Chinese',
144
+ 54936 => 'Windows XP: GB18030 Simplified Chinese (4 Byte)',
145
+ 57002 => 'ISCII Devanagari',
146
+ 57003 => 'ISCII Bengali',
147
+ 57004 => 'ISCII Tamil',
148
+ 57005 => 'ISCII Telugu',
149
+ 57006 => 'ISCII Assamese',
150
+ 57007 => 'ISCII Oriya',
151
+ 57008 => 'ISCII Kannada',
152
+ 57009 => 'ISCII Malayalam',
153
+ 57010 => 'ISCII Gujarati',
154
+ 57011 => 'ISCII Punjabi',
155
+ 65000 => 'Unicode UTF-7',
156
+ 65001 => 'Unicode UTF-8'
157
+ }
158
+
159
+ LANG_NEUTRAL = 0x00
160
+ LANG_INVARIANT = 0x7f
161
+
162
+ LANG_AFRIKAANS = 0x36
163
+ LANG_ALBANIAN = 0x1c
164
+ LANG_ARABIC = 0x01
165
+ LANG_ARMENIAN = 0x2b
166
+ LANG_ASSAMESE = 0x4d
167
+ LANG_AZERI = 0x2c
168
+ LANG_BASQUE = 0x2d
169
+ LANG_BELARUSIAN = 0x23
170
+ LANG_BENGALI = 0x45
171
+ LANG_BOSNIAN = 0x1a
172
+ LANG_BULGARIAN = 0x02
173
+ LANG_CATALAN = 0x03
174
+ LANG_CHINESE = 0x04
175
+ LANG_CROATIAN = 0x1a
176
+ LANG_CZECH = 0x05
177
+ LANG_DANISH = 0x06
178
+ LANG_DIVEHI = 0x65
179
+ LANG_DUTCH = 0x13
180
+ LANG_ENGLISH = 0x09
181
+ LANG_ESTONIAN = 0x25
182
+ LANG_FAEROESE = 0x38
183
+ LANG_FARSI = 0x29
184
+ LANG_FINNISH = 0x0b
185
+ LANG_FRENCH = 0x0c
186
+ LANG_GALICIAN = 0x56
187
+ LANG_GEORGIAN = 0x37
188
+ LANG_GERMAN = 0x07
189
+ LANG_GREEK = 0x08
190
+ LANG_GUJARATI = 0x47
191
+ LANG_HEBREW = 0x0d
192
+ LANG_HINDI = 0x39
193
+ LANG_HUNGARIAN = 0x0e
194
+ LANG_ICELANDIC = 0x0f
195
+ LANG_INDONESIAN = 0x21
196
+ LANG_ITALIAN = 0x10
197
+ LANG_JAPANESE = 0x11
198
+ LANG_KANNADA = 0x4b
199
+ LANG_KASHMIRI = 0x60
200
+ LANG_KAZAK = 0x3f
201
+ LANG_KONKANI = 0x57
202
+ LANG_KOREAN = 0x12
203
+ LANG_KYRGYZ = 0x40
204
+ LANG_LATVIAN = 0x26
205
+ LANG_LITHUANIAN = 0x27
206
+ LANG_MACEDONIAN = 0x2f
207
+ LANG_MALAY = 0x3e
208
+ LANG_MALAYALAM = 0x4c
209
+ LANG_MALTESE = 0x3a
210
+ LANG_MANIPURI = 0x58
211
+ LANG_MAORI = 0x81
212
+ LANG_MARATHI = 0x4e
213
+ LANG_MONGOLIAN = 0x50
214
+ LANG_NEPALI = 0x61
215
+ LANG_NORWEGIAN = 0x14
216
+ LANG_ORIYA = 0x48
217
+ LANG_POLISH = 0x15
218
+ LANG_PORTUGUESE = 0x16
219
+ LANG_PUNJABI = 0x46
220
+ LANG_QUECHUA = 0x6b
221
+ LANG_ROMANIAN = 0x18
222
+ LANG_RUSSIAN = 0x19
223
+ LANG_SAMI = 0x3b
224
+ LANG_SANSKRIT = 0x4f
225
+ LANG_SERBIAN = 0x1a
226
+ LANG_SINDHI = 0x59
227
+ LANG_SLOVAK = 0x1b
228
+ LANG_SLOVENIAN = 0x24
229
+ LANG_SOTHO = 0x6c
230
+ LANG_SPANISH = 0x0a
231
+ LANG_SWAHILI = 0x41
232
+ LANG_SWEDISH = 0x1d
233
+ LANG_SYRIAC = 0x5a
234
+ LANG_TAMIL = 0x49
235
+ LANG_TATAR = 0x44
236
+ LANG_TELUGU = 0x4a
237
+ LANG_THAI = 0x1e
238
+ LANG_TSWANA = 0x32
239
+ LANG_TURKISH = 0x1f
240
+ LANG_UKRAINIAN = 0x22
241
+ LANG_URDU = 0x20
242
+ LANG_UZBEK = 0x43
243
+ LANG_VIETNAMESE = 0x2a
244
+ LANG_WELSH = 0x52
245
+ LANG_XHOSA = 0x34
246
+ LANG_ZULU = 0x35
247
+
248
+ SUBLANG_NEUTRAL = 0x00 # language neutral
249
+ SUBLANG_DEFAULT = 0x01 # user default
250
+ SUBLANG_SYS_DEFAULT = 0x02 # system default
251
+
252
+ SUBLANG_ARABIC_SAUDI_ARABIA = 0x01 # Arabic (Saudi Arabia)
253
+ SUBLANG_ARABIC_IRAQ = 0x02 # Arabic (Iraq)
254
+ SUBLANG_ARABIC_EGYPT = 0x03 # Arabic (Egypt)
255
+ SUBLANG_ARABIC_LIBYA = 0x04 # Arabic (Libya)
256
+ SUBLANG_ARABIC_ALGERIA = 0x05 # Arabic (Algeria)
257
+ SUBLANG_ARABIC_MOROCCO = 0x06 # Arabic (Morocco)
258
+ SUBLANG_ARABIC_TUNISIA = 0x07 # Arabic (Tunisia)
259
+ SUBLANG_ARABIC_OMAN = 0x08 # Arabic (Oman)
260
+ SUBLANG_ARABIC_YEMEN = 0x09 # Arabic (Yemen)
261
+ SUBLANG_ARABIC_SYRIA = 0x0a # Arabic (Syria)
262
+ SUBLANG_ARABIC_JORDAN = 0x0b # Arabic (Jordan)
263
+ SUBLANG_ARABIC_LEBANON = 0x0c # Arabic (Lebanon)
264
+ SUBLANG_ARABIC_KUWAIT = 0x0d # Arabic (Kuwait)
265
+ SUBLANG_ARABIC_UAE = 0x0e # Arabic (U.A.E)
266
+ SUBLANG_ARABIC_BAHRAIN = 0x0f # Arabic (Bahrain)
267
+ SUBLANG_ARABIC_QATAR = 0x10 # Arabic (Qatar)
268
+ SUBLANG_AZERI_LATIN = 0x01 # Azeri (Latin)
269
+ SUBLANG_AZERI_CYRILLIC = 0x02 # Azeri (Cyrillic)
270
+ SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 0x05 # Bosnian (Bosnia and Herzegovina - Latin)
271
+ SUBLANG_CHINESE_TRADITIONAL = 0x01 # Chinese (Taiwan)
272
+ SUBLANG_CHINESE_SIMPLIFIED = 0x02 # Chinese (PR China)
273
+ SUBLANG_CHINESE_HONGKONG = 0x03 # Chinese (Hong Kong S.A.R., P.R.C.)
274
+ SUBLANG_CHINESE_SINGAPORE = 0x04 # Chinese (Singapore)
275
+ SUBLANG_CHINESE_MACAU = 0x05 # Chinese (Macau S.A.R.)
276
+ SUBLANG_CROATIAN_CROATIA = 0x01 # Croatian (Croatia)
277
+ SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 0x04 # Croatian (Bosnia and Herzegovina - Latin)
278
+ SUBLANG_DUTCH = 0x01 # Dutch
279
+ SUBLANG_DUTCH_BELGIAN = 0x02 # Dutch (Belgian)
280
+ SUBLANG_ENGLISH_US = 0x01 # English (USA)
281
+ SUBLANG_ENGLISH_UK = 0x02 # English (UK)
282
+ SUBLANG_ENGLISH_AUS = 0x03 # English (Australian)
283
+ SUBLANG_ENGLISH_CAN = 0x04 # English (Canadian)
284
+ SUBLANG_ENGLISH_NZ = 0x05 # English (New Zealand)
285
+ SUBLANG_ENGLISH_EIRE = 0x06 # English (Irish)
286
+ SUBLANG_ENGLISH_SOUTH_AFRICA = 0x07 # English (South Africa)
287
+ SUBLANG_ENGLISH_JAMAICA = 0x08 # English (Jamaica)
288
+ SUBLANG_ENGLISH_CARIBBEAN = 0x09 # English (Caribbean)
289
+ SUBLANG_ENGLISH_BELIZE = 0x0a # English (Belize)
290
+ SUBLANG_ENGLISH_TRINIDAD = 0x0b # English (Trinidad)
291
+ SUBLANG_ENGLISH_ZIMBABWE = 0x0c # English (Zimbabwe)
292
+ SUBLANG_ENGLISH_PHILIPPINES = 0x0d # English (Philippines)
293
+ SUBLANG_FRENCH = 0x01 # French
294
+ SUBLANG_FRENCH_BELGIAN = 0x02 # French (Belgian)
295
+ SUBLANG_FRENCH_CANADIAN = 0x03 # French (Canadian)
296
+ SUBLANG_FRENCH_SWISS = 0x04 # French (Swiss)
297
+ SUBLANG_FRENCH_LUXEMBOURG = 0x05 # French (Luxembourg)
298
+ SUBLANG_FRENCH_MONACO = 0x06 # French (Monaco)
299
+ SUBLANG_GERMAN = 0x01 # German
300
+ SUBLANG_GERMAN_SWISS = 0x02 # German (Swiss)
301
+ SUBLANG_GERMAN_AUSTRIAN = 0x03 # German (Austrian)
302
+ SUBLANG_GERMAN_LUXEMBOURG = 0x04 # German (Luxembourg)
303
+ SUBLANG_GERMAN_LIECHTENSTEIN = 0x05 # German (Liechtenstein)
304
+ SUBLANG_ITALIAN = 0x01 # Italian
305
+ SUBLANG_ITALIAN_SWISS = 0x02 # Italian (Swiss)
306
+ SUBLANG_KASHMIRI_SASIA = 0x02 # Kashmiri (South Asia)
307
+ SUBLANG_KASHMIRI_INDIA = 0x02 # For app compatibility only
308
+ SUBLANG_KOREAN = 0x01 # Korean (Extended Wansung)
309
+ SUBLANG_LITHUANIAN = 0x01 # Lithuanian
310
+ SUBLANG_MALAY_MALAYSIA = 0x01 # Malay (Malaysia)
311
+ SUBLANG_MALAY_BRUNEI_DARUSSALAM = 0x02 # Malay (Brunei Darussalam)
312
+ SUBLANG_NEPALI_INDIA = 0x02 # Nepali (India)
313
+ SUBLANG_NORWEGIAN_BOKMAL = 0x01 # Norwegian (Bokmal)
314
+ SUBLANG_NORWEGIAN_NYNORSK = 0x02 # Norwegian (Nynorsk)
315
+ SUBLANG_PORTUGUESE = 0x02 # Portuguese
316
+ SUBLANG_PORTUGUESE_BRAZILIAN = 0x01 # Portuguese (Brazilian)
317
+ SUBLANG_QUECHUA_BOLIVIA = 0x01 # Quechua (Bolivia)
318
+ SUBLANG_QUECHUA_ECUADOR = 0x02 # Quechua (Ecuador)
319
+ SUBLANG_QUECHUA_PERU = 0x03 # Quechua (Peru)
320
+ SUBLANG_SAMI_NORTHERN_NORWAY = 0x01 # Northern Sami (Norway)
321
+ SUBLANG_SAMI_NORTHERN_SWEDEN = 0x02 # Northern Sami (Sweden)
322
+ SUBLANG_SAMI_NORTHERN_FINLAND = 0x03 # Northern Sami (Finland)
323
+ SUBLANG_SAMI_LULE_NORWAY = 0x04 # Lule Sami (Norway)
324
+ SUBLANG_SAMI_LULE_SWEDEN = 0x05 # Lule Sami (Sweden)
325
+ SUBLANG_SAMI_SOUTHERN_NORWAY = 0x06 # Southern Sami (Norway)
326
+ SUBLANG_SAMI_SOUTHERN_SWEDEN = 0x07 # Southern Sami (Sweden)
327
+ SUBLANG_SAMI_SKOLT_FINLAND = 0x08 # Skolt Sami (Finland)
328
+ SUBLANG_SAMI_INARI_FINLAND = 0x09 # Inari Sami (Finland)
329
+ SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 0x06 # Serbian (Bosnia and Herzegovina - Latin)
330
+ SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 0x07 # Serbian (Bosnia and Herzegovina - Cyrillic)
331
+ SUBLANG_SERBIAN_LATIN = 0x02 # Serbian (Latin)
332
+ SUBLANG_SERBIAN_CYRILLIC = 0x03 # Serbian (Cyrillic)
333
+ SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA = 0x01 # Northern Sotho (South Africa)
334
+ SUBLANG_SPANISH = 0x01 # Spanish (Castilian)
335
+ SUBLANG_SPANISH_MEXICAN = 0x02 # Spanish (Mexican)
336
+ SUBLANG_SPANISH_MODERN = 0x03 # Spanish (Modern)
337
+ SUBLANG_SPANISH_GUATEMALA = 0x04 # Spanish (Guatemala)
338
+ SUBLANG_SPANISH_COSTA_RICA = 0x05 # Spanish (Costa Rica)
339
+ SUBLANG_SPANISH_PANAMA = 0x06 # Spanish (Panama)
340
+ SUBLANG_SPANISH_DOMINICAN_REPUBLIC = 0x07 # Spanish (Dominican Republic)
341
+ SUBLANG_SPANISH_VENEZUELA = 0x08 # Spanish (Venezuela)
342
+ SUBLANG_SPANISH_COLOMBIA = 0x09 # Spanish (Colombia)
343
+ SUBLANG_SPANISH_PERU = 0x0a # Spanish (Peru)
344
+ SUBLANG_SPANISH_ARGENTINA = 0x0b # Spanish (Argentina)
345
+ SUBLANG_SPANISH_ECUADOR = 0x0c # Spanish (Ecuador)
346
+ SUBLANG_SPANISH_CHILE = 0x0d # Spanish (Chile)
347
+ SUBLANG_SPANISH_URUGUAY = 0x0e # Spanish (Uruguay)
348
+ SUBLANG_SPANISH_PARAGUAY = 0x0f # Spanish (Paraguay)
349
+ SUBLANG_SPANISH_BOLIVIA = 0x10 # Spanish (Bolivia)
350
+ SUBLANG_SPANISH_EL_SALVADOR = 0x11 # Spanish (El Salvador)
351
+ SUBLANG_SPANISH_HONDURAS = 0x12 # Spanish (Honduras)
352
+ SUBLANG_SPANISH_NICARAGUA = 0x13 # Spanish (Nicaragua)
353
+ SUBLANG_SPANISH_PUERTO_RICO = 0x14 # Spanish (Puerto Rico)
354
+ SUBLANG_SWEDISH = 0x01 # Swedish
355
+ SUBLANG_SWEDISH_FINLAND = 0x02 # Swedish (Finland)
356
+ SUBLANG_URDU_PAKISTAN = 0x01 # Urdu (Pakistan)
357
+ SUBLANG_URDU_INDIA = 0x02 # Urdu (India)
358
+ SUBLANG_UZBEK_LATIN = 0x01 # Uzbek (Latin)
359
+ SUBLANG_UZBEK_CYRILLIC = 0x02 # Uzbek (Cyrillic)
360
+
361
+ LOCALE_NOUSEROVERRIDE = 0x80000000
362
+ LOCALE_USE_CP_ACP = 0x40000000
363
+ LOCALE_RETURN_NUMBER = 0x20000000
364
+
365
+ LOCALE_ILANGUAGE = 0x00000001
366
+ LOCALE_SLANGUAGE = 0x00000002
367
+ LOCALE_SENGLANGUAGE = 0x00001001
368
+ LOCALE_SABBREVLANGNAME = 0x00000003
369
+ LOCALE_SNATIVELANGNAME = 0x00000004
370
+
371
+ LOCALE_ICOUNTRY = 0x00000005
372
+ LOCALE_SCOUNTRY = 0x00000006
373
+ LOCALE_SENGCOUNTRY = 0x00001002
374
+ LOCALE_SABBREVCTRYNAME = 0x00000007
375
+ LOCALE_SNATIVECTRYNAME = 0x00000008
376
+
377
+ LOCALE_IDEFAULTLANGUAGE = 0x00000009 # default language id
378
+ LOCALE_IDEFAULTCOUNTRY = 0x0000000A # default country code
379
+ LOCALE_IDEFAULTCODEPAGE = 0x0000000B # default oem code page
380
+ LOCALE_IDEFAULTANSICODEPAGE = 0x00001004 # default ansi code page
381
+ LOCALE_IDEFAULTMACCODEPAGE = 0x00001011 # default mac code page
382
+
383
+ LOCALE_SLIST = 0x0000000C # list item separator
384
+ LOCALE_IMEASURE = 0x0000000D # 0 = metric, 1 = US
385
+
386
+ LOCALE_SDECIMAL = 0x0000000E # decimal separator
387
+ LOCALE_STHOUSAND = 0x0000000F # thousand separator
388
+ LOCALE_SGROUPING = 0x00000010 # digit grouping
389
+ LOCALE_IDIGITS = 0x00000011 # number of fractional digits
390
+ LOCALE_ILZERO = 0x00000012 # leading zeros for decimal
391
+ LOCALE_INEGNUMBER = 0x00001010 # negative number mode
392
+ LOCALE_SNATIVEDIGITS = 0x00000013 # native ascii 0-9
393
+
394
+ LOCALE_SCURRENCY = 0x00000014 # local monetary symbol
395
+ LOCALE_SINTLSYMBOL = 0x00000015 # intl monetary symbol
396
+ LOCALE_SMONDECIMALSEP = 0x00000016 # monetary decimal separator
397
+ LOCALE_SMONTHOUSANDSEP = 0x00000017 # monetary thousand separator
398
+ LOCALE_SMONGROUPING = 0x00000018 # monetary grouping
399
+ LOCALE_ICURRDIGITS = 0x00000019 # # local monetary digits
400
+ LOCALE_IINTLCURRDIGITS = 0x0000001A # # intl monetary digits
401
+ LOCALE_ICURRENCY = 0x0000001B # positive currency mode
402
+ LOCALE_INEGCURR = 0x0000001C # negative currency mode
403
+
404
+ LOCALE_SDATE = 0x0000001D # date separator
405
+ LOCALE_STIME = 0x0000001E # time separator
406
+ LOCALE_SSHORTDATE = 0x0000001F # short date format string
407
+ LOCALE_SLONGDATE = 0x00000020 # long date format string
408
+ LOCALE_STIMEFORMAT = 0x00001003 # time format string
409
+ LOCALE_IDATE = 0x00000021 # short date format ordering
410
+ LOCALE_ILDATE = 0x00000022 # long date format ordering
411
+ LOCALE_ITIME = 0x00000023 # time format specifier
412
+ LOCALE_ITIMEMARKPOSN = 0x00001005 # time marker position
413
+ LOCALE_ICENTURY = 0x00000024 # century format specifier (short date)
414
+ LOCALE_ITLZERO = 0x00000025 # leading zeros in time field
415
+ LOCALE_IDAYLZERO = 0x00000026 # leading zeros in day field (short date)
416
+ LOCALE_IMONLZERO = 0x00000027 # leading zeros in month field (short date)
417
+ LOCALE_S1159 = 0x00000028 # AM designator
418
+ LOCALE_S2359 = 0x00000029 # PM designator
419
+
420
+ LOCALE_ICALENDARTYPE = 0x00001009 # type of calendar specifier
421
+ LOCALE_IOPTIONALCALENDAR = 0x0000100B # additional calendar types specifier
422
+ LOCALE_IFIRSTDAYOFWEEK = 0x0000100C # first day of week specifier
423
+ LOCALE_IFIRSTWEEKOFYEAR = 0x0000100D # first week of year specifier
424
+
425
+ LOCALE_SDAYNAME1 = 0x0000002A # long name for Monday
426
+ LOCALE_SDAYNAME2 = 0x0000002B # long name for Tuesday
427
+ LOCALE_SDAYNAME3 = 0x0000002C # long name for Wednesday
428
+ LOCALE_SDAYNAME4 = 0x0000002D # long name for Thursday
429
+ LOCALE_SDAYNAME5 = 0x0000002E # long name for Friday
430
+ LOCALE_SDAYNAME6 = 0x0000002F # long name for Saturday
431
+ LOCALE_SDAYNAME7 = 0x00000030 # long name for Sunday
432
+ LOCALE_SABBREVDAYNAME1 = 0x00000031 # abbreviated name for Monday
433
+ LOCALE_SABBREVDAYNAME2 = 0x00000032 # abbreviated name for Tuesday
434
+ LOCALE_SABBREVDAYNAME3 = 0x00000033 # abbreviated name for Wednesday
435
+ LOCALE_SABBREVDAYNAME4 = 0x00000034 # abbreviated name for Thursday
436
+ LOCALE_SABBREVDAYNAME5 = 0x00000035 # abbreviated name for Friday
437
+ LOCALE_SABBREVDAYNAME6 = 0x00000036 # abbreviated name for Saturday
438
+ LOCALE_SABBREVDAYNAME7 = 0x00000037 # abbreviated name for Sunday
439
+ LOCALE_SMONTHNAME1 = 0x00000038 # long name for January
440
+ LOCALE_SMONTHNAME2 = 0x00000039 # long name for February
441
+ LOCALE_SMONTHNAME3 = 0x0000003A # long name for March
442
+ LOCALE_SMONTHNAME4 = 0x0000003B # long name for April
443
+ LOCALE_SMONTHNAME5 = 0x0000003C # long name for May
444
+ LOCALE_SMONTHNAME6 = 0x0000003D # long name for June
445
+ LOCALE_SMONTHNAME7 = 0x0000003E # long name for July
446
+ LOCALE_SMONTHNAME8 = 0x0000003F # long name for August
447
+ LOCALE_SMONTHNAME9 = 0x00000040 # long name for September
448
+ LOCALE_SMONTHNAME10 = 0x00000041 # long name for October
449
+ LOCALE_SMONTHNAME11 = 0x00000042 # long name for November
450
+ LOCALE_SMONTHNAME12 = 0x00000043 # long name for December
451
+ LOCALE_SMONTHNAME13 = 0x0000100E # long name for 13th month (if exists)
452
+ LOCALE_SABBREVMONTHNAME1 = 0x00000044 # abbreviated name for January
453
+ LOCALE_SABBREVMONTHNAME2 = 0x00000045 # abbreviated name for February
454
+ LOCALE_SABBREVMONTHNAME3 = 0x00000046 # abbreviated name for March
455
+ LOCALE_SABBREVMONTHNAME4 = 0x00000047 # abbreviated name for April
456
+ LOCALE_SABBREVMONTHNAME5 = 0x00000048 # abbreviated name for May
457
+ LOCALE_SABBREVMONTHNAME6 = 0x00000049 # abbreviated name for June
458
+ LOCALE_SABBREVMONTHNAME7 = 0x0000004A # abbreviated name for July
459
+ LOCALE_SABBREVMONTHNAME8 = 0x0000004B # abbreviated name for August
460
+ LOCALE_SABBREVMONTHNAME9 = 0x0000004C # abbreviated name for September
461
+ LOCALE_SABBREVMONTHNAME10 = 0x0000004D # abbreviated name for October
462
+ LOCALE_SABBREVMONTHNAME11 = 0x0000004E # abbreviated name for November
463
+ LOCALE_SABBREVMONTHNAME12 = 0x0000004F # abbreviated name for December
464
+ LOCALE_SABBREVMONTHNAME13 = 0x0000100F # abbreviated name for 13th month (if exists)
465
+
466
+ LOCALE_SPOSITIVESIGN = 0x00000050 # positive sign
467
+ LOCALE_SNEGATIVESIGN = 0x00000051 # negative sign
468
+ LOCALE_IPOSSIGNPOSN = 0x00000052 # positive sign position
469
+ LOCALE_INEGSIGNPOSN = 0x00000053 # negative sign position
470
+ LOCALE_IPOSSYMPRECEDES = 0x00000054 # mon sym precedes pos amt
471
+ LOCALE_IPOSSEPBYSPACE = 0x00000055 # mon sym sep by space from pos amt
472
+ LOCALE_INEGSYMPRECEDES = 0x00000056 # mon sym precedes neg amt
473
+ LOCALE_INEGSEPBYSPACE = 0x00000057 # mon sym sep by space from neg amt
474
+
475
+ LOCALE_FONTSIGNATURE = 0x00000058 # font signature
476
+ LOCALE_SISO639LANGNAME = 0x00000059 # ISO abbreviated language name
477
+ LOCALE_SISO3166CTRYNAME = 0x0000005A # ISO abbreviated country name
478
+
479
+ LOCALE_IDEFAULTEBCDICCODEPAGE = 0x00001012 # default ebcdic code page
480
+ LOCALE_IPAPERSIZE = 0x0000100A # 1 = letter, 5 = legal, 8 = a3, 9 = a4
481
+ LOCALE_SENGCURRNAME = 0x00001007 # english name of currency
482
+ LOCALE_SNATIVECURRNAME = 0x00001008 # native name of currency
483
+ LOCALE_SYEARMONTH = 0x00001006 # year month format string
484
+ LOCALE_SSORTNAME = 0x00001013 # sort name
485
+ LOCALE_IDIGITSUBSTITUTION = 0x00001014 # 0 = context, 1 = none, 2 = national
486
+
487
+ TIME_NOMINUTESORSECONDS = 0x00000001 # do not use minutes or seconds
488
+ TIME_NOSECONDS = 0x00000002 # do not use seconds
489
+ TIME_NOTIMEMARKER = 0x00000004 # do not use time marker
490
+ TIME_FORCE24HOURFORMAT = 0x00000008 # always use 24 hour format
491
+
492
+ DATE_SHORTDATE = 0x00000001 # use short date picture
493
+ DATE_LONGDATE = 0x00000002 # use long date picture
494
+ DATE_USE_ALT_CALENDAR = 0x00000004 # use alternate calendar (if any)
495
+
496
+ DATE_YEARMONTH = 0x00000008 # use year month picture
497
+ DATE_LTRREADING = 0x00000010 # add marks for left to right reading order layout
498
+ DATE_RTLREADING = 0x00000020 # add marks for right to left reading order layout
499
+
500
+ SORT_DEFAULT = 0x0 # sorting default
501
+
502
+ SORT_JAPANESE_XJIS = 0x0 # Japanese XJIS order
503
+ SORT_JAPANESE_UNICODE = 0x1 # Japanese Unicode order
504
+
505
+ SORT_CHINESE_BIG5 = 0x0 # Chinese BIG5 order
506
+ SORT_CHINESE_PRCP = 0x0 # PRC Chinese Phonetic order
507
+ SORT_CHINESE_UNICODE = 0x1 # Chinese Unicode order
508
+ SORT_CHINESE_PRC = 0x2 # PRC Chinese Stroke Count order
509
+ SORT_CHINESE_BOPOMOFO = 0x3 # Traditional Chinese Bopomofo order
510
+
511
+ SORT_KOREAN_KSC = 0x0 # Korean KSC order
512
+ SORT_KOREAN_UNICODE = 0x1 # Korean Unicode order
513
+
514
+ SORT_GERMAN_PHONE_BOOK = 0x1 # German Phone Book order
515
+
516
+ SORT_HUNGARIAN_DEFAULT = 0x0 # Hungarian Default order
517
+ SORT_HUNGARIAN_TECHNICAL = 0x1 # Hungarian Technical order
518
+
519
+ SORT_GEORGIAN_TRADITIONAL = 0x0 # Georgian Traditional order
520
+ SORT_GEORGIAN_MODERN = 0x1 # Georgian Modern order
521
+
522
+ LANG_SYSTEM_DEFAULT = 2
523
+ LANG_USER_DEFAULT = 1
524
+ LOCALE_SYSTEM_DEFAULT = 131072
525
+ LOCALE_USER_DEFAULT = 65536
526
+
527
+ GetACP = Win32API.new('kernel32', 'GetACP', 'V', 'I')
528
+ GetDateFormat = Win32API.new('kernel32', 'GetDateFormat', 'LLPPPI', 'I')
529
+
530
+ def GetACP()
531
+ GetACP.call
532
+ end
533
+
534
+ def GetDateFormat(locale, flags, date, format, datestr, size)
535
+ GetDateFormat.call(locale, flags, date, format, datestr, size)
536
+ end
537
+
538
+ # Convenience method for converting the results of the GetACP()
539
+ # function to a human readable string.
540
+ #
541
+ def get_acp_string
542
+ CODE_PAGE[GetACP.call]
543
+ end
544
+
545
+ # Equivalent of the MAKELCID macro in WinNT.h
546
+ #
547
+ def MAKELCID(srtid, lgid)
548
+ srtid << 16 | lgid
549
+ end
550
+
551
+ # Equivalent of the MAKELANGID macro in WinNT.h
552
+ #
553
+ def MAKELANGID(p, s)
554
+ s << 10 | p
555
+ end
556
+ end
557
+ end
data/lib/windows/path.rb CHANGED
@@ -1,79 +1,3 @@
1
- ######################################################################
2
- # path.rb
3
- #
4
- # Defines the following functions:
5
- #
6
- # PathAddBackslash()
7
- # PathAddExtension()
8
- # PathAppend()
9
- # PathBuildRoot()
10
- # PathCanonicalize()
11
- # PathCombine()
12
- # PathCommonPrefix()
13
- # PathCompactPath()
14
- # PathCompactPathEx()
15
- # PathCreateFromUrl()
16
- # PathFileExists()
17
- # PathFindExtension()
18
- # PathFindFileName()
19
- # PathFindNextComponent()
20
- # PathFindOnPath()
21
- # PathFindSuffixArray()
22
- # PathGetArgs()
23
- # PathGetCharType()
24
- # PathGetDriveNumber()
25
- # PathIsContentType()
26
- # PathIsDirectory()
27
- # PathIsDirectoryEmpty()
28
- # PathIsFileSpec()
29
- # PathIsHTMLFile() - BROKEN
30
- # PathIsLFNFileSpec()
31
- # PathIsNetworkPath()
32
- # PathIsPrefix()
33
- # PathIsRelative()
34
- # PathIsRoot()
35
- # PathIsSameRoot()
36
- # PathIsSystemFolder()
37
- # PathIsUNC()
38
- # PathIsUNCServer()
39
- # PathIsUNCServerShare()
40
- # PathIsURL()
41
- # PathMakePretty()
42
- # PathMakeSystemFolder()
43
- # PathMatchSpec()
44
- # PathParseIconLocation()
45
- # PathQuoteSpaces()
46
- # PathRelativePathTo()
47
- # PathRemoveArgs()
48
- # PathRemoveBackslash()
49
- # PathRemoveBlanks()
50
- # PathRemoveExtension()
51
- # PathRemoveFileSpec()
52
- # PathRenameExtension()
53
- # PathSearchAndQualify()
54
- # PathSetDlgItemPath()
55
- # PathSkipRoot()
56
- # PathStripPath()
57
- # PathStripToRoot()
58
- # PathUndecorate()
59
- # PathUnExpandEnvStrings()
60
- # PathUnmakeSystemFolder()
61
- # PathUnquoteSpaces()
62
- #
63
- # Defines the following constants:
64
- #
65
- # GCT_INVALID
66
- # GCT_LFNCHAR
67
- # GCT_SHORTCHAR
68
- # GCT_WILD
69
- # GCT_SEPARATOR
70
- #
71
- # Notes:
72
- #
73
- # The PathIsHTMLFile() function does not appear to be exported in the
74
- # shlwapi.dll file that is currently (March, 2006) shipped with the
75
- # free compiler libs from Microsoft.
76
- ######################################################################
77
1
  require 'Win32API'
78
2
 
79
3
  module Windows
@@ -160,7 +84,7 @@ module Windows
160
84
  end
161
85
 
162
86
  def PathCanonicalize(dst, src)
163
- PathCanonicalize.call(dst, src)
87
+ PathCanonicalize.call(dst, src) > 0
164
88
  end
165
89
 
166
90
  def PathCombine(dest, dir, file)
@@ -53,6 +53,7 @@ module Windows
53
53
 
54
54
  CreateProcess = Win32API.new('kernel32', 'CreateProcess', 'LPLLLLLLPP', 'I')
55
55
  CreateRemoteThread = Win32API.new('kernel32', 'CreateRemoteThread', 'LPLLPLP', 'L')
56
+ CreateThread = Win32API.new('kernel32', 'CreateThread', 'PLPPLP', 'L')
56
57
  ExitProcess = Win32API.new('kernel32', 'ExitProcess', 'L', 'V')
57
58
  GetCommandLine = Win32API.new('kernel32', 'GetCommandLine', 'V', 'P')
58
59
  GetCurrentProcess = Win32API.new('kernel32', 'GetCurrentProcess', 'V', 'L')
@@ -80,6 +81,10 @@ module Windows
80
81
  CreateRemoteThread.call(handle, tattr, size, start, param, flags, tid)
81
82
  end
82
83
 
84
+ def CreateThread(attr, size, addr, param, flags, id)
85
+ CreateThread.call(attr, size, addr, param, flags, id)
86
+ end
87
+
83
88
  def ExitProcess(exit_code)
84
89
  ExitProcess.call(exit_code)
85
90
  end
@@ -0,0 +1,226 @@
1
+ require 'windows/file'
2
+
3
+ module Windows
4
+ module Registry
5
+ include Windows::File
6
+
7
+ HKEY_CLASSES_ROOT = 0x80000000
8
+ KEY_CURRENT_USER = 0x80000001
9
+ HKEY_LOCAL_MACHINE = 0x80000002
10
+ HKEY_USERS = 0x80000003
11
+ HKEY_PERFORMANCE_DATA = 0x80000004
12
+ HKEY_PERFORMANCE_TEXT = 0x80000050
13
+ HKEY_PERFORMANCE_NLSTEXT = 0x80000060
14
+ HKEY_CURRENT_CONFIG = 0x80000005
15
+ HKEY_DYN_DATA = 0x80000006
16
+
17
+ KEY_QUERY_VALUE = 0x0001
18
+ KEY_SET_VALUE = 0x0002
19
+ KEY_CREATE_SUB_KEY = 0x0004
20
+ KEY_ENUMERATE_SUB_KEYS = 0x0008
21
+ KEY_NOTIFY = 0x0010
22
+ KEY_CREATE_LINK = 0x0020
23
+ KEY_WOW64_32KEY = 0x0200
24
+ KEY_WOW64_64KEY = 0x0100
25
+ KEY_WOW64_RES = 0x0300
26
+
27
+ KEY_READ = (STANDARD_RIGHTS_READ|KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|
28
+ KEY_NOTIFY) & (~SYNCHRONIZE)
29
+
30
+ KEY_WRITE = (STANDARD_RIGHTS_WRITE|KEY_SET_VALUE|
31
+ KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)
32
+
33
+ KEY_EXECUTE = KEY_READ & (~SYNCHRONIZE)
34
+
35
+ KEY_ALL_ACCESS = (STANDARD_RIGHTS_ALL|KEY_QUERY_VALUE|KEY_SET_VALUE|
36
+ KEY_CREATE_SUB_KEY|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY|
37
+ KEY_CREATE_LINK) & (~SYNCHRONIZE)
38
+
39
+ REG_OPTION_RESERVED = 0
40
+ REG_OPTION_NON_VOLATILE = 0
41
+ REG_OPTION_VOLATILE = 1
42
+ REG_OPTION_CREATE_LINK = 2
43
+ REG_OPTION_BACKUP_RESTORE = 4
44
+ REG_OPTION_OPEN_LINK = 8
45
+
46
+ REG_LEGAL_OPTION = REG_OPTION_RESERVED|REG_OPTION_NON_VOLATILE|
47
+ REG_OPTION_VOLATILE|REG_OPTION_CREATE_LINK|REG_OPTION_BACKUP_RESTORE|
48
+ REG_OPTION_OPEN_LINK
49
+
50
+ REG_CREATED_NEW_KEY = 1
51
+ REG_OPENED_EXISTING_KEY = 2
52
+
53
+ REG_STANDARD_FORMAT = 1
54
+ REG_LATEST_FORMAT = 2
55
+ REG_NO_COMPRESSION = 4
56
+
57
+ REG_WHOLE_HIVE_VOLATILE = 1
58
+ REG_REFRESH_HIVE = 2
59
+ REG_NO_LAZY_FLUSH = 4
60
+ REG_FORCE_RESTORE = 8
61
+
62
+ REG_FORCE_UNLOAD = 1
63
+
64
+ REG_NOTIFY_CHANGE_NAME = 1
65
+ REG_NOTIFY_CHANGE_ATTRIBUTES = 2
66
+ REG_NOTIFY_CHANGE_LAST_SET = 4
67
+ REG_NOTIFY_CHANGE_SECURITY = 8
68
+
69
+ REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME|
70
+ REG_NOTIFY_CHANGE_ATTRIBUTES|REG_NOTIFY_CHANGE_LAST_SET|
71
+ REG_NOTIFY_CHANGE_SECURITY
72
+
73
+ REG_NONE = 0
74
+ REG_SZ = 1
75
+ REG_EXPAND_SZ = 2
76
+ REG_BINARY = 3
77
+ REG_DWORD = 4
78
+ REG_DWORD_LITTLE_ENDIAN = 4
79
+ REG_DWORD_BIG_ENDIAN = 5
80
+ REG_LINK = 6
81
+ REG_MULTI_SZ = 7
82
+ REG_RESOURCE_LIST = 8
83
+ REG_FULL_RESOURCE_DESCRIPTOR = 9
84
+ REG_RESOURCE_REQUIREMENTS_LIST = 10
85
+ REG_QWORD = 11
86
+ REG_QWORD_LITTLE_ENDIAN = 11
87
+
88
+ RegCloseKey = Win32API.new('advapi32', 'RegCloseKey', 'L', 'L')
89
+ RegConnectRegistry = Win32API.new('advapi32', 'RegConnectRegistry', 'PLP', 'L')
90
+ RegCreateKey = Win32API.new('advapi32', 'RegCreateKey', 'LPP', 'L')
91
+ RegCreateKeyEx = Win32API.new('advapi32', 'RegCreateKeyEx', 'LPLPLLPPP', 'L')
92
+ RegDeleteKey = Win32API.new('advapi32', 'RegDeleteKey', 'LP', 'L')
93
+ RegDeleteValue = Win32API.new('advapi32', 'RegDeleteValue', 'LP', 'L')
94
+ RegDisablePredefinedCache = Win32API.new('advapi32', 'RegDisablePredefinedCache', 'V', 'L')
95
+ RegEnumKey = Win32API.new('advapi32', 'RegEnumKey', 'LLPL', 'L')
96
+ RegEnumKeyEx = Win32API.new('advapi32', 'RegEnumKeyEx', 'LLPPPPP', 'L')
97
+ RegEnumValue = Win32API.new('advapi32', 'RegEnumValue', 'LLPPPPPP', 'L')
98
+ RegFlushKey = Win32API.new('advapi32', 'RegFlushKey', 'L', 'L')
99
+ RegLoadKey = Win32API.new('advapi32', 'RegLoadKey', 'LPP', 'L')
100
+ RegNotifyChangeKeyValue = Win32API.new('advapi32', 'RegNotifyChangeKeyValue', 'LILLI', 'L')
101
+ RegOpenCurrentUser = Win32API.new('advapi32', 'RegOpenCurrentUser', 'LP', 'L')
102
+ RegOpenKey = Win32API.new('advapi32', 'RegOpenKey', 'LPP', 'L')
103
+ RegOpenKeyEx = Win32API.new('advapi32', 'RegOpenKeyEx', 'LPLLP', 'L')
104
+ RegOpenUserClassesRoot = Win32API.new('advapi32', 'RegOpenUserClassesRoot', 'LLLP', 'L')
105
+ RegOverridePredefKey = Win32API.new('advapi32', 'RegOverridePredefKey', 'LL', 'L')
106
+ RegQueryInfoKey = Win32API.new('advapi32', 'RegQueryInfoKey', 'LPPPPPPPPPPP', 'L')
107
+ RegQueryMultipleValues = Win32API.new('advapi32', 'RegQueryMultipleValues', 'LPLPP', 'L')
108
+ RegQueryValueEx = Win32API.new('advapi32', 'RegQueryValueEx', 'LPPPPP', 'L')
109
+ RegReplaceKey = Win32API.new('advapi32', 'RegReplaceKey', 'LPPP', 'L')
110
+ RegRestoreKey = Win32API.new('advapi32', 'RegRestoreKey', 'LPL', 'L')
111
+ RegSaveKey = Win32API.new('advapi32', 'RegSaveKey', 'LPP', 'L')
112
+ RegSaveKeyEx = Win32API.new('advapi32', 'RegSaveKeyEx', 'LPPL', 'L')
113
+ RegSetValueEx = Win32API.new('advapi32', 'RegSetValueEx', 'LPLLPL', 'L')
114
+ RegUnLoadKey = Win32API.new('advapi32', 'RegUnLoadKey', 'LP', 'L')
115
+
116
+ def RegCloseKey(key)
117
+ RegCloseKey.call(key)
118
+ end
119
+
120
+ def RegConnectRegistry(machine, key, result)
121
+ RegConnectRegistry.call(machine, key, result)
122
+ end
123
+
124
+ def RegCreateKey(key, subkey, result)
125
+ RegCreateKey.call(key, subkey, result)
126
+ end
127
+
128
+ def RegCreateKeyEx(key, subkey, res, klass, opt, sam, sec, result, disp)
129
+ RegCreateKeyEx.call(key, subkey, res, klass, opt, sam, sec, result, disp)
130
+ end
131
+
132
+ def RegDeleteKey(key, subkey)
133
+ RegDeleteKey.call(key, subkey)
134
+ end
135
+
136
+ def RegDeleteValue(key, value)
137
+ RegDeleteValue.call(key, value)
138
+ end
139
+
140
+ def RegDisablePredefinedCache()
141
+ RegDisablePredefinedCache.call()
142
+ end
143
+
144
+ def RegEnumKey(key, index, name, size)
145
+ RegEnumKey.call(key, index, name, size)
146
+ end
147
+
148
+ def RegEnumKeyEx(key, index, name, size, res, klass, ksize, time)
149
+ RegEnumKeyEx.call(key, index, name, size, res, klass, ksize, time)
150
+ end
151
+
152
+ def RegEnumValue(key, index, value, size, res, type, data, dsize)
153
+ RegEnumValue.call(key, index, value, size, res, type, data, dsize)
154
+ end
155
+
156
+ def RegOpenKeyEx(key, subkey, options, sam, result)
157
+ RegOpenKeyEx.call(key, subkey, options, sam, result)
158
+ end
159
+
160
+ def RegFlushKey(key)
161
+ RegFlushKey.call(key)
162
+ end
163
+
164
+ def RegLoadKey(key, subkey, file)
165
+ RegLoadKey.call(key, subkey, file)
166
+ end
167
+
168
+ def RegNotifyChangeKeyValue(key, subtree, filter, event, async)
169
+ RegNotifyChangeKeyValue.call(key, subtree, filter, event, async)
170
+ end
171
+
172
+ def RegOpenCurrentUser(sam, result)
173
+ RegOpenCurrentUser.call(sam, result)
174
+ end
175
+
176
+ def RegOpenKeyEx(key, subkey, options, sam, result)
177
+ RegOpenKeyEx.call(key, subkey, options, sam, result)
178
+ end
179
+
180
+ def RegOpenUserClassesRoot(token, options, sam, result)
181
+ RegOpenUserClassesRoot.call(token, options, sam, result)
182
+ end
183
+
184
+ def RegOverridePredefKey(key, new_key)
185
+ RegOverridePredefKey.call(key, new_key)
186
+ end
187
+
188
+ def RegQueryInfoKey(key, klass, ksize, res, subkeys, maxkey, maxklass,
189
+ values, maxname, maxvalue, sec, time)
190
+ RegQueryInfoKey.call(key, klass, ksize, res, subkeys, maxkey, maxklass,
191
+ values, maxname, maxvalue, sec, time)
192
+ end
193
+
194
+ def RegQueryMultipleValues(key, val_list, num_vals, buf, size)
195
+ RegQueryMultipleValues.call(key, val_list, num_vals, buf, size)
196
+ end
197
+
198
+ def RegQueryValueEx(key, value, res, type, data, cbdata)
199
+ RegQueryValueEx.call(key, value, res, type, data, cbdata)
200
+ end
201
+
202
+ def RegReplaceKey(key, subkey, newfile, oldfile)
203
+ RegReplaceKey.call(key, subkey, newfile, oldfile)
204
+ end
205
+
206
+ def RegRestoreKey(key, file, flags)
207
+ RegRestoreKey.call(key, file, flags)
208
+ end
209
+
210
+ def RegSaveKey(key, file, sec)
211
+ RegSaveKey.call(key, file, sec)
212
+ end
213
+
214
+ def RegSaveKeyEx(key, file, sec, flags)
215
+ RegSaveKeyEx.call(key, file, sec, flags)
216
+ end
217
+
218
+ def RegSetValueEx(key, value, res, type, data, size)
219
+ RegSetValueEx.call(key, value, res, type, data, size)
220
+ end
221
+
222
+ def RegUnLoadKey(key, subkey)
223
+ RegUnLoadKey.call(key, subkey)
224
+ end
225
+ end
226
+ end
@@ -20,14 +20,20 @@ module Windows
20
20
  ComputerNamePhysicalDnsFullyQualified = 7
21
21
  ComputerNameMax = 8
22
22
 
23
+ ExpandEnvironmentStrings = Win32API.new('kernel32', 'ExpandEnvironmentStrings', 'PPL', 'L')
24
+
23
25
  GetComputerName = Win32API.new('kernel32', 'GetComputerName', 'PP', 'I')
24
26
  GetComputerNameEx = Win32API.new('kernel32', 'GetComputerNameEx', 'PPP', 'I')
25
27
  GetSystemInfo = Win32API.new('kernel32', 'GetSystemInfo', 'P', 'V')
26
- GetUserName = Win32API.new('advapil32', 'GetUserName', 'LL', 'I')
28
+ GetUserName = Win32API.new('advapi32', 'GetUserName', 'LL', 'I')
27
29
  GetUserNameEx = Win32API.new('secur32', 'GetUserNameEx', 'LPL', 'I')
28
30
  GetVersion = Win32API.new('kernel32', 'GetVersion', 'V', 'L')
29
31
  GetVersionEx = Win32API.new('kernel32', 'GetVersionEx', 'P', 'I')
30
32
  GetWindowsDirectory = Win32API.new('kernel32', 'GetWindowsDirectory', 'LI', 'I')
33
+
34
+ def ExpandEnvironmentStrings(src, dest, size)
35
+ ExpandEnvironmentStrings.call(src, dest, size)
36
+ end
31
37
 
32
38
  def GetComputerName(buffer, size)
33
39
  GetComputerNameEx.call(buffer, size) != 0
data/test/tc_memory.rb ADDED
@@ -0,0 +1,51 @@
1
+ #####################################################################
2
+ # tc_memory.rb
3
+ #
4
+ # Test case for the Windows::Memory module.
5
+ #####################################################################
6
+ base = File.basename(Dir.pwd)
7
+ if base == 'test' || base =~ /windows-pr/
8
+ Dir.chdir '..' if base == 'test'
9
+ $LOAD_PATH.unshift Dir.pwd + '/lib'
10
+ Dir.chdir 'test' rescue nil
11
+ end
12
+
13
+ require 'windows/memory'
14
+ require 'test/unit'
15
+
16
+ class Foo
17
+ include Windows::Memory
18
+ end
19
+
20
+ class TC_Windows_Path < Test::Unit::TestCase
21
+ def setup
22
+ @foo = Foo.new
23
+ @path = "C:\\"
24
+ end
25
+
26
+ def test_numeric_constants
27
+ assert_not_nil(Foo::GHND)
28
+ assert_not_nil(Foo::GMEM_FIXED)
29
+ assert_not_nil(Foo::GMEM_MOVABLE)
30
+ assert_not_nil(Foo::GMEM_ZEROINIT)
31
+ assert_not_nil(Foo::GPTR)
32
+ end
33
+
34
+ def test_method_constants
35
+ assert_not_nil(Foo::GlobalAlloc)
36
+ assert_not_nil(Foo::GlobalFlags)
37
+ assert_not_nil(Foo::GlobalFree)
38
+ assert_not_nil(Foo::GlobalHandle)
39
+ assert_not_nil(Foo::GlobalLock)
40
+ assert_not_nil(Foo::GlobalMemoryStatus)
41
+ assert_not_nil(Foo::GlobalMemoryStatusEx)
42
+ assert_not_nil(Foo::GlobalReAlloc)
43
+ assert_not_nil(Foo::GlobalSize)
44
+ assert_not_nil(Foo::GlobalUnlock)
45
+ end
46
+
47
+ def teardown
48
+ @foo = nil
49
+ @path = nil
50
+ end
51
+ end
@@ -0,0 +1,36 @@
1
+ #####################################################################
2
+ # tc_registry.rb
3
+ #
4
+ # Test case for the Windows::Registry module.
5
+ #####################################################################
6
+ base = File.basename(Dir.pwd)
7
+ if base == 'test' || base =~ /windows-pr/
8
+ Dir.chdir '..' if base == 'test'
9
+ $LOAD_PATH.unshift Dir.pwd + '/lib'
10
+ Dir.chdir 'test' rescue nil
11
+ end
12
+
13
+ require 'windows/registry'
14
+ require 'test/unit'
15
+
16
+ class Foo
17
+ include Windows::Registry
18
+ end
19
+
20
+ class TC_Windows_Registry < Test::Unit::TestCase
21
+ def setup
22
+ @foo = Foo.new
23
+ end
24
+
25
+ def test_numeric_constants
26
+ assert_equal(0x80000000, Foo::HKEY_CLASSES_ROOT)
27
+ end
28
+
29
+ def test_method_constants
30
+ assert_not_nil(Foo::RegCloseKey)
31
+ end
32
+
33
+ def teardown
34
+ @foo = nil
35
+ end
36
+ end
data/test/ts_all.rb CHANGED
@@ -10,5 +10,6 @@ require 'tc_console'
10
10
  require 'tc_error'
11
11
  require 'tc_msvcrt_buffer'
12
12
  require 'tc_path'
13
+ require 'tc_registry'
13
14
  require 'tc_security'
14
15
  require 'tc_synchronize'
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: windows-pr
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.0
7
- date: 2006-05-07 00:00:00 -06:00
6
+ version: 0.5.0
7
+ date: 2006-05-23 00:00:00 -06:00
8
8
  summary: Windows functions and constants predefined via Win32API
9
9
  require_paths:
10
10
  - lib
@@ -34,14 +34,17 @@ files:
34
34
  - lib/windows/device_io.rb
35
35
  - lib/windows/directory.rb
36
36
  - lib/windows/error.rb
37
+ - lib/windows/eventlog.rb
37
38
  - lib/windows/file.rb
38
39
  - lib/windows/filesystem.rb
39
40
  - lib/windows/handle.rb
40
41
  - lib/windows/library.rb
41
42
  - lib/windows/limits.rb
42
43
  - lib/windows/memory.rb
44
+ - lib/windows/national.rb
43
45
  - lib/windows/path.rb
44
46
  - lib/windows/process.rb
47
+ - lib/windows/registry.rb
45
48
  - lib/windows/security.rb
46
49
  - lib/windows/shell.rb
47
50
  - lib/windows/sound.rb
@@ -54,8 +57,10 @@ files:
54
57
  - lib/windows/msvcrt/file.rb
55
58
  - test/tc_console.rb
56
59
  - test/tc_error.rb
60
+ - test/tc_memory.rb
57
61
  - test/tc_msvcrt_buffer.rb
58
62
  - test/tc_path.rb
63
+ - test/tc_registry.rb
59
64
  - test/tc_security.rb
60
65
  - test/tc_synchronize.rb
61
66
  - CHANGES