windows-pr 1.1.3 → 1.2.0

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.
Files changed (123) hide show
  1. data/CHANGES +15 -0
  2. data/MANIFEST +65 -65
  3. data/README +149 -149
  4. data/Rakefile +37 -52
  5. data/doc/conversion_guide.txt +37 -37
  6. data/lib/windows/clipboard.rb +2 -0
  7. data/lib/windows/com.rb +2 -0
  8. data/lib/windows/com/accessibility.rb +12 -10
  9. data/lib/windows/com/automation.rb +149 -147
  10. data/lib/windows/com/variant.rb +24 -22
  11. data/lib/windows/console.rb +114 -112
  12. data/lib/windows/debug.rb +35 -33
  13. data/lib/windows/device_io.rb +248 -246
  14. data/lib/windows/directory.rb +2 -0
  15. data/lib/windows/error.rb +2 -0
  16. data/lib/windows/eventlog.rb +2 -0
  17. data/lib/windows/file.rb +264 -262
  18. data/lib/windows/file_mapping.rb +25 -23
  19. data/lib/windows/filesystem.rb +2 -0
  20. data/lib/windows/gdi/bitmap.rb +65 -63
  21. data/lib/windows/gdi/device_context.rb +46 -44
  22. data/lib/windows/gdi/metafile.rb +40 -38
  23. data/lib/windows/gdi/painting_drawing.rb +115 -113
  24. data/lib/windows/handle.rb +2 -0
  25. data/lib/windows/library.rb +2 -0
  26. data/lib/windows/limits.rb +34 -31
  27. data/lib/windows/mailslot.rb +2 -0
  28. data/lib/windows/memory.rb +2 -0
  29. data/lib/windows/msvcrt/buffer.rb +75 -73
  30. data/lib/windows/msvcrt/directory.rb +31 -29
  31. data/lib/windows/msvcrt/file.rb +47 -45
  32. data/lib/windows/msvcrt/io.rb +62 -60
  33. data/lib/windows/msvcrt/string.rb +2 -0
  34. data/lib/windows/msvcrt/time.rb +169 -167
  35. data/lib/windows/national.rb +580 -578
  36. data/lib/windows/network/management.rb +525 -523
  37. data/lib/windows/network/snmp.rb +92 -90
  38. data/lib/windows/network/winsock.rb +128 -126
  39. data/lib/windows/nio.rb +2 -0
  40. data/lib/windows/ntfs/winternl.rb +96 -82
  41. data/lib/windows/path.rb +143 -141
  42. data/lib/windows/pipe.rb +42 -40
  43. data/lib/windows/process.rb +2 -0
  44. data/lib/windows/registry.rb +171 -126
  45. data/lib/windows/security.rb +479 -477
  46. data/lib/windows/security/authentication.rb +32 -30
  47. data/lib/windows/service.rb +142 -140
  48. data/lib/windows/shell.rb +171 -169
  49. data/lib/windows/socket.rb +86 -0
  50. data/lib/windows/sound.rb +39 -37
  51. data/lib/windows/synchronize.rb +133 -131
  52. data/lib/windows/system_info.rb +4 -2
  53. data/lib/windows/thread.rb +2 -0
  54. data/lib/windows/time.rb +48 -46
  55. data/lib/windows/tool_helper.rb +36 -34
  56. data/lib/windows/unicode.rb +2 -0
  57. data/lib/windows/volume.rb +61 -59
  58. data/lib/windows/window.rb +81 -79
  59. data/lib/windows/window/classes.rb +59 -57
  60. data/lib/windows/window/dialog.rb +91 -89
  61. data/lib/windows/window/menu.rb +102 -100
  62. data/lib/windows/window/message.rb +297 -295
  63. data/lib/windows/window/properties.rb +20 -18
  64. data/lib/windows/window/timer.rb +19 -17
  65. data/lib/windows/wsa.rb +102 -0
  66. data/test/tc_clipboard.rb +41 -41
  67. data/test/tc_com.rb +32 -32
  68. data/test/tc_com_automation.rb +15 -15
  69. data/test/tc_console.rb +108 -108
  70. data/test/tc_debug.rb +48 -48
  71. data/test/tc_device_io.rb +29 -29
  72. data/test/tc_directory.rb +25 -25
  73. data/test/tc_error.rb +38 -50
  74. data/test/tc_eventlog.rb +58 -58
  75. data/test/tc_file.rb +67 -67
  76. data/test/tc_file_mapping.rb +38 -38
  77. data/test/tc_filesystem.rb +27 -27
  78. data/test/tc_gdi_bitmap.rb +25 -25
  79. data/test/tc_gdi_metafile.rb +23 -23
  80. data/test/tc_handle.rb +36 -36
  81. data/test/tc_library.rb +37 -37
  82. data/test/tc_limits.rb +34 -34
  83. data/test/tc_mailslot.rb +22 -22
  84. data/test/tc_memory.rb +44 -44
  85. data/test/tc_msvcrt_buffer.rb +59 -68
  86. data/test/tc_msvcrt_directory.rb +96 -98
  87. data/test/tc_msvcrt_file.rb +80 -80
  88. data/test/tc_msvcrt_io.rb +48 -48
  89. data/test/tc_msvcrt_string.rb +94 -93
  90. data/test/tc_msvcrt_time.rb +19 -29
  91. data/test/tc_national.rb +38 -38
  92. data/test/tc_network_management.rb +32 -32
  93. data/test/tc_network_snmp.rb +31 -31
  94. data/test/tc_network_winsock.rb +34 -34
  95. data/test/tc_nio.rb +32 -32
  96. data/test/tc_ntfs_winternl.rb +33 -18
  97. data/test/tc_path.rb +90 -90
  98. data/test/tc_pipe.rb +53 -53
  99. data/test/tc_process.rb +24 -24
  100. data/test/tc_registry.rb +29 -29
  101. data/test/tc_security.rb +104 -104
  102. data/test/tc_security_authentication.rb +34 -34
  103. data/test/tc_service.rb +57 -57
  104. data/test/tc_shell.rb +34 -34
  105. data/test/tc_socket.rb +20 -0
  106. data/test/tc_sound.rb +37 -37
  107. data/test/tc_synchronize.rb +75 -75
  108. data/test/tc_system_info.rb +33 -43
  109. data/test/tc_thread.rb +29 -29
  110. data/test/tc_time.rb +32 -32
  111. data/test/tc_tool_helper.rb +29 -29
  112. data/test/tc_unicode.rb +62 -62
  113. data/test/tc_volume.rb +47 -47
  114. data/test/tc_window.rb +45 -45
  115. data/test/tc_window_classes.rb +33 -33
  116. data/test/tc_window_dialog.rb +33 -33
  117. data/test/tc_window_menu.rb +29 -29
  118. data/test/tc_window_message.rb +33 -33
  119. data/test/tc_window_properties.rb +29 -29
  120. data/test/tc_window_timer.rb +29 -29
  121. data/test/tc_wsa.rb +19 -0
  122. data/windows-pr.gemspec +1 -1
  123. metadata +13 -7
