windows-pr 0.3.0-mswin32 → 0.4.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 +10 -0
- data/lib/windows/console.rb +323 -0
- data/lib/windows/device_io.rb +0 -69
- data/lib/windows/directory.rb +51 -0
- data/lib/windows/error.rb +6 -25
- data/lib/windows/file.rb +0 -34
- data/lib/windows/library.rb +71 -0
- data/lib/windows/process.rb +155 -0
- data/lib/windows/shell.rb +88 -0
- data/lib/windows/synchronize.rb +111 -11
- data/lib/windows/system_info.rb +64 -0
- data/lib/windows/unicode.rb +106 -0
- data/lib/windows/window.rb +22 -0
- data/test/tc_console.rb +107 -0
- data/test/tc_synchronize.rb +44 -6
- data/test/ts_all.rb +5 -1
- metadata +11 -2
data/CHANGES
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
= 0.4.0 - 7-May-2006
|
2
|
+
* Bug fix for the WaitForMultipleObjects method in synchronize.rb
|
3
|
+
* Added the Window module (just a few constants for now)
|
4
|
+
* Added the Console module (AttachConsole, etc)
|
5
|
+
* Added the Library module (LoadLibrary, etc)
|
6
|
+
* Added the Directory module (CreateDirectory, etc)
|
7
|
+
* Added the Shell module (some constants, a few methods for now)
|
8
|
+
* Added the Unicode module (WideCharToMultiByte, etc)
|
9
|
+
* Added process creation, priority and startf flags to process.rb
|
10
|
+
|
1
11
|
= 0.3.0 - 22-Apr-2006
|
2
12
|
* Added the limits module.
|
3
13
|
* Added the security module.
|
@@ -0,0 +1,323 @@
|
|
1
|
+
require 'Win32API'
|
2
|
+
|
3
|
+
module Windows
|
4
|
+
module Console
|
5
|
+
CTRL_C_EVENT = 0
|
6
|
+
CTRL_BREAK_EVENT = 1
|
7
|
+
CTRL_LOGOFF_EVENT = 5
|
8
|
+
CTRL_SHUTDOWN_EVENT = 6
|
9
|
+
|
10
|
+
ENABLE_PROCESSED_INPUT = 0x0001
|
11
|
+
ENABLE_LINE_INPUT = 0x0002
|
12
|
+
ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002
|
13
|
+
ENABLE_ECHO_INPUT = 0x0004
|
14
|
+
ENABLE_WINDOW_INPUT = 0x0008
|
15
|
+
ENABLE_MOUSE_INPUT = 0x0010
|
16
|
+
ENABLE_INSERT_MODE = 0x0020
|
17
|
+
ENABLE_QUICK_EDIT_MODE = 0x0040
|
18
|
+
|
19
|
+
STD_INPUT_HANDLE = -10
|
20
|
+
STD_OUTPUT_HANDLE = -11
|
21
|
+
STD_ERROR_HANDLE = -12
|
22
|
+
|
23
|
+
# Console window constants
|
24
|
+
FOREGROUND_BLUE = 0x0001
|
25
|
+
FOREGROUND_GREEN = 0x0002
|
26
|
+
FOREGROUND_RED = 0x0004
|
27
|
+
FOREGROUND_INTENSITY = 0x0008
|
28
|
+
BACKGROUND_BLUE = 0x0010
|
29
|
+
BACKGROUND_GREEN = 0x0020
|
30
|
+
BACKGROUND_RED = 0x0040
|
31
|
+
BACKGROUND_INTENSITY = 0x0080
|
32
|
+
COMMON_LVB_LEADING_BYTE = 0x0100
|
33
|
+
COMMON_LVB_TRAILING_BYTE = 0x0200
|
34
|
+
COMMON_LVB_GRID_HORIZONTAL = 0x0400
|
35
|
+
COMMON_LVB_GRID_LVERTICAL = 0x0800
|
36
|
+
COMMON_LVB_GRID_RVERTICAL = 0x1000
|
37
|
+
COMMON_LVB_REVERSE_VIDEO = 0x4000
|
38
|
+
COMMON_LVB_UNDERSCORE = 0x8000
|
39
|
+
COMMON_LVB_SBCSDBCS = 0x0300
|
40
|
+
|
41
|
+
CONSOLE_FULLSCREEN = 1
|
42
|
+
CONSOLE_OVERSTRIKE = 1
|
43
|
+
CONSOLE_FULLSCREEN_HARDWARE = 2
|
44
|
+
|
45
|
+
AddConsoleAlias = Win32API.new('kernel32', 'AddConsoleAlias', 'PPP', 'I')
|
46
|
+
AllocConsole = Win32API.new('kernel32', 'AllocConsole', 'V', 'I')
|
47
|
+
AttachConsole = Win32API.new('kernel32', 'AttachConsole', 'L', 'I')
|
48
|
+
CreateConsoleScreenBuffer = Win32API.new('kernel32', 'CreateConsoleScreenBuffer', 'LLPLP', 'L')
|
49
|
+
FillConsoleOutputAttribute = Win32API.new('kernel32', 'FillConsoleOutputAttribute', 'LILLP', 'I')
|
50
|
+
FillConsoleOutputCharacter = Win32API.new('kernel32', 'FillConsoleOutputCharacter', 'LILLP', 'I')
|
51
|
+
FlushConsoleInputBuffer = Win32API.new('kernel32', 'FlushConsoleInputBuffer', 'L', 'I')
|
52
|
+
FreeConsole = Win32API.new('kernel32', 'FreeConsole', 'V', 'I')
|
53
|
+
GenerateConsoleCtrlEvent = Win32API.new('kernel32', 'GenerateConsoleCtrlEvent', 'LL', 'I')
|
54
|
+
GetConsoleAlias = Win32API.new('kernel32', 'GetConsoleAlias', 'PPLP', 'L')
|
55
|
+
GetConsoleAliases = Win32API.new('kernel32', 'GetConsoleAliases', 'PLP', 'L')
|
56
|
+
GetConsoleAliasesLength = Win32API.new('kernel32', 'GetConsoleAliasesLength', 'P', 'L')
|
57
|
+
GetConsoleAliasExes = Win32API.new('kernel32', 'GetConsoleAliasExes', 'PL', 'L')
|
58
|
+
GetConsoleAliasExesLength = Win32API.new('kernel32', 'GetConsoleAliasExesLength', 'V', 'L')
|
59
|
+
GetConsoleCP = Win32API.new('kernel32', 'GetConsoleCP', 'V', 'I')
|
60
|
+
GetConsoleCursorInfo = Win32API.new('kernel32', 'GetConsoleCursorInfo', 'LP', 'I')
|
61
|
+
GetConsoleDisplayMode = Win32API.new('kernel32', 'GetConsoleDisplayMode', 'P', 'L')
|
62
|
+
GetConsoleFontSize = Win32API.new('kernel32', 'GetConsoleFontSize', 'LL', 'L')
|
63
|
+
GetConsoleMode = Win32API.new('kernel32', 'GetConsoleMode', 'LP', 'I')
|
64
|
+
GetConsoleOutputCP = Win32API.new('kernel32', 'GetConsoleOutputCP', 'V', 'I')
|
65
|
+
GetConsoleProcessList = Win32API.new('kernel32', 'GetConsoleProcessList', 'PL', 'L')
|
66
|
+
GetConsoleScreenBufferInfo = Win32API.new('kernel32', 'GetConsoleScreenBufferInfo', 'LP', 'I')
|
67
|
+
GetConsoleSelectionInfo = Win32API.new('kernel32', 'GetConsoleSelectionInfo', 'P', 'I')
|
68
|
+
GetConsoleTitle = Win32API.new('kernel32', 'GetConsoleTitle', 'PL', 'L')
|
69
|
+
GetConsoleWindow = Win32API.new('kernel32', 'GetConsoleWindow', 'V', 'L')
|
70
|
+
GetCurrentConsoleFont = Win32API.new('kernel32', 'GetCurrentConsoleFont' , 'LIP', 'I')
|
71
|
+
GetLargestConsoleWindowSize = Win32API.new('kernel32', 'GetLargestConsoleWindowSize', 'L', 'L')
|
72
|
+
GetNumberOfConsoleInputEvents = Win32API.new('kernel32', 'GetNumberOfConsoleInputEvents', 'LP', 'I')
|
73
|
+
GetNumberOfConsoleMouseButtons = Win32API.new('kernel32', 'GetNumberOfConsoleMouseButtons', 'L', 'I')
|
74
|
+
GetStdHandle = Win32API.new('kernel32', 'GetStdHandle', 'L', 'L')
|
75
|
+
PeekConsoleInput = Win32API.new('kernel32', 'PeekConsoleInput', 'LPLP', 'I')
|
76
|
+
ReadConsole = Win32API.new('kernel32', 'ReadConsole', 'LPLPP', 'I')
|
77
|
+
ReadConsoleInput = Win32API.new('kernel32', 'ReadConsoleInput', 'LPLP', 'I')
|
78
|
+
ReadConsoleOutput = Win32API.new('kernel32', 'ReadConsoleOutput', 'LPLLP', 'I')
|
79
|
+
ReadConsoleOutputAttribute = Win32API.new('kernel32', 'ReadConsoleOutputAttribute', 'LPLLP', 'I')
|
80
|
+
ReadConsoleOutputCharacter = Win32API.new('kernel32', 'ReadConsoleOutputCharacter', 'LPLLP', 'I')
|
81
|
+
ScrollConsoleScreenBuffer = Win32API.new('kernel32', 'ScrollConsoleScreenBuffer', 'LPPLP', 'I')
|
82
|
+
SetConsoleActiveScreenBuffer = Win32API.new('kernel32', 'SetConsoleActiveScreenBuffer', 'L', 'I')
|
83
|
+
SetConsoleCommandHistoryMode = Win32API.new('kernel32', 'SetConsoleCommandHistoryMode', 'L', 'I')
|
84
|
+
SetConsoleCP = Win32API.new('kernel32', 'SetConsoleCP', 'L', 'I')
|
85
|
+
SetConsoleCtrlHandler = Win32API.new('kernel32', 'SetConsoleCtrlHandler', 'PI', 'I')
|
86
|
+
SetConsoleCursorInfo = Win32API.new('kernel32', 'SetConsoleCursorInfo', 'LP', 'I')
|
87
|
+
SetConsoleCursorPosition = Win32API.new('kernel32', 'SetConsoleCursorPosition', 'LP', 'I')
|
88
|
+
SetConsoleDisplayMode = Win32API.new('kernel32', 'SetConsoleDisplayMode', 'LLP', 'I')
|
89
|
+
SetConsoleMode = Win32API.new('kernel32', 'SetConsoleMode', 'LL', 'I')
|
90
|
+
SetConsoleOutputCP = Win32API.new('kernel32', 'SetConsoleOutputCP', 'I', 'I')
|
91
|
+
SetConsoleScreenBufferSize = Win32API.new('kernel32', 'SetConsoleScreenBufferSize', 'LL', 'I')
|
92
|
+
SetConsoleTextAttribute = Win32API.new('kernel32', 'SetConsoleTextAttribute', 'LL', 'I')
|
93
|
+
SetConsoleTitle = Win32API.new('kernel32', 'SetConsoleTitle', 'P', 'I')
|
94
|
+
SetConsoleWindowInfo = Win32API.new('kernel32', 'SetConsoleWindowInfo', 'LIP', 'I')
|
95
|
+
SetStdHandle = Win32API.new('kernel32', 'SetStdHandle', 'LL', 'I')
|
96
|
+
WriteConsole = Win32API.new('kernel32', 'WriteConsole', 'LPLPP', 'I')
|
97
|
+
WriteConsoleInput = Win32API.new('kernel32', 'WriteConsoleInput', 'LPLP', 'I')
|
98
|
+
WriteConsoleOutput = Win32API.new('kernel32', 'WriteConsoleOutput', 'LPLLP', 'I')
|
99
|
+
WriteConsoleOutputAttribute = Win32API.new('kernel32', 'WriteConsoleOutputAttribute', 'LPLLP', 'I')
|
100
|
+
WriteConsoleOutputCharacter = Win32API.new('kernel32', 'WriteConsoleOutputCharacter', 'LPLLP', 'I')
|
101
|
+
|
102
|
+
def AddConsoleAlias(source, target, exe)
|
103
|
+
AddConsoleAlias.call(source, target, exe) != 0
|
104
|
+
end
|
105
|
+
|
106
|
+
def AllocConsole()
|
107
|
+
AllocConsole.call != 0
|
108
|
+
end
|
109
|
+
|
110
|
+
def AttachConsole(pid)
|
111
|
+
AttachConsole.call(pid)
|
112
|
+
end
|
113
|
+
|
114
|
+
def CreateConsoleScreenBuffer(access, mode, sec, flags, data)
|
115
|
+
CreateConsoleScreenBuffer.call(access, mode, sec, flags, data)
|
116
|
+
end
|
117
|
+
|
118
|
+
def FillConsoleOutputAttribute(handle, attribute, length, coord, num)
|
119
|
+
FillConsoleOutputAttribute.call(handle, attribute, length, coord, num) != 0
|
120
|
+
end
|
121
|
+
|
122
|
+
def FlushConsoleInputBuffer(handle)
|
123
|
+
FlushConsoleInputBuffer.call(handle) != 0
|
124
|
+
end
|
125
|
+
|
126
|
+
def FreeConsole()
|
127
|
+
FreeConsole.call != 0
|
128
|
+
end
|
129
|
+
|
130
|
+
def GenerateConsoleCtrlEvent(ctrl_event, process_group_id)
|
131
|
+
GenerateConsoleCtrlEvent.call(ctrl_event, process_group_id) != 0
|
132
|
+
end
|
133
|
+
|
134
|
+
def GetConsoleAliases(buffer, buffer_length, exe_name)
|
135
|
+
GetConsoleAliases.call(buffer, buffer_length, exe_name)
|
136
|
+
end
|
137
|
+
|
138
|
+
def GetConsoleAliasesLength(exe_name)
|
139
|
+
GetConsoleAliasesLength.call(exe_name)
|
140
|
+
end
|
141
|
+
|
142
|
+
def GetConsoleAliasExes(buffer, buffer_length)
|
143
|
+
GetConsoleAliasExes.call(buffer, buffer_length)
|
144
|
+
end
|
145
|
+
|
146
|
+
def GetConsoleAliasExesLength()
|
147
|
+
GetConsoleAliasExesLength.call
|
148
|
+
end
|
149
|
+
|
150
|
+
def GetConsoleCP()
|
151
|
+
GetConsoleCP.call
|
152
|
+
end
|
153
|
+
|
154
|
+
def GetConsoleCursorInfo(handle, cursor_info_ptr)
|
155
|
+
GetConsoleCursorInfo.call(handle, cursor_info_ptr)
|
156
|
+
end
|
157
|
+
|
158
|
+
# The docs say this returns a BOOL, but really it's a DWORD
|
159
|
+
def GetConsoleDisplayMode(flags)
|
160
|
+
GetConsoleDisplayMode.call(flags)
|
161
|
+
end
|
162
|
+
|
163
|
+
def GetConsoleFontSize(handle, font)
|
164
|
+
GetConsoleFontSize.call(handle, font)
|
165
|
+
end
|
166
|
+
|
167
|
+
def GetConsoleMode(handle, mode)
|
168
|
+
GetConsoleMode.call(handle, mode) != 0
|
169
|
+
end
|
170
|
+
|
171
|
+
def GetConsoleOutputCP()
|
172
|
+
GetConsoleOutputCP.call
|
173
|
+
end
|
174
|
+
|
175
|
+
def GetConsoleProcessList(proc_list, proc_count)
|
176
|
+
GetConsoleProcessList.call(proc_list, proc_count)
|
177
|
+
end
|
178
|
+
|
179
|
+
def GetConsoleScreenBufferInfo(handle, buf_info)
|
180
|
+
GetConsoleScreenBufferInfo.call(handle, buf_info) != 0
|
181
|
+
end
|
182
|
+
|
183
|
+
def GetConsoleSelectionInfo(info_struct)
|
184
|
+
GetConsoleSelectionInfo.call(info_struct) != 0
|
185
|
+
end
|
186
|
+
|
187
|
+
def GetConsoleTitle(title, size)
|
188
|
+
GetConsoleTitle.call(title, size)
|
189
|
+
end
|
190
|
+
|
191
|
+
def GetConsoleWindow()
|
192
|
+
GetConsoleWindow.call
|
193
|
+
end
|
194
|
+
|
195
|
+
def GetCurrentConsoleFont(handle, max_window, current_font_struct)
|
196
|
+
GetCurrentConsoleFont.call(handle, max_window, current_font_struct)
|
197
|
+
end
|
198
|
+
|
199
|
+
def GetLargestConsoleWindowSize(handle)
|
200
|
+
GetLargestConsoleWindowSize.call(handle)
|
201
|
+
end
|
202
|
+
|
203
|
+
def GetNumberOfConsoleInputEvents(handle, num_events)
|
204
|
+
GetNumberOfConsoleInputEvents.call(handle, num_events)
|
205
|
+
end
|
206
|
+
|
207
|
+
def GetNumberOfConsoleMouseButtons(num_mouse_buttons)
|
208
|
+
GetNumberOfConsoleMouseButtons.call(num_mouse_buttons)
|
209
|
+
end
|
210
|
+
|
211
|
+
def GetStdHandle(std_handle)
|
212
|
+
GetStdHandle.call(std_handle)
|
213
|
+
end
|
214
|
+
|
215
|
+
def PeekConsoleInput(handle, buffer, length, num_events)
|
216
|
+
PeekConsoleInput.call(handle, buffer, length, num_events) != 0
|
217
|
+
end
|
218
|
+
|
219
|
+
def ReadConsole(handle, buffer, num_to_read, num_read, res = 0)
|
220
|
+
ReadConsole.call(handle, buffer, num_to_read, num_read, res) != 0
|
221
|
+
end
|
222
|
+
|
223
|
+
def ReadConsoleInput(handle, buffer, length, num_read)
|
224
|
+
ReadConsoleInput.call(handle, buffer, length, num_read) != 0
|
225
|
+
end
|
226
|
+
|
227
|
+
def ReadConsoleOutput(handle, buffer, buf_size, buf_coord, reg)
|
228
|
+
ReadConsoleOutput.call(handle, buffer, buf_size, buf_coord, reg) != 0
|
229
|
+
end
|
230
|
+
|
231
|
+
def ReadConsoleOutputAttribute(handle, attrib, len, coord, num_read)
|
232
|
+
ReadConsoleOutputAttribute.call(handle, attrib, len, coord, num_read) != 0
|
233
|
+
end
|
234
|
+
|
235
|
+
def ReadConsoleOutputCharacter(handle, char, length, coord, num_read)
|
236
|
+
ReadConsoleOutputCharacter.call(handle, char, length, coord, num_read) != 0
|
237
|
+
end
|
238
|
+
|
239
|
+
def ScrollConsoleScreenBuffer(handle, scroll, clip, coord, fill)
|
240
|
+
ScrollConsoleScreenBuffer.call(handle, scroll, clip, coord, fill) != 0
|
241
|
+
end
|
242
|
+
|
243
|
+
def SetConsoleActiveScreenBuffer(handle)
|
244
|
+
SetConsoleActiveScreenBuffer.call(handle) != 0
|
245
|
+
end
|
246
|
+
|
247
|
+
def SetConsoleCommandHistoryMode(flags)
|
248
|
+
SetConsoleCommandHistoryMode.call(flags) != 0
|
249
|
+
end
|
250
|
+
|
251
|
+
def SetConsoleCP(code_page_id)
|
252
|
+
SetConsoleCP.call(code_page_id) != 0
|
253
|
+
end
|
254
|
+
|
255
|
+
def SetConsoleCtrlHandler(handler, add)
|
256
|
+
SetConsoleCtrlHandler.call(handler, add) != 0
|
257
|
+
end
|
258
|
+
|
259
|
+
def SetConsoleCursorInfo(handle, cursor)
|
260
|
+
SetConsoleCursorInfo.call(handle, cursor) != 0
|
261
|
+
end
|
262
|
+
|
263
|
+
def SetConsoleCursorPosition(handle, coord)
|
264
|
+
SetConsoleCursorPosition.call(handle, coord) != 0
|
265
|
+
end
|
266
|
+
|
267
|
+
def SetConsoleDisplayMode(handle, flags, coord)
|
268
|
+
SetConsoleDisplayMode.call(handle, flags, coord) != 0
|
269
|
+
end
|
270
|
+
|
271
|
+
def SetConsoleHistoryInfo(info)
|
272
|
+
SetConsoleHistoryInfo.call(info) != 0
|
273
|
+
end
|
274
|
+
|
275
|
+
def SetConsoleMode(handle, mode)
|
276
|
+
SetConsoleMode.call(handle, mode) != 0
|
277
|
+
end
|
278
|
+
|
279
|
+
def SetConsoleOutputCP(code_page_id)
|
280
|
+
SetConsoleOutputCP.call(code_page_id) != 0
|
281
|
+
end
|
282
|
+
|
283
|
+
def SetConsoleScreenBufferSize(handle, size)
|
284
|
+
SetConsoleScreenBufferSize.call(handle, size) != 0
|
285
|
+
end
|
286
|
+
|
287
|
+
def SetConsoleTextAttribute(handle, attribute)
|
288
|
+
SetConsoleTextAttribute.call(handle, attribute) != 0
|
289
|
+
end
|
290
|
+
|
291
|
+
def SetConsoleTitle(title)
|
292
|
+
SetConsoleTitle.call(title) != 0
|
293
|
+
end
|
294
|
+
|
295
|
+
def SetConsoleWindowInfo(handle, absolute, window)
|
296
|
+
SetConsoleWindowInfo.call(handle, absolute, window) != 0
|
297
|
+
end
|
298
|
+
|
299
|
+
def SetStdHandle(std_handle, handle)
|
300
|
+
SetStdHandle.call(std_handle, handle) != 0
|
301
|
+
end
|
302
|
+
|
303
|
+
def WriteConsole(handle, buffer, num_to_write, num_written, res = 0)
|
304
|
+
WriteConsole.call(handle, buffer, num_to_write, num_written, res) != 0
|
305
|
+
end
|
306
|
+
|
307
|
+
def WriteConsoleInput(handle, buffer, length, num_events)
|
308
|
+
WriteConsoleInput.call(handle, buffer, length, num_events) != 0
|
309
|
+
end
|
310
|
+
|
311
|
+
def WriteConsoleOutput(handle, buffer, buf_size, coord, region)
|
312
|
+
WriteConsoleOutput.call(handle, buffer, buf_size, coord, region) != 0
|
313
|
+
end
|
314
|
+
|
315
|
+
def WriteConsoleOutputAttribute(handle, attrib, length, coord, num)
|
316
|
+
WriteConsoleOutputAttribute.call(handle, attrib, length, coord, num) != 0
|
317
|
+
end
|
318
|
+
|
319
|
+
def WriteConsoleOutputCharacter(handle, char, length, coord, num)
|
320
|
+
WriteConsoleOutputCharacter.call(handle, char, length, coord, num) != 0
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
data/lib/windows/device_io.rb
CHANGED
@@ -1,72 +1,3 @@
|
|
1
|
-
#####################################################################
|
2
|
-
# device_io.rb
|
3
|
-
#
|
4
|
-
# Defines the following functions:
|
5
|
-
#
|
6
|
-
# DeviceIoControl()
|
7
|
-
#
|
8
|
-
# Defines the following constants:
|
9
|
-
#
|
10
|
-
# FILE_DEVICE_BEEP = 0x00000001
|
11
|
-
# FILE_DEVICE_CD_ROM = 0x00000002
|
12
|
-
# FILE_DEVICE_CD_ROM_FILE_SYSTEM = 0x00000003
|
13
|
-
# FILE_DEVICE_CONTROLLER = 0x00000004
|
14
|
-
# FILE_DEVICE_DATALINK = 0x00000005
|
15
|
-
# FILE_DEVICE_DFS = 0x00000006
|
16
|
-
# FILE_DEVICE_DISK = 0x00000007
|
17
|
-
# FILE_DEVICE_DISK_FILE_SYSTEM = 0x00000008
|
18
|
-
# FILE_DEVICE_FILE_SYSTEM = 0x00000009
|
19
|
-
# FILE_DEVICE_INPORT_PORT = 0x0000000a
|
20
|
-
# FILE_DEVICE_KEYBOARD = 0x0000000b
|
21
|
-
# FILE_DEVICE_MAILSLOT = 0x0000000c
|
22
|
-
# FILE_DEVICE_MIDI_IN = 0x0000000d
|
23
|
-
# FILE_DEVICE_MIDI_OUT = 0x0000000e
|
24
|
-
# FILE_DEVICE_MOUSE = 0x0000000f
|
25
|
-
# FILE_DEVICE_MULTI_UNC_PROVIDER = 0x00000010
|
26
|
-
# FILE_DEVICE_NAMED_PIPE = 0x00000011
|
27
|
-
# FILE_DEVICE_NETWORK = 0x00000012
|
28
|
-
# FILE_DEVICE_NETWORK_BROWSER = 0x00000013
|
29
|
-
# FILE_DEVICE_NETWORK_FILE_SYSTEM = 0x00000014
|
30
|
-
# FILE_DEVICE_NULL = 0x00000015
|
31
|
-
# FILE_DEVICE_PARALLEL_PORT = 0x00000016
|
32
|
-
# FILE_DEVICE_PHYSICAL_NETCARD = 0x00000017
|
33
|
-
# FILE_DEVICE_PRINTER = 0x00000018
|
34
|
-
# FILE_DEVICE_SCANNER = 0x00000019
|
35
|
-
# FILE_DEVICE_SERIAL_MOUSE_PORT = 0x0000001a
|
36
|
-
# FILE_DEVICE_SERIAL_PORT = 0x0000001b
|
37
|
-
# FILE_DEVICE_SCREEN = 0x0000001c
|
38
|
-
# FILE_DEVICE_SOUND = 0x0000001d
|
39
|
-
# FILE_DEVICE_STREAMS = 0x0000001e
|
40
|
-
# FILE_DEVICE_TAPE = 0x0000001f
|
41
|
-
# FILE_DEVICE_TAPE_FILE_SYSTEM = 0x00000020
|
42
|
-
# FILE_DEVICE_TRANSPORT = 0x00000021
|
43
|
-
# FILE_DEVICE_UNKNOWN = 0x00000022
|
44
|
-
# FILE_DEVICE_VIDEO = 0x00000023
|
45
|
-
# FILE_DEVICE_VIRTUAL_DISK = 0x00000024
|
46
|
-
# FILE_DEVICE_WAVE_IN = 0x00000025
|
47
|
-
# FILE_DEVICE_WAVE_OUT = 0x00000026
|
48
|
-
# FILE_DEVICE_8042_PORT = 0x00000027
|
49
|
-
# FILE_DEVICE_NETWORK_REDIRECTOR = 0x00000028
|
50
|
-
# FILE_DEVICE_BATTERY = 0x00000029
|
51
|
-
# FILE_DEVICE_BUS_EXTENDER = 0x0000002a
|
52
|
-
# FILE_DEVICE_MODEM = 0x0000002b
|
53
|
-
# FILE_DEVICE_VDM = 0x0000002c
|
54
|
-
# FILE_DEVICE_MASS_STORAGE = 0x0000002d
|
55
|
-
# FILE_DEVICE_SMB = 0x0000002e
|
56
|
-
# FILE_DEVICE_KS = 0x0000002f
|
57
|
-
# FILE_DEVICE_CHANGER = 0x00000030
|
58
|
-
# FILE_DEVICE_SMARTCARD = 0x00000031
|
59
|
-
# FILE_DEVICE_ACPI = 0x00000032
|
60
|
-
# FILE_DEVICE_DVD = 0x00000033
|
61
|
-
# FILE_DEVICE_FULLSCREEN_VIDEO = 0x00000034
|
62
|
-
# FILE_DEVICE_DFS_FILE_SYSTEM = 0x00000035
|
63
|
-
# FILE_DEVICE_DFS_VOLUME = 0x00000036
|
64
|
-
# FILE_DEVICE_SERENUM = 0x00000037
|
65
|
-
# FILE_DEVICE_TERMSRV = 0x00000038
|
66
|
-
# FILE_DEVICE_KSEC = 0x00000039
|
67
|
-
# FILE_DEVICE_FIPS = 0x0000003A
|
68
|
-
# FILE_DEVICE_INFINIBAND = 0x0000003B
|
69
|
-
#####################################################################
|
70
1
|
require 'Win32API'
|
71
2
|
|
72
3
|
module Windows
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'Win32API'
|
2
|
+
|
3
|
+
module Windows
|
4
|
+
module Directory
|
5
|
+
CreateDirectory = Win32API.new('kernel32', 'CreateDirectory', 'PP', 'I')
|
6
|
+
CreateDirectoryEx = Win32API.new('kernel32', 'CreateDirectoryEx', 'PPP', 'I')
|
7
|
+
FindCloseChangeNotification = Win32API.new('kernel32', 'FindCloseChangeNotification', 'L', 'I')
|
8
|
+
FindFirstChangeNotification = Win32API.new('kernel32', 'FindFirstChangeNotification', 'PIL', 'L')
|
9
|
+
FindNextChangeNotification = Win32API.new('kernel32', 'FindFirstChangeNotification', 'PIL', 'I')
|
10
|
+
GetCurrentDirectory = Win32API.new('kernel32', 'GetCurrentDirectory', 'LP', 'L')
|
11
|
+
ReadDirectoryChangesW = Win32API.new('kernel32', 'ReadDirectoryChangesW', 'LPLILPPP', 'I')
|
12
|
+
RemoveDirectory = Win32API.new('kernel32', 'RemoveDirectory', 'P', 'I')
|
13
|
+
SetCurrentDirectory = Win32API.new('kernel32', 'SetCurrentDirectory', 'P', 'I')
|
14
|
+
|
15
|
+
def CreateDirectory(path, attributes)
|
16
|
+
CreateDirectory.call(path, attributes) != 0
|
17
|
+
end
|
18
|
+
|
19
|
+
def CreateDirectoryEx(template, new, attributes)
|
20
|
+
CreateDirectoryEx.call(template, new, attributes) != 0
|
21
|
+
end
|
22
|
+
|
23
|
+
def FindCloseChangeNotification(handle)
|
24
|
+
FindCloseChangeNotification.call(handle) != 0
|
25
|
+
end
|
26
|
+
|
27
|
+
def FindFirstChangeNotification(path, subtree, filter)
|
28
|
+
FindFirstChangeNotification.call(path, subtree, filter)
|
29
|
+
end
|
30
|
+
|
31
|
+
def FindNextChangeNotification(handle)
|
32
|
+
FindNextChangeNotification.call(handle) != 0
|
33
|
+
end
|
34
|
+
|
35
|
+
def GetCurrentDirectory(buf_len, buf)
|
36
|
+
GetCurrentDirectory.call(buf_len, buf)
|
37
|
+
end
|
38
|
+
|
39
|
+
def ReadDirectoryChangesW(handle, buf, buf_len, subtree, filter, bytes, overlapped, routine)
|
40
|
+
ReadDirectoryChangesW.call(handle, buf, buf_len, subtree, filter, bytes, overlapped, routine) != 0
|
41
|
+
end
|
42
|
+
|
43
|
+
def RemoveDirectory(path)
|
44
|
+
RemoveDirectory.call(path) != 0
|
45
|
+
end
|
46
|
+
|
47
|
+
def SetCurrentDirectory(path)
|
48
|
+
SetCurrentDirectory.call(path) != 0
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/windows/error.rb
CHANGED
@@ -1,37 +1,14 @@
|
|
1
1
|
############################################################################
|
2
2
|
# error.rb
|
3
3
|
#
|
4
|
-
# Includes the
|
5
|
-
#
|
6
|
-
# GetLastError()
|
7
|
-
# FormatError()
|
8
|
-
# SetErrorMode()
|
9
|
-
# SetLastError()
|
10
|
-
# SetLastErrorex()
|
11
|
-
#
|
12
|
-
# Defines the following constants:
|
13
|
-
#
|
14
|
-
# FORMAT_MESSAGE_ALLOCATE_BUFFER
|
15
|
-
# FORMAT_MESSAGE_IGNORE_INSERTS
|
16
|
-
# FORMAT_MESSAGE_FROM_STRING
|
17
|
-
# FORMAT_MESSAGE_FROM_HMODULE
|
18
|
-
# FORMAT_MESSAGE_FROM_SYSTEM
|
19
|
-
# FORMAT_MESSAGE_ARGUMENT_ARRAY
|
20
|
-
# FORMAT_MESSAGE_MAX_WIDTH_MASK
|
21
|
-
#
|
22
|
-
# SEM_FAILCRITICALERRORS
|
23
|
-
# SEM_NOALIGNMENTFAULTEXCEPT
|
24
|
-
# SEM_NOGPFAULTERRORBOX
|
25
|
-
# SEM_NOOPENFILEERRORBOX
|
26
|
-
#
|
27
|
-
# All of the error codes in error.h.
|
4
|
+
# Includes all of the error codes in error.h and some from winerror.h.
|
28
5
|
#
|
29
6
|
# Adds the following convenience methods:
|
30
7
|
#
|
31
8
|
# get_last_error - Returns a human readable string for the error returned
|
32
9
|
# by the GetLastError() function.
|
33
10
|
############################################################################
|
34
|
-
require
|
11
|
+
require 'Win32API'
|
35
12
|
|
36
13
|
module Windows
|
37
14
|
module Error
|
@@ -285,6 +262,10 @@ module Windows
|
|
285
262
|
TC_HARDERR = 1
|
286
263
|
TC_GP_TRAP = 2
|
287
264
|
TC_SIGNAL = 3
|
265
|
+
|
266
|
+
# From WinError.h
|
267
|
+
ERROR_INVALID_FLAGS = 4100 # 1004L
|
268
|
+
ERROR_NO_UNICODE_TRANSLATION = 4371
|
288
269
|
|
289
270
|
GetLastError = Win32API.new('kernel32', 'GetLastError', 'V', 'L')
|
290
271
|
SetLastError = Win32API.new('kernel32', 'GetLastError', 'L', 'V')
|
data/lib/windows/file.rb
CHANGED
@@ -1,37 +1,3 @@
|
|
1
|
-
######################################################################
|
2
|
-
# file.rb
|
3
|
-
#
|
4
|
-
# Defines the following functions:
|
5
|
-
#
|
6
|
-
# CopyFile()
|
7
|
-
# CopyFileEx()
|
8
|
-
# CreateFile()
|
9
|
-
# CreateHardLink()
|
10
|
-
# DecryptFile()
|
11
|
-
# DeleteFile()
|
12
|
-
# EncryptFile()
|
13
|
-
# GetFileAttributes()
|
14
|
-
# GetFileAttributesEx()
|
15
|
-
# GetFileSize()
|
16
|
-
# GetFileSizeEx()
|
17
|
-
# GetFileType()
|
18
|
-
# GetLongPathName()
|
19
|
-
# GetShortPathName()
|
20
|
-
# LockFile()
|
21
|
-
# LockFileEx()
|
22
|
-
# ReadFile()
|
23
|
-
# ReadFileEx()
|
24
|
-
# ReOpenFile()
|
25
|
-
# SetFileAttributes()
|
26
|
-
# UnlockFile()
|
27
|
-
# UnlockFileEx()
|
28
|
-
# WriteFile()
|
29
|
-
# WriteFileEx()
|
30
|
-
#
|
31
|
-
# TODO:
|
32
|
-
#
|
33
|
-
# Add remaining file functions.
|
34
|
-
######################################################################
|
35
1
|
require 'Win32API'
|
36
2
|
|
37
3
|
module Windows
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'Win32API'
|
2
|
+
|
3
|
+
module Windows
|
4
|
+
module Library
|
5
|
+
DLL_PROCESS_DETACH = 0
|
6
|
+
DLL_PROCESS_ATTACH = 1
|
7
|
+
DLL_THREAD_ATTACH = 2
|
8
|
+
DLL_THREAD_DETACH = 3
|
9
|
+
|
10
|
+
GET_MODULE_HANDLE_EX_FLAG_PIN = 1
|
11
|
+
GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2
|
12
|
+
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4
|
13
|
+
|
14
|
+
DisableThreadLibraryCalls = Win32API.new('kernel32', 'DisableThreadLibraryCalls', 'L', 'I')
|
15
|
+
FreeLibrary = Win32API.new('kernel32', 'FreeLibrary', 'L', 'I')
|
16
|
+
FreeLibraryAndExitThread = Win32API.new('kernel32', 'FreeLibraryAndExitThread', 'LL', 'V')
|
17
|
+
GetDllDirectory = Win32API.new('kernel32', 'GetDllDirectory', 'LP', 'L')
|
18
|
+
GetModuleFileName = Win32API.new('kernel32', 'GetModuleFileName', 'LPL', 'L')
|
19
|
+
GetModuleHandle = Win32API.new('kernel32', 'GetModuleHandle', 'P', 'L')
|
20
|
+
GetModuleHandleEx = Win32API.new('kernel32', 'GetModuleHandleEx', 'LPP', 'I')
|
21
|
+
GetProcAddress = Win32API.new('kernel32', 'GetProcAddress', 'LP', 'L')
|
22
|
+
LoadLibrary = Win32API.new('kernel32', 'LoadLibrary', 'P', 'L')
|
23
|
+
LoadLibraryEx = Win32API.new('kernel32', 'LoadLibraryEx', 'PLL', 'L')
|
24
|
+
LoadModule = Win32API.new('kernel32', 'LoadModule', 'PP', 'L')
|
25
|
+
SetDllDirectory = Win32API.new('kernel32', 'SetDllDirectory', 'P', 'I')
|
26
|
+
|
27
|
+
def DisableThreadLibraryCalls(hmodule)
|
28
|
+
DisableThreadLibraryCalls.call(hmodule) != 0
|
29
|
+
end
|
30
|
+
|
31
|
+
def FreeLibrary(hmodule)
|
32
|
+
FreeLibrary.call(hmodule) != 0
|
33
|
+
end
|
34
|
+
|
35
|
+
def GetDllDirectory(length, buffer)
|
36
|
+
GetDllDirectory.call(length, buffer)
|
37
|
+
end
|
38
|
+
|
39
|
+
def GetModuleFileName(hmodule, file, size)
|
40
|
+
GetModuleFileName.call(hmodule, file, size)
|
41
|
+
end
|
42
|
+
|
43
|
+
def GetModuleHandle(module_name)
|
44
|
+
GetModuleHandle.call(module_name)
|
45
|
+
end
|
46
|
+
|
47
|
+
def GetModuleHandleEx(flags, module_name, hmodule)
|
48
|
+
GetModuleHandleEx.call(flags, module_name, hmodule)
|
49
|
+
end
|
50
|
+
|
51
|
+
def GetProcAddress(hmodule, proc_name)
|
52
|
+
GetProcAddress.call(hmodule, proc_name)
|
53
|
+
end
|
54
|
+
|
55
|
+
def LoadLibrary(library)
|
56
|
+
LoadLibrary.call(library)
|
57
|
+
end
|
58
|
+
|
59
|
+
def LoadLibraryEx(library, file, flags)
|
60
|
+
LoadLibraryEx.call(library, file, flags)
|
61
|
+
end
|
62
|
+
|
63
|
+
def LoadModule(hmodule, param_block)
|
64
|
+
LoadModule.call(hmodule, param_block)
|
65
|
+
end
|
66
|
+
|
67
|
+
def SetDllDirectory(path)
|
68
|
+
SetDllDirectory.call(path)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|