data/lib/windows/path.rb CHANGED
@@ -1,141 +1,143 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Path
5
- API.auto_namespace = 'Windows::Path'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- # These constants are for use by the PathGetCharType() function.
11
-
12
- GCT_INVALID = 0x0000 # Character is not valid in a path.
13
- GCT_LFNCHAR = 0x0001 # Character is valid in a long file name.
14
- GCT_SHORTCHAR = 0x0002 # Character is valid in a short (8.3) file name.
15
- GCT_WILD = 0x0004 # Character is a wildcard character.
16
- GCT_SEPARATOR = 0x0008 # Character is a path separator.
17
-
18
- URL_UNESCAPE = 0x10000000
19
- URL_ESCAPE_UNSAFE = 0x20000000
20
- URL_PLUGGABLE_PROTOCOL = 0x40000000
21
- URL_WININET_COMPATIBILITY = 0x80000000
22
- URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000
23
- URL_DONT_UNESCAPE_EXTRA_INFO = URL_DONT_ESCAPE_EXTRA_INFO
24
- URL_BROWSER_MODE = URL_DONT_ESCAPE_EXTRA_INFO
25
- URL_ESCAPE_SPACES_ONLY = 0x04000000
26
- URL_DONT_SIMPLIFY = 0x08000000
27
- URL_NO_META = URL_DONT_SIMPLIFY
28
- URL_UNESCAPE_INPLACE = 0x00100000
29
- URL_CONVERT_IF_DOSPATH = 0x00200000
30
- URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000
31
- URL_INTERNAL_PATH = 0x00800000
32
- URL_FILE_USE_PATHURL = 0x00010000
33
- URL_DONT_UNESCAPE = 0x00020000
34
- URL_ESCAPE_PERCENT = 0x00001000
35
- URL_ESCAPE_SEGMENT_ONLY = 0x00002000
36
- URL_PARTFLAG_KEEPSCHEME = 0x00000001
37
- URL_APPLY_DEFAULT = 0x00000001
38
- URL_APPLY_GUESSSCHEME = 0x00000002
39
- URL_APPLY_GUESSFILE = 0x00000004
40
- URL_APPLY_FORCEAPPLY = 0x00000008
41
-
42
- # URLIS enum
43
-
44
- URLIS_URL = 1
45
- URLIS_OPAQUE = 2
46
- URLIS_NOHISTORY = 3
47
- URLIS_FILEURL = 4
48
- URLIS_APPLIABLE = 5
49
- URLIS_DIRECTORY = 6
50
- URLIS_HASQUERY = 7
51
-
52
- API.new('PathAddBackslash', 'P', 'P', 'shlwapi')
53
- API.new('PathAddExtension', 'PS', 'B', 'shlwapi')
54
- API.new('PathAppend', 'PS', 'B', 'shlwapi')
55
- API.new('PathBuildRoot', 'PI', 'P', 'shlwapi')
56
- API.new('PathCanonicalize', 'PS', 'B', 'shlwapi')
57
- API.new('PathCombine', 'PSS', 'P', 'shlwapi')
58
- API.new('PathCommonPrefix', 'SSP', 'I', 'shlwapi')
59
- API.new('PathCompactPath', 'PPI', 'B', 'shlwapi')
60
- API.new('PathCompactPathEx', 'PPIL', 'B', 'shlwapi')
61
- API.new('PathCreateFromUrl', 'SPPL', 'L', 'shlwapi')
62
- API.new('PathFileExists', 'S', 'B', 'shlwapi')
63
- API.new('PathFindExtension', 'S', 'P', 'shlwapi')
64
- API.new('PathFindFileName', 'S', 'P', 'shlwapi')
65
- API.new('PathFindNextComponent', 'S', 'P', 'shlwapi')
66
- API.new('PathFindOnPath', 'PS', 'B', 'shlwapi')
67
- API.new('PathFindSuffixArray', 'SSI', 'P', 'shlwapi')
68
- API.new('PathGetArgs', 'S', 'P', 'shlwapi')
69
- API.new('PathGetCharType', 'P', 'I', 'shlwapi')
70
- API.new('PathGetDriveNumber', 'S', 'I', 'shlwapi')
71
- API.new('PathIsContentType', 'SS', 'B', 'shlwapi')
72
- API.new('PathIsDirectory', 'S', 'B', 'shlwapi')
73
- API.new('PathIsDirectoryEmpty', 'S', 'B', 'shlwapi')
74
- API.new('PathIsFileSpec', 'S', 'B', 'shlwapi')
75
- API.new('PathIsLFNFileSpec', 'S', 'B', 'shlwapi')
76
- API.new('PathIsNetworkPath', 'S', 'B', 'shlwapi')
77
- API.new('PathIsPrefix', 'SS', 'B', 'shlwapi')
78
- API.new('PathIsRelative', 'S', 'B', 'shlwapi')
79
- API.new('PathIsRoot', 'S', 'B', 'shlwapi')
80
- API.new('PathIsSameRoot', 'SS', 'B', 'shlwapi')
81
- API.new('PathIsSystemFolder', 'SL', 'B', 'shlwapi')
82
- API.new('PathIsUNC', 'S', 'B', 'shlwapi')
83
- API.new('PathIsUNCServer', 'S', 'B', 'shlwapi')
84
- API.new('PathIsUNCServerShare', 'S', 'B', 'shlwapi')
85
- API.new('PathIsURL', 'S', 'B', 'shlwapi')
86
- API.new('PathMakePretty', 'P', 'B', 'shlwapi')
87
- API.new('PathMakeSystemFolder', 'S', 'B', 'shlwapi')
88
- API.new('PathMatchSpec', 'SS', 'B', 'shlwapi')
89
- API.new('PathParseIconLocation', 'P', 'I', 'shlwapi')
90
- API.new('PathQuoteSpaces', 'P', 'V', 'shlwapi')
91
- API.new('PathRelativePathTo', 'PPLPL', 'B', 'shlwapi')
92
- API.new('PathRemoveArgs', 'P', 'V', 'shlwapi')
93
- API.new('PathRemoveBackslash', 'P', 'P', 'shlwapi')
94
- API.new('PathRemoveBlanks', 'P', 'V', 'shlwapi')
95
- API.new('PathRemoveExtension', 'P','V', 'shlwapi')
96
- API.new('PathRemoveFileSpec', 'P', 'B', 'shlwapi')
97
- API.new('PathRenameExtension', 'PS', 'B', 'shlwapi')
98
- API.new('PathSearchAndQualify', 'SPI', 'B', 'shlwapi')
99
- API.new('PathSetDlgItemPath', 'LIS', 'V', 'shlwapi')
100
- API.new('PathSkipRoot', 'S', 'P', 'shlwapi')
101
- API.new('PathStripPath', 'P', 'V', 'shlwapi')
102
- API.new('PathStripToRoot', 'P', 'B', 'shlwapi')
103
- API.new('PathUndecorate', 'P', 'V', 'shlwapi')
104
- API.new('PathUnExpandEnvStrings', 'SPI', 'B', 'shlwapi')
105
- API.new('PathUnmakeSystemFolder', 'S', 'B', 'shlwapi')
106
- API.new('PathUnquoteSpaces', 'P', 'V', 'shlwapi')
107
-
108
- API.new('UrlApplyScheme', 'SPPL', 'L', 'shlwapi')
109
- API.new('UrlCanonicalize', 'SPPL', 'L', 'shlwapi')
110
- API.new('UrlCombine', 'SSPPL', 'L', 'shlwapi')
111
- API.new('UrlCompare', 'SSI', 'I', 'shlwapi')
112
- API.new('UrlCreateFromPath', 'SPPL', 'L', 'shlwapi')
113
- API.new('UrlEscape', 'SPPL', 'L', 'shlwapi')
114
- API.new('UrlGetLocation', 'S', 'P', 'shlwapi')
115
- API.new('UrlGetPart', 'SPPLL', 'L', 'shlwapi')
116
- API.new('UrlHash', 'SPL', 'L', 'shlwapi')
117
- API.new('UrlIs', 'SL', 'B', 'shlwapi')
118
- API.new('UrlIsNoHistory', 'S', 'B', 'shlwapi')
119
- API.new('UrlIsOpaque', 'S', 'B', 'shlwapi')
120
- API.new('UrlUnescape', 'PPPL', 'L', 'shlwapi')
121
-
122
- # Macros
123
-
124
- def UrlEscapeSpaces(pszUrl, pszEscaped, pcchEscaped)
125
- UrlCanonicalize.call(
126
- pszUrl,
127
- pszEscaped,
128
- pcchEscaped,
129
- URL_ESCAPE_SPACES_ONLY | URL_DONT_ESCAPE_EXTRA_INFO
130
- )
131
- end
132
-
133
- def UrlIsFileUrl(pszUrl)
134
- UrlIsA.call(pszUrl, URLIS_FILEURL)
135
- end
136
-
137
- def UrlUnescapeInPlace(pszUrl, dwFlags)
138
- UrlUnescape.call(pszUrl, nil, nil, dwFlags | URL_UNESCAPE_INPLACE)
139
- end
140
- end
141
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Path
5
+ API.auto_namespace = 'Windows::Path'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ private
11
+
12
+ # These constants are for use by the PathGetCharType() function.
13
+
14
+ GCT_INVALID = 0x0000 # Character is not valid in a path.
15
+ GCT_LFNCHAR = 0x0001 # Character is valid in a long file name.
16
+ GCT_SHORTCHAR = 0x0002 # Character is valid in a short (8.3) file name.
17
+ GCT_WILD = 0x0004 # Character is a wildcard character.
18
+ GCT_SEPARATOR = 0x0008 # Character is a path separator.
19
+
20
+ URL_UNESCAPE = 0x10000000
21
+ URL_ESCAPE_UNSAFE = 0x20000000
22
+ URL_PLUGGABLE_PROTOCOL = 0x40000000
23
+ URL_WININET_COMPATIBILITY = 0x80000000
24
+ URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000
25
+ URL_DONT_UNESCAPE_EXTRA_INFO = URL_DONT_ESCAPE_EXTRA_INFO
26
+ URL_BROWSER_MODE = URL_DONT_ESCAPE_EXTRA_INFO
27
+ URL_ESCAPE_SPACES_ONLY = 0x04000000
28
+ URL_DONT_SIMPLIFY = 0x08000000
29
+ URL_NO_META = URL_DONT_SIMPLIFY
30
+ URL_UNESCAPE_INPLACE = 0x00100000
31
+ URL_CONVERT_IF_DOSPATH = 0x00200000
32
+ URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000
33
+ URL_INTERNAL_PATH = 0x00800000
34
+ URL_FILE_USE_PATHURL = 0x00010000
35
+ URL_DONT_UNESCAPE = 0x00020000
36
+ URL_ESCAPE_PERCENT = 0x00001000
37
+ URL_ESCAPE_SEGMENT_ONLY = 0x00002000
38
+ URL_PARTFLAG_KEEPSCHEME = 0x00000001
39
+ URL_APPLY_DEFAULT = 0x00000001
40
+ URL_APPLY_GUESSSCHEME = 0x00000002
41
+ URL_APPLY_GUESSFILE = 0x00000004
42
+ URL_APPLY_FORCEAPPLY = 0x00000008
43
+
44
+ # URLIS enum
45
+
46
+ URLIS_URL = 1
47
+ URLIS_OPAQUE = 2
48
+ URLIS_NOHISTORY = 3
49
+ URLIS_FILEURL = 4
50
+ URLIS_APPLIABLE = 5
51
+ URLIS_DIRECTORY = 6
52
+ URLIS_HASQUERY = 7
53
+
54
+ API.new('PathAddBackslash', 'P', 'P', 'shlwapi')
55
+ API.new('PathAddExtension', 'PS', 'B', 'shlwapi')
56
+ API.new('PathAppend', 'PS', 'B', 'shlwapi')
57
+ API.new('PathBuildRoot', 'PI', 'P', 'shlwapi')
58
+ API.new('PathCanonicalize', 'PS', 'B', 'shlwapi')
59
+ API.new('PathCombine', 'PSS', 'P', 'shlwapi')
60
+ API.new('PathCommonPrefix', 'SSP', 'I', 'shlwapi')
61
+ API.new('PathCompactPath', 'PPI', 'B', 'shlwapi')
62
+ API.new('PathCompactPathEx', 'PPIL', 'B', 'shlwapi')
63
+ API.new('PathCreateFromUrl', 'SPPL', 'L', 'shlwapi')
64
+ API.new('PathFileExists', 'S', 'B', 'shlwapi')
65
+ API.new('PathFindExtension', 'S', 'P', 'shlwapi')
66
+ API.new('PathFindFileName', 'S', 'P', 'shlwapi')
67
+ API.new('PathFindNextComponent', 'S', 'P', 'shlwapi')
68
+ API.new('PathFindOnPath', 'PS', 'B', 'shlwapi')
69
+ API.new('PathFindSuffixArray', 'SSI', 'P', 'shlwapi')
70
+ API.new('PathGetArgs', 'S', 'P', 'shlwapi')
71
+ API.new('PathGetCharType', 'P', 'I', 'shlwapi')
72
+ API.new('PathGetDriveNumber', 'S', 'I', 'shlwapi')
73
+ API.new('PathIsContentType', 'SS', 'B', 'shlwapi')
74
+ API.new('PathIsDirectory', 'S', 'B', 'shlwapi')
75
+ API.new('PathIsDirectoryEmpty', 'S', 'B', 'shlwapi')
76
+ API.new('PathIsFileSpec', 'S', 'B', 'shlwapi')
77
+ API.new('PathIsLFNFileSpec', 'S', 'B', 'shlwapi')
78
+ API.new('PathIsNetworkPath', 'S', 'B', 'shlwapi')
79
+ API.new('PathIsPrefix', 'SS', 'B', 'shlwapi')
80
+ API.new('PathIsRelative', 'S', 'B', 'shlwapi')
81
+ API.new('PathIsRoot', 'S', 'B', 'shlwapi')
82
+ API.new('PathIsSameRoot', 'SS', 'B', 'shlwapi')
83
+ API.new('PathIsSystemFolder', 'SL', 'B', 'shlwapi')
84
+ API.new('PathIsUNC', 'S', 'B', 'shlwapi')
85
+ API.new('PathIsUNCServer', 'S', 'B', 'shlwapi')
86
+ API.new('PathIsUNCServerShare', 'S', 'B', 'shlwapi')
87
+ API.new('PathIsURL', 'S', 'B', 'shlwapi')
88
+ API.new('PathMakePretty', 'P', 'B', 'shlwapi')
89
+ API.new('PathMakeSystemFolder', 'S', 'B', 'shlwapi')
90
+ API.new('PathMatchSpec', 'SS', 'B', 'shlwapi')
91
+ API.new('PathParseIconLocation', 'P', 'I', 'shlwapi')
92
+ API.new('PathQuoteSpaces', 'P', 'V', 'shlwapi')
93
+ API.new('PathRelativePathTo', 'PPLPL', 'B', 'shlwapi')
94
+ API.new('PathRemoveArgs', 'P', 'V', 'shlwapi')
95
+ API.new('PathRemoveBackslash', 'P', 'P', 'shlwapi')
96
+ API.new('PathRemoveBlanks', 'P', 'V', 'shlwapi')
97
+ API.new('PathRemoveExtension', 'P','V', 'shlwapi')
98
+ API.new('PathRemoveFileSpec', 'P', 'B', 'shlwapi')
99
+ API.new('PathRenameExtension', 'PS', 'B', 'shlwapi')
100
+ API.new('PathSearchAndQualify', 'SPI', 'B', 'shlwapi')
101
+ API.new('PathSetDlgItemPath', 'LIS', 'V', 'shlwapi')
102
+ API.new('PathSkipRoot', 'S', 'P', 'shlwapi')
103
+ API.new('PathStripPath', 'P', 'V', 'shlwapi')
104
+ API.new('PathStripToRoot', 'P', 'B', 'shlwapi')
105
+ API.new('PathUndecorate', 'P', 'V', 'shlwapi')
106
+ API.new('PathUnExpandEnvStrings', 'SPI', 'B', 'shlwapi')
107
+ API.new('PathUnmakeSystemFolder', 'S', 'B', 'shlwapi')
108
+ API.new('PathUnquoteSpaces', 'P', 'V', 'shlwapi')
109
+
110
+ API.new('UrlApplyScheme', 'SPPL', 'L', 'shlwapi')
111
+ API.new('UrlCanonicalize', 'SPPL', 'L', 'shlwapi')
112
+ API.new('UrlCombine', 'SSPPL', 'L', 'shlwapi')
113
+ API.new('UrlCompare', 'SSI', 'I', 'shlwapi')
114
+ API.new('UrlCreateFromPath', 'SPPL', 'L', 'shlwapi')
115
+ API.new('UrlEscape', 'SPPL', 'L', 'shlwapi')
116
+ API.new('UrlGetLocation', 'S', 'P', 'shlwapi')
117
+ API.new('UrlGetPart', 'SPPLL', 'L', 'shlwapi')
118
+ API.new('UrlHash', 'SPL', 'L', 'shlwapi')
119
+ API.new('UrlIs', 'SL', 'B', 'shlwapi')
120
+ API.new('UrlIsNoHistory', 'S', 'B', 'shlwapi')
121
+ API.new('UrlIsOpaque', 'S', 'B', 'shlwapi')
122
+ API.new('UrlUnescape', 'PPPL', 'L', 'shlwapi')
123
+
124
+ # Macros
125
+
126
+ def UrlEscapeSpaces(pszUrl, pszEscaped, pcchEscaped)
127
+ UrlCanonicalize.call(
128
+ pszUrl,
129
+ pszEscaped,
130
+ pcchEscaped,
131
+ URL_ESCAPE_SPACES_ONLY | URL_DONT_ESCAPE_EXTRA_INFO
132
+ )
133
+ end
134
+
135
+ def UrlIsFileUrl(pszUrl)
136
+ UrlIsA.call(pszUrl, URLIS_FILEURL)
137
+ end
138
+
139
+ def UrlUnescapeInPlace(pszUrl, dwFlags)
140
+ UrlUnescape.call(pszUrl, nil, nil, dwFlags | URL_UNESCAPE_INPLACE)
141
+ end
142
+ end
143
+ end
data/lib/windows/pipe.rb CHANGED
@@ -1,40 +1,42 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Pipe
5
- API.auto_namespace = 'Windows::Pipe'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- NMPWAIT_NOWAIT = 0x00000001
11
- NMPWAIT_WAIT_FOREVER = 0xffffffff
12
- NMPWAIT_USE_DEFAULT_WAIT = 0x00000000
13
-
14
- PIPE_WAIT = 0x00000000
15
- PIPE_NOWAIT = 0x00000001
16
- PIPE_ACCESS_INBOUND = 0x00000001
17
- PIPE_ACCESS_OUTBOUND = 0x00000002
18
- PIPE_ACCESS_DUPLEX = 0x00000003
19
- PIPE_TYPE_BYTE = 0x00000000
20
- PIPE_TYPE_MESSAGE = 0x00000004
21
- PIPE_READMODE_BYTE = 0x00000000
22
- PIPE_READMODE_MESSAGE = 0x00000002
23
- PIPE_CLIENT_END = 0x00000000
24
- PIPE_SERVER_END = 0x00000001
25
-
26
- PIPE_UNLIMITED_INSTANCES = 255
27
-
28
- API.new('CallNamedPipe', 'PPLPLPL', 'B')
29
- API.new('ConnectNamedPipe', 'LP', 'B')
30
- API.new('CreateNamedPipe', 'PLLLLLLL', 'L')
31
- API.new('CreatePipe', 'PPPL', 'B')
32
- API.new('DisconnectNamedPipe', 'L', 'B')
33
- API.new('GetNamedPipeHandleState', 'LPPPPPL', 'B')
34
- API.new('GetNamedPipeInfo', 'LPPPP', 'B')
35
- API.new('PeekNamedPipe', 'LPLPPP', 'B')
36
- API.new('SetNamedPipeHandleState', 'LPPP', 'B')
37
- API.new('TransactNamedPipe', 'LPLPLPP', 'B')
38
- API.new('WaitNamedPipe', 'PL', 'B')
39
- end
40
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Pipe
5
+ API.auto_namespace = 'Windows::Pipe'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ private
11
+
12
+ NMPWAIT_NOWAIT = 0x00000001
13
+ NMPWAIT_WAIT_FOREVER = 0xffffffff
14
+ NMPWAIT_USE_DEFAULT_WAIT = 0x00000000
15
+
16
+ PIPE_WAIT = 0x00000000
17
+ PIPE_NOWAIT = 0x00000001
18
+ PIPE_ACCESS_INBOUND = 0x00000001
19
+ PIPE_ACCESS_OUTBOUND = 0x00000002
20
+ PIPE_ACCESS_DUPLEX = 0x00000003
21
+ PIPE_TYPE_BYTE = 0x00000000
22
+ PIPE_TYPE_MESSAGE = 0x00000004
23
+ PIPE_READMODE_BYTE = 0x00000000
24
+ PIPE_READMODE_MESSAGE = 0x00000002
25
+ PIPE_CLIENT_END = 0x00000000
26
+ PIPE_SERVER_END = 0x00000001
27
+
28
+ PIPE_UNLIMITED_INSTANCES = 255
29
+
30
+ API.new('CallNamedPipe', 'PPLPLPL', 'B')
31
+ API.new('ConnectNamedPipe', 'LP', 'B')
32
+ API.new('CreateNamedPipe', 'PLLLLLLL', 'L')
33
+ API.new('CreatePipe', 'PPPL', 'B')
34
+ API.new('DisconnectNamedPipe', 'L', 'B')
35
+ API.new('GetNamedPipeHandleState', 'LPPPPPL', 'B')
36
+ API.new('GetNamedPipeInfo', 'LPPPP', 'B')
37
+ API.new('PeekNamedPipe', 'LPLPPP', 'B')
38
+ API.new('SetNamedPipeHandleState', 'LPPP', 'B')
39
+ API.new('TransactNamedPipe', 'LPLPLPP', 'B')
40
+ API.new('WaitNamedPipe', 'PL', 'B')
41
+ end
42
+ end
@@ -10,6 +10,8 @@ module Windows
10
10
  API.auto_method = true
11
11
  API.auto_unicode = true
12
12
 
13
+ private
14
+
13
15
  # Process access rights
14
16
 
15
17
  PROCESS_ALL_ACCESS = 0x1F0FFF
@@ -1,126 +1,171 @@
1
- require 'windows/file'
2
-
3
- module Windows
4
- module Registry
5
- API.auto_namespace = 'Windows::Registry'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- include Windows::File
11
-
12
- HKEY_CLASSES_ROOT = 0x80000000
13
- KEY_CURRENT_USER = 0x80000001
14
- HKEY_LOCAL_MACHINE = 0x80000002
15
- HKEY_USERS = 0x80000003
16
- HKEY_PERFORMANCE_DATA = 0x80000004
17
- HKEY_PERFORMANCE_TEXT = 0x80000050
18
- HKEY_PERFORMANCE_NLSTEXT = 0x80000060
19
- HKEY_CURRENT_CONFIG = 0x80000005
20
- HKEY_DYN_DATA = 0x80000006
21
-
22
- KEY_QUERY_VALUE = 0x0001
23
- KEY_SET_VALUE = 0x0002
24
- KEY_CREATE_SUB_KEY = 0x0004
25
- KEY_ENUMERATE_SUB_KEYS = 0x0008
26
- KEY_NOTIFY = 0x0010
27
- KEY_CREATE_LINK = 0x0020
28
- KEY_WOW64_32KEY = 0x0200
29
- KEY_WOW64_64KEY = 0x0100
30
- KEY_WOW64_RES = 0x0300
31
-
32
- KEY_READ = (STANDARD_RIGHTS_READ|KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|
33
- KEY_NOTIFY) & (~SYNCHRONIZE)
34
-
35
- KEY_WRITE = (STANDARD_RIGHTS_WRITE|KEY_SET_VALUE|
36
- KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)
37
-
38
- KEY_EXECUTE = KEY_READ & (~SYNCHRONIZE)
39
-
40
- KEY_ALL_ACCESS = (STANDARD_RIGHTS_ALL|KEY_QUERY_VALUE|KEY_SET_VALUE|
41
- KEY_CREATE_SUB_KEY|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY|
42
- KEY_CREATE_LINK) & (~SYNCHRONIZE)
43
-
44
- REG_OPTION_RESERVED = 0
45
- REG_OPTION_NON_VOLATILE = 0
46
- REG_OPTION_VOLATILE = 1
47
- REG_OPTION_CREATE_LINK = 2
48
- REG_OPTION_BACKUP_RESTORE = 4
49
- REG_OPTION_OPEN_LINK = 8
50
-
51
- REG_LEGAL_OPTION = REG_OPTION_RESERVED|REG_OPTION_NON_VOLATILE|
52
- REG_OPTION_VOLATILE|REG_OPTION_CREATE_LINK|REG_OPTION_BACKUP_RESTORE|
53
- REG_OPTION_OPEN_LINK
54
-
55
- REG_CREATED_NEW_KEY = 1
56
- REG_OPENED_EXISTING_KEY = 2
57
-
58
- REG_STANDARD_FORMAT = 1
59
- REG_LATEST_FORMAT = 2
60
- REG_NO_COMPRESSION = 4
61
-
62
- REG_WHOLE_HIVE_VOLATILE = 1
63
- REG_REFRESH_HIVE = 2
64
- REG_NO_LAZY_FLUSH = 4
65
- REG_FORCE_RESTORE = 8
66
-
67
- REG_FORCE_UNLOAD = 1
68
-
69
- REG_NOTIFY_CHANGE_NAME = 1
70
- REG_NOTIFY_CHANGE_ATTRIBUTES = 2
71
- REG_NOTIFY_CHANGE_LAST_SET = 4
72
- REG_NOTIFY_CHANGE_SECURITY = 8
73
-
74
- REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME|
75
- REG_NOTIFY_CHANGE_ATTRIBUTES|REG_NOTIFY_CHANGE_LAST_SET|
76
- REG_NOTIFY_CHANGE_SECURITY
77
-
78
- REG_NONE = 0
79
- REG_SZ = 1
80
- REG_EXPAND_SZ = 2
81
- REG_BINARY = 3
82
- REG_DWORD = 4
83
- REG_DWORD_LITTLE_ENDIAN = 4
84
- REG_DWORD_BIG_ENDIAN = 5
85
- REG_LINK = 6
86
- REG_MULTI_SZ = 7
87
- REG_RESOURCE_LIST = 8
88
- REG_FULL_RESOURCE_DESCRIPTOR = 9
89
- REG_RESOURCE_REQUIREMENTS_LIST = 10
90
- REG_QWORD = 11
91
- REG_QWORD_LITTLE_ENDIAN = 11
92
-
93
- API.new('RegCloseKey', 'L', 'L', 'advapi32')
94
- API.new('RegConnectRegistry', 'PLP', 'L', 'advapi32')
95
- API.new('RegCreateKey', 'LPP', 'L', 'advapi32')
96
- API.new('RegCreateKeyEx', 'LPLPLLPPP', 'L', 'advapi32')
97
- API.new('RegDeleteKey', 'LP', 'L', 'advapi32')
98
- API.new('RegDeleteValue', 'LP', 'L', 'advapi32')
99
- API.new('RegDisablePredefinedCache', 'V', 'L', 'advapi32')
100
- API.new('RegEnumKey', 'LLPL', 'L', 'advapi32')
101
- API.new('RegEnumKeyEx', 'LLPPPPPP', 'L', 'advapi32')
102
- API.new('RegEnumValue', 'LLPPPPPP', 'L', 'advapi32')
103
- API.new('RegFlushKey', 'L', 'L', 'advapi32')
104
- API.new('RegLoadKey', 'LPP', 'L', 'advapi32')
105
- API.new('RegNotifyChangeKeyValue', 'LILLI', 'L', 'advapi32')
106
- API.new('RegOpenCurrentUser', 'LP', 'L', 'advapi32')
107
- API.new('RegOpenKey', 'LPP', 'L', 'advapi32')
108
- API.new('RegOpenKeyEx', 'LPLLP', 'L', 'advapi32')
109
- API.new('RegOpenUserClassesRoot', 'LLLP', 'L', 'advapi32')
110
- API.new('RegOverridePredefKey', 'LL', 'L', 'advapi32')
111
- API.new('RegQueryInfoKey', 'LPPPPPPPPPPP', 'L', 'advapi32')
112
- API.new('RegQueryMultipleValues', 'LPLPP', 'L', 'advapi32')
113
- API.new('RegQueryValueEx', 'LPPPPP', 'L', 'advapi32')
114
- API.new('RegReplaceKey', 'LPPP', 'L', 'advapi32')
115
- API.new('RegRestoreKey', 'LPL', 'L', 'advapi32')
116
- API.new('RegSaveKey', 'LPP', 'L', 'advapi32')
117
- API.new('RegSetValueEx', 'LPLLPL', 'L', 'advapi32')
118
- API.new('RegUnLoadKey', 'LP', 'L', 'advapi32')
119
-
120
- begin
121
- API.new('RegSaveKeyEx', 'LPPL', 'L', 'advapi32')
122
- rescue Win32::API::LoadLibraryError
123
- # Windows XP or later
124
- end
125
- end
126
- end
1
+ require 'windows/file'
2
+
3
+ module Windows
4
+ module Registry
5
+ API.auto_namespace = 'Windows::Registry'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ private
11
+
12
+ include Windows::File
13
+
14
+ HKEY_CLASSES_ROOT = 0x80000000
15
+ HKEY_CURRENT_USER = 0x80000001
16
+ HKEY_LOCAL_MACHINE = 0x80000002
17
+ HKEY_USERS = 0x80000003
18
+ HKEY_PERFORMANCE_DATA = 0x80000004
19
+ HKEY_PERFORMANCE_TEXT = 0x80000050
20
+ HKEY_PERFORMANCE_NLSTEXT = 0x80000060
21
+ HKEY_CURRENT_CONFIG = 0x80000005
22
+ HKEY_DYN_DATA = 0x80000006
23
+
24
+ KEY_QUERY_VALUE = 0x0001
25
+ KEY_SET_VALUE = 0x0002
26
+ KEY_CREATE_SUB_KEY = 0x0004
27
+ KEY_ENUMERATE_SUB_KEYS = 0x0008
28
+ KEY_NOTIFY = 0x0010
29
+ KEY_CREATE_LINK = 0x0020
30
+ KEY_WOW64_32KEY = 0x0200
31
+ KEY_WOW64_64KEY = 0x0100
32
+ KEY_WOW64_RES = 0x0300
33
+
34
+ KEY_READ = (STANDARD_RIGHTS_READ|KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|
35
+ KEY_NOTIFY) & (~SYNCHRONIZE)
36
+
37
+ KEY_WRITE = (STANDARD_RIGHTS_WRITE|KEY_SET_VALUE|
38
+ KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)
39
+
40
+ KEY_EXECUTE = KEY_READ & (~SYNCHRONIZE)
41
+
42
+ KEY_ALL_ACCESS = (STANDARD_RIGHTS_ALL|KEY_QUERY_VALUE|KEY_SET_VALUE|
43
+ KEY_CREATE_SUB_KEY|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY|
44
+ KEY_CREATE_LINK) & (~SYNCHRONIZE)
45
+
46
+ REG_OPTION_RESERVED = 0
47
+ REG_OPTION_NON_VOLATILE = 0
48
+ REG_OPTION_VOLATILE = 1
49
+ REG_OPTION_CREATE_LINK = 2
50
+ REG_OPTION_BACKUP_RESTORE = 4
51
+ REG_OPTION_OPEN_LINK = 8
52
+
53
+ REG_LEGAL_OPTION = REG_OPTION_RESERVED|REG_OPTION_NON_VOLATILE|
54
+ REG_OPTION_VOLATILE|REG_OPTION_CREATE_LINK|REG_OPTION_BACKUP_RESTORE|
55
+ REG_OPTION_OPEN_LINK
56
+
57
+ REG_CREATED_NEW_KEY = 1
58
+ REG_OPENED_EXISTING_KEY = 2
59
+
60
+ REG_STANDARD_FORMAT = 1
61
+ REG_LATEST_FORMAT = 2
62
+ REG_NO_COMPRESSION = 4
63
+
64
+ REG_WHOLE_HIVE_VOLATILE = 1
65
+ REG_REFRESH_HIVE = 2
66
+ REG_NO_LAZY_FLUSH = 4
67
+ REG_FORCE_RESTORE = 8
68
+
69
+ REG_FORCE_UNLOAD = 1
70
+
71
+ REG_NOTIFY_CHANGE_NAME = 1
72
+ REG_NOTIFY_CHANGE_ATTRIBUTES = 2
73
+ REG_NOTIFY_CHANGE_LAST_SET = 4
74
+ REG_NOTIFY_CHANGE_SECURITY = 8
75
+
76
+ REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME|
77
+ REG_NOTIFY_CHANGE_ATTRIBUTES|REG_NOTIFY_CHANGE_LAST_SET|
78
+ REG_NOTIFY_CHANGE_SECURITY
79
+
80
+ REG_NONE = 0
81
+ REG_SZ = 1
82
+ REG_EXPAND_SZ = 2
83
+ REG_BINARY = 3
84
+ REG_DWORD = 4
85
+ REG_DWORD_LITTLE_ENDIAN = 4
86
+ REG_DWORD_BIG_ENDIAN = 5
87
+ REG_LINK = 6
88
+ REG_MULTI_SZ = 7
89
+ REG_RESOURCE_LIST = 8
90
+ REG_FULL_RESOURCE_DESCRIPTOR = 9
91
+ REG_RESOURCE_REQUIREMENTS_LIST = 10
92
+ REG_QWORD = 11
93
+ REG_QWORD_LITTLE_ENDIAN = 11
94
+
95
+ # Registry Routine Flags
96
+
97
+ RRF_RT_REG_NONE = 0x00000001 # restrict type to REG_NONE
98
+ RRF_RT_REG_SZ = 0x00000002 # restrict type to REG_SZ
99
+ RRF_RT_REG_EXPAND_SZ = 0x00000004 # restrict type to REG_EXPAND_SZ
100
+ RRF_RT_REG_BINARY = 0x00000008 # restrict type to REG_BINARY
101
+ RRF_RT_REG_DWORD = 0x00000010 # restrict type to REG_DWORD
102
+ RRF_RT_REG_MULTI_SZ = 0x00000020 # restrict type to REG_MULTI_SZ
103
+ RRF_RT_REG_QWORD = 0x00000040 # restrict type to REG_QWORD
104
+ RRF_RT_ANY = 0x0000ffff
105
+ RRF_NOEXPAND = 0x10000000
106
+ RRF_ZEROONFAILURE = 0x20000000
107
+ RRF_RT_DWORD = (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
108
+ RRF_RT_QWORD = (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
109
+
110
+ API.new('RegCloseKey', 'L', 'L', 'advapi32')
111
+ API.new('RegConnectRegistry', 'PLP', 'L', 'advapi32')
112
+ API.new('RegCreateKey', 'LPP', 'L', 'advapi32')
113
+ API.new('RegCreateKeyEx', 'LPLPLLPPP', 'L', 'advapi32')
114
+ API.new('RegDeleteKey', 'LP', 'L', 'advapi32')
115
+ API.new('RegDeleteValue', 'LP', 'L', 'advapi32')
116
+ API.new('RegDisablePredefinedCache', 'V', 'L', 'advapi32')
117
+ API.new('RegEnumKey', 'LLPL', 'L', 'advapi32')
118
+ API.new('RegEnumKeyEx', 'LLPPPPPP', 'L', 'advapi32')
119
+ API.new('RegEnumValue', 'LLPPPPPP', 'L', 'advapi32')
120
+ API.new('RegFlushKey', 'L', 'L', 'advapi32')
121
+ API.new('RegGetKeySecurity','LLPP','L','advapi32')
122
+ API.new('RegLoadKey', 'LPP', 'L', 'advapi32')
123
+ API.new('RegNotifyChangeKeyValue', 'LILLI', 'L', 'advapi32')
124
+ API.new('RegOpenCurrentUser', 'LP', 'L', 'advapi32')
125
+ API.new('RegOpenKey', 'LPP', 'L', 'advapi32')
126
+ API.new('RegOpenKeyEx', 'LPLLP', 'L', 'advapi32')
127
+ API.new('RegOpenUserClassesRoot', 'LLLP', 'L', 'advapi32')
128
+ API.new('RegOverridePredefKey', 'LL', 'L', 'advapi32')
129
+ API.new('RegQueryInfoKey', 'LPPPPPPPPPPP', 'L', 'advapi32')
130
+ API.new('RegQueryMultipleValues', 'LPLPP', 'L', 'advapi32')
131
+ API.new('RegQueryValueEx', 'LPPPPP', 'L', 'advapi32')
132
+ API.new('RegReplaceKey', 'LPPP', 'L', 'advapi32')
133
+ API.new('RegRestoreKey', 'LPL', 'L', 'advapi32')
134
+ API.new('RegSaveKey', 'LPP', 'L', 'advapi32')
135
+ API.new('RegSetKeySecurity','LLP','L','advapi32')
136
+ API.new('RegSetValueEx', 'LPLLPL', 'L', 'advapi32')
137
+ API.new('RegUnLoadKey', 'LP', 'L', 'advapi32')
138
+
139
+ begin
140
+ API.new('RegGetValue', 'LPPLPPP', 'L', 'advapi32')
141
+ rescue Win32::API::LoadLibraryError
142
+ # Windows XP 64 or later
143
+ end
144
+
145
+ begin
146
+ API.new('RegSaveKeyEx', 'LPPL', 'L', 'advapi32')
147
+ rescue Win32::API::LoadLibraryError
148
+ # Windows XP or later
149
+ end
150
+
151
+ begin
152
+ API.new('GetSystemRegistryQuota','LPLL','L')
153
+ API.new('RegDeleteKeyEx','LPLL','L','advapi32')
154
+ API.new('RegDisableReflectionKey', 'L', 'L', 'advapi32')
155
+ API.new('RegEnableReflectionKey', 'L', 'L', 'advapi32')
156
+ API.new('RegQueryReflectionKey','LB','L','advapi32')
157
+ API.new('RegCopyTree','LPL','L','advapi32')
158
+ API.new('RegCreateKeyTransacted','LPLPLLPPPLP','L','advapi32')
159
+ API.new('RegDeleteKeyValue','LP','L','advapi32')
160
+ API.new('RegDeleteTree','LP','L','advapi32')
161
+ API.new('RegDeleteKeyTransacted','LPLLLP','L','advapi32')
162
+ API.new('RegDisablePredefinedCacheEx', 'V', 'L', 'advapi32')
163
+ API.new('RegLoadAppKey','PPLLL','L','advapi32')
164
+ API.new('RegLoadMUIString', 'LPPLPLP', 'L', 'advapi32')
165
+ API.new('RegOpenKeyTransacted','LPLLPLP','L','advapi32')
166
+ API.new('RegSetKeyValue','LPPLPL','L','advapi32')
167
+ rescue Win32::API::LoadLibraryError
168
+ # Windows Vista or later
169
+ end
170
+ end
171
+ end