windows-pr 1.1.2 → 1.1.3

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 (115) hide show
  1. data/CHANGES +408 -404
  2. data/MANIFEST +65 -65
  3. data/README +149 -149
  4. data/Rakefile +52 -52
  5. data/doc/conversion_guide.txt +37 -37
  6. data/lib/windows/clipboard.rb +59 -59
  7. data/lib/windows/com.rb +190 -189
  8. data/lib/windows/com/automation.rb +147 -147
  9. data/lib/windows/com/variant.rb +22 -22
  10. data/lib/windows/console.rb +112 -112
  11. data/lib/windows/debug.rb +33 -33
  12. data/lib/windows/device_io.rb +246 -246
  13. data/lib/windows/directory.rb +25 -25
  14. data/lib/windows/error.rb +482 -482
  15. data/lib/windows/eventlog.rb +78 -78
  16. data/lib/windows/file.rb +262 -262
  17. data/lib/windows/file_mapping.rb +23 -23
  18. data/lib/windows/filesystem.rb +13 -13
  19. data/lib/windows/gdi/bitmap.rb +63 -63
  20. data/lib/windows/gdi/device_context.rb +44 -44
  21. data/lib/windows/gdi/metafile.rb +38 -38
  22. data/lib/windows/gdi/painting_drawing.rb +113 -113
  23. data/lib/windows/handle.rb +21 -21
  24. data/lib/windows/library.rb +42 -42
  25. data/lib/windows/limits.rb +31 -31
  26. data/lib/windows/mailslot.rb +22 -22
  27. data/lib/windows/memory.rb +126 -126
  28. data/lib/windows/msvcrt/buffer.rb +73 -73
  29. data/lib/windows/msvcrt/directory.rb +29 -29
  30. data/lib/windows/msvcrt/file.rb +45 -45
  31. data/lib/windows/msvcrt/io.rb +71 -71
  32. data/lib/windows/msvcrt/time.rb +167 -167
  33. data/lib/windows/national.rb +578 -578
  34. data/lib/windows/network/management.rb +523 -523
  35. data/lib/windows/network/snmp.rb +90 -90
  36. data/lib/windows/network/winsock.rb +126 -126
  37. data/lib/windows/nio.rb +48 -47
  38. data/lib/windows/ntfs/winternl.rb +96 -96
  39. data/lib/windows/path.rb +141 -141
  40. data/lib/windows/pipe.rb +40 -40
  41. data/lib/windows/process.rb +174 -174
  42. data/lib/windows/registry.rb +126 -126
  43. data/lib/windows/security.rb +477 -477
  44. data/lib/windows/security/authentication.rb +30 -30
  45. data/lib/windows/service.rb +140 -140
  46. data/lib/windows/shell.rb +169 -169
  47. data/lib/windows/sound.rb +37 -37
  48. data/lib/windows/synchronize.rb +131 -131
  49. data/lib/windows/system_info.rb +227 -222
  50. data/lib/windows/thread.rb +62 -62
  51. data/lib/windows/time.rb +46 -46
  52. data/lib/windows/tool_helper.rb +34 -34
  53. data/lib/windows/volume.rb +59 -59
  54. data/lib/windows/window.rb +79 -79
  55. data/lib/windows/window/classes.rb +57 -57
  56. data/lib/windows/window/dialog.rb +89 -89
  57. data/lib/windows/window/menu.rb +100 -100
  58. data/lib/windows/window/message.rb +295 -295
  59. data/lib/windows/window/properties.rb +18 -18
  60. data/lib/windows/window/timer.rb +17 -17
  61. data/test/tc_clipboard.rb +41 -41
  62. data/test/tc_com.rb +32 -32
  63. data/test/tc_com_automation.rb +15 -15
  64. data/test/tc_console.rb +108 -108
  65. data/test/tc_debug.rb +48 -48
  66. data/test/tc_device_io.rb +29 -29
  67. data/test/tc_directory.rb +25 -25
  68. data/test/tc_error.rb +49 -49
  69. data/test/tc_eventlog.rb +58 -58
  70. data/test/tc_file.rb +67 -67
  71. data/test/tc_file_mapping.rb +38 -38
  72. data/test/tc_filesystem.rb +27 -27
  73. data/test/tc_gdi_bitmap.rb +25 -25
  74. data/test/tc_gdi_metafile.rb +23 -23
  75. data/test/tc_handle.rb +36 -36
  76. data/test/tc_library.rb +37 -37
  77. data/test/tc_limits.rb +34 -34
  78. data/test/tc_mailslot.rb +22 -22
  79. data/test/tc_memory.rb +44 -44
  80. data/test/tc_msvcrt_buffer.rb +68 -68
  81. data/test/tc_msvcrt_directory.rb +98 -98
  82. data/test/tc_msvcrt_file.rb +80 -80
  83. data/test/tc_msvcrt_io.rb +48 -48
  84. data/test/tc_msvcrt_string.rb +93 -93
  85. data/test/tc_msvcrt_time.rb +29 -29
  86. data/test/tc_national.rb +38 -38
  87. data/test/tc_network_management.rb +32 -32
  88. data/test/tc_network_snmp.rb +31 -31
  89. data/test/tc_network_winsock.rb +34 -34
  90. data/test/tc_nio.rb +32 -32
  91. data/test/tc_ntfs_winternl.rb +29 -29
  92. data/test/tc_path.rb +90 -90
  93. data/test/tc_pipe.rb +53 -53
  94. data/test/tc_process.rb +24 -24
  95. data/test/tc_registry.rb +29 -29
  96. data/test/tc_security.rb +104 -104
  97. data/test/tc_security_authentication.rb +34 -34
  98. data/test/tc_service.rb +57 -57
  99. data/test/tc_shell.rb +34 -34
  100. data/test/tc_sound.rb +37 -37
  101. data/test/tc_synchronize.rb +75 -75
  102. data/test/tc_system_info.rb +43 -43
  103. data/test/tc_thread.rb +29 -29
  104. data/test/tc_time.rb +32 -32
  105. data/test/tc_tool_helper.rb +29 -29
  106. data/test/tc_volume.rb +47 -47
  107. data/test/tc_window.rb +45 -45
  108. data/test/tc_window_classes.rb +33 -33
  109. data/test/tc_window_dialog.rb +33 -33
  110. data/test/tc_window_menu.rb +29 -29
  111. data/test/tc_window_message.rb +33 -33
  112. data/test/tc_window_properties.rb +29 -29
  113. data/test/tc_window_timer.rb +29 -29
  114. data/windows-pr.gemspec +34 -34
  115. metadata +4 -4
@@ -1,38 +1,38 @@
1
- == Parameters
2
- Long: 'L'
3
- Integer: 'I'
4
- Pointer: 'P'
5
- Void: 'V'
6
- String: 'S'
7
- Callback: 'K' # win32-api only
8
-
9
- == Windows Data Types
10
- BOOL => 'I' (or 'B', win32-api only)
11
- DWORD => 'L'
12
- HANDLE => 'L'
13
- LPDWORD => 'P' (or 'L')
14
- LPTSTR => 'P'
15
- LPCTSTR => 'S'
16
- UINT => 'L'
17
- VOID => 'V'
18
- WORD => 'I'
19
- LPVOID => 'L' (or 'P')
20
- CALLBACK => 'K'
21
-
22
- == C Data Types
23
- void => 'V'
24
- void* => 'P'
25
- char* => 'P'
26
- const char* => 'L'
27
- int => 'I'
28
- long => 'L'
29
- struct => 'P'
30
- struct* => 'P'
31
-
32
- == Notes
33
- In practice most LPVOID types should be designated as 'L' because this
34
- usually means the function is looking for an address. Check the documentation
35
- for details.
36
-
37
- If using the windows-api library, you can use 'B' instead of 'I' for the return
1
+ == Parameters
2
+ Long: 'L'
3
+ Integer: 'I'
4
+ Pointer: 'P'
5
+ Void: 'V'
6
+ String: 'S'
7
+ Callback: 'K' # win32-api only
8
+
9
+ == Windows Data Types
10
+ BOOL => 'I' (or 'B', win32-api only)
11
+ DWORD => 'L'
12
+ HANDLE => 'L'
13
+ LPDWORD => 'P' (or 'L')
14
+ LPTSTR => 'P'
15
+ LPCTSTR => 'S'
16
+ UINT => 'L'
17
+ VOID => 'V'
18
+ WORD => 'I'
19
+ LPVOID => 'L' (or 'P')
20
+ CALLBACK => 'K'
21
+
22
+ == C Data Types
23
+ void => 'V'
24
+ void* => 'P'
25
+ char* => 'P'
26
+ const char* => 'L'
27
+ int => 'I'
28
+ long => 'L'
29
+ struct => 'P'
30
+ struct* => 'P'
31
+
32
+ == Notes
33
+ In practice most LPVOID types should be designated as 'L' because this
34
+ usually means the function is looking for an address. Check the documentation
35
+ for details.
36
+
37
+ If using the windows-api library, you can use 'B' instead of 'I' for the return
38
38
  type for functions that return a BOOL.
@@ -1,59 +1,59 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Clipboard
5
- API.auto_namespace = 'Windows::Clipboard'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- CF_TEXT = 1
11
- CF_BITMAP = 2
12
- CF_METAFILEPICT = 3
13
- CF_SYLK = 4
14
- CF_DIF = 5
15
- CF_TIFF = 6
16
- CF_OEMTEXT = 7
17
- CF_DIB = 8
18
- CF_PALETTE = 9
19
- CF_PENDATA = 10
20
- CF_RIFF = 11
21
- CF_WAVE = 12
22
- CF_UNICODETEXT = 13
23
- CF_ENHMETAFILE = 14
24
- CF_HDROP = 15
25
- CF_LOCALE = 16
26
- CF_MAX = 18 # Assume Windows 2000 or later
27
- CF_OWNERDISPLAY = 0x0080
28
- CF_DSPTEXT = 0x0081
29
- CF_DSPBITMAP = 0x0082
30
- CF_DSPMETAFILEPICT = 0x0083
31
- CF_DSPENHMETAFILE = 0x008E
32
-
33
- API.new('ChangeClipboardChain', 'LL', 'B', 'user32')
34
- API.new('CloseClipboard', 'V', 'B', 'user32')
35
- API.new('CountClipboardFormats', 'V', 'I', 'user32')
36
- API.new('EmptyClipboard', 'V', 'B', 'user32')
37
- API.new('EnumClipboardFormats', 'I', 'I', 'user32')
38
- API.new('GetClipboardData', 'I', 'L', 'user32')
39
- API.new('GetClipboardFormatName', 'IPI', 'I', 'user32')
40
- API.new('GetClipboardOwner', 'V', 'L', 'user32')
41
- API.new('GetClipboardSequenceNumber', 'V', 'L', 'user32')
42
- API.new('GetClipboardViewer', 'V', 'L', 'user32')
43
- API.new('GetOpenClipboardWindow', 'V', 'L', 'user32')
44
- API.new('GetPriorityClipboardFormat', 'PI', 'I', 'user32')
45
- API.new('IsClipboardFormatAvailable', 'I', 'B', 'user32')
46
- API.new('OpenClipboard', 'L', 'B', 'user32')
47
- API.new('RegisterClipboardFormat', 'S', 'I', 'user32')
48
- API.new('SetClipboardData', 'IL', 'L', 'user32')
49
- API.new('SetClipboardViewer', 'L', 'L', 'user32')
50
-
51
- begin
52
- API.new('AddClipboardFormatListener', 'L', 'B', 'user32')
53
- API.new('GetUpdatedClipboardFormats', 'PIP', 'I', 'user32')
54
- API.new('RemoveClipboardFormatListener', 'L', 'B', 'user32')
55
- rescue Win32::API::LoadLibraryError
56
- # Windows Vista or later
57
- end
58
- end
59
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Clipboard
5
+ API.auto_namespace = 'Windows::Clipboard'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ CF_TEXT = 1
11
+ CF_BITMAP = 2
12
+ CF_METAFILEPICT = 3
13
+ CF_SYLK = 4
14
+ CF_DIF = 5
15
+ CF_TIFF = 6
16
+ CF_OEMTEXT = 7
17
+ CF_DIB = 8
18
+ CF_PALETTE = 9
19
+ CF_PENDATA = 10
20
+ CF_RIFF = 11
21
+ CF_WAVE = 12
22
+ CF_UNICODETEXT = 13
23
+ CF_ENHMETAFILE = 14
24
+ CF_HDROP = 15
25
+ CF_LOCALE = 16
26
+ CF_MAX = 18 # Assume Windows 2000 or later
27
+ CF_OWNERDISPLAY = 0x0080
28
+ CF_DSPTEXT = 0x0081
29
+ CF_DSPBITMAP = 0x0082
30
+ CF_DSPMETAFILEPICT = 0x0083
31
+ CF_DSPENHMETAFILE = 0x008E
32
+
33
+ API.new('ChangeClipboardChain', 'LL', 'B', 'user32')
34
+ API.new('CloseClipboard', 'V', 'B', 'user32')
35
+ API.new('CountClipboardFormats', 'V', 'I', 'user32')
36
+ API.new('EmptyClipboard', 'V', 'B', 'user32')
37
+ API.new('EnumClipboardFormats', 'I', 'I', 'user32')
38
+ API.new('GetClipboardData', 'I', 'L', 'user32')
39
+ API.new('GetClipboardFormatName', 'IPI', 'I', 'user32')
40
+ API.new('GetClipboardOwner', 'V', 'L', 'user32')
41
+ API.new('GetClipboardSequenceNumber', 'V', 'L', 'user32')
42
+ API.new('GetClipboardViewer', 'V', 'L', 'user32')
43
+ API.new('GetOpenClipboardWindow', 'V', 'L', 'user32')
44
+ API.new('GetPriorityClipboardFormat', 'PI', 'I', 'user32')
45
+ API.new('IsClipboardFormatAvailable', 'I', 'B', 'user32')
46
+ API.new('OpenClipboard', 'L', 'B', 'user32')
47
+ API.new('RegisterClipboardFormat', 'S', 'I', 'user32')
48
+ API.new('SetClipboardData', 'IL', 'L', 'user32')
49
+ API.new('SetClipboardViewer', 'L', 'L', 'user32')
50
+
51
+ begin
52
+ API.new('AddClipboardFormatListener', 'L', 'B', 'user32')
53
+ API.new('GetUpdatedClipboardFormats', 'PIP', 'I', 'user32')
54
+ API.new('RemoveClipboardFormatListener', 'L', 'B', 'user32')
55
+ rescue Win32::API::LoadLibraryError
56
+ # Windows Vista or later
57
+ end
58
+ end
59
+ end
data/lib/windows/com.rb CHANGED
@@ -1,189 +1,190 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module COM
5
- API.auto_namespace = 'Windows::COM'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = false
9
-
10
- # These constants are from wtypes.h but are only used in a COM context
11
- # as far as I know.
12
-
13
- VT_EMPTY = 0
14
- VT_NULL = 1
15
- VT_I2 = 2
16
- VT_I4 = 3
17
- VT_R4 = 4
18
- VT_R8 = 5
19
- VT_CY = 6
20
- VT_DATE = 7
21
- VT_BSTR = 8
22
- VT_DISPATCH = 9
23
- VT_ERROR = 10
24
- VT_BOOL = 11
25
- VT_VARIANT = 12
26
- VT_UNKNOWN = 13
27
- VT_DECIMAL = 14
28
- VT_I1 = 16
29
- VT_UI1 = 17
30
- VT_UI2 = 18
31
- VT_UI4 = 19
32
- VT_I8 = 20
33
- VT_UI8 = 21
34
- VT_INT = 22
35
- VT_UINT = 23
36
- VT_VOID = 24
37
- VT_HRESULT = 25
38
- VT_PTR = 26
39
- VT_SAFEARRAY = 27
40
- VT_CARRAY = 28
41
- VT_USERDEFINED = 29
42
- VT_LPSTR = 30
43
- VT_LPWSTR = 31
44
- VT_RECORD = 36
45
- VT_INT_PTR = 37
46
- VT_UINT_PTR = 38
47
- VT_FILETIME = 64
48
- VT_BLOB = 65
49
- VT_STREAM = 66
50
- VT_STORAGE = 67
51
- VT_STREAMED_OBJECT = 68
52
- VT_STORED_OBJECT = 69
53
- VT_BLOB_OBJECT = 70
54
- VT_CF = 71
55
- VT_CLSID = 72
56
- VT_VERSIONED_STREAM = 73
57
- VT_BSTR_BLOB = 0xfff
58
- VT_VECTOR = 0x1000
59
- VT_ARRAY = 0x2000
60
- VT_BYREF = 0x4000
61
- VT_RESERVED = 0x8000
62
- VT_ILLEGAL = 0xffff
63
- VT_ILLEGALMASKED = 0xfff
64
- VT_TYPEMASK = 0xfff
65
-
66
- # These constants are from OAldl.h
67
-
68
- INVOKE_FUNC = 1
69
- INVOKE_PROPERTYGET = 2
70
- INVOKE_PROPERTYPUT = 4
71
- INVOKE_PROPERTYPUTREF = 8
72
-
73
- # CLSCTX enum constants
74
-
75
- CLSCTX_INPROC_SERVER = 0x1
76
- CLSCTX_INPROC_HANDLER = 0x2
77
- CLSCTX_LOCAL_SERVER = 0x4
78
- CLSCTX_INPROC_SERVER16 = 0x8
79
- CLSCTX_REMOTE_SERVER = 0x10
80
- CLSCTX_INPROC_HANDLER16 = 0x20
81
- CLSCTX_RESERVED1 = 0x40
82
- CLSCTX_RESERVED2 = 0x80
83
- CLSCTX_RESERVED3 = 0x100
84
- CLSCTX_RESERVED4 = 0x200
85
- CLSCTX_NO_CODE_DOWNLOAD = 0x400
86
- CLSCTX_RESERVED5 = 0x800
87
- CLSCTX_NO_CUSTOM_MARSHAL = 0x1000
88
- CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000
89
- CLSCTX_NO_FAILURE_LOG = 0x4000
90
- CLSCTX_DISABLE_AAA = 0x8000
91
- CLSCTX_ENABLE_AAA = 0x10000
92
- CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
93
- CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000
94
- CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000
95
-
96
- # IDispatch
97
-
98
- DISPID_UNKNOWN = -1
99
- DISPID_VALUE = 0
100
- DISPID_PROPERTYPUT = -3
101
- DISPID_NEWENUM = -4
102
- DISPID_EVALUATE = -5
103
- DISPID_CONSTRUCTOR = -6
104
- DISPID_DESTRUCTOR = -7
105
- DISPID_COLLECT = -8
106
-
107
- # Flags for IDispatch::Invoke
108
-
109
- DISPATCH_METHOD = 0x1
110
- DISPATCH_PROPERTYGET = 0x2
111
- DISPATCH_PROPERTYPUT = 0x4
112
- DISPATCH_PROPERTYPUTREF = 0x8
113
-
114
- API.new('BindMoniker', 'PLPP', 'L', 'ole32')
115
- API.new('CLSIDFromProgID', 'PP', 'L', 'ole32')
116
- API.new('CLSIDFromProgIDEx', 'PP', 'L', 'ole32')
117
- API.new('CLSIDFromString', 'PP', 'L', 'ole32')
118
- API.new('CoAddRefServerProcess', 'V', 'L', 'ole32')
119
- API.new('CoAllowSetForegroundWindow', 'PP', 'L', 'ole32')
120
- API.new('CoCancelCall', 'LL', 'L', 'ole32')
121
- API.new('CoCopyProxy', 'PP', 'L', 'ole32')
122
- API.new('CoCreateFreeThreadedMarshaler', 'PP', 'L', 'ole32')
123
- API.new('CoCreateGuid', 'P', 'L', 'ole32')
124
- API.new('CoCreateInstance', 'PPLPP', 'L', 'ole32')
125
- API.new('CoCreateInstanceEx', 'PPLPLP', 'L', 'ole32')
126
- API.new('CoDisableCallCancellation', 'L', 'L', 'ole32')
127
- API.new('CoDisconnectObject', 'PL', 'L', 'ole32')
128
- #API.new('CoDosDateTimeToFileTime', 'LLP', 'L')
129
- API.new('CoEnableCallCancellation', 'L', 'L', 'ole32')
130
- API.new('CoFileTimeNow', 'P', 'L', 'ole32')
131
- API.new('CoFileTimeToDosDateTime', 'LLL', 'B', 'ole32')
132
- API.new('CoFreeAllLibraries', 'V', 'V', 'ole32')
133
- API.new('CoFreeLibrary', 'L', 'V', 'ole32')
134
- API.new('CoFreeUnusedLibraries', 'V', 'V', 'ole32')
135
- API.new('CoFreeUnusedLibrariesEx', 'V', 'V', 'ole32')
136
- API.new('CoGetCallContext', 'PP', 'L', 'ole32')
137
- API.new('CoGetCallerTID', 'P', 'L', 'ole32')
138
- API.new('CoGetCancelObject', 'LPP', 'L', 'ole32')
139
- API.new('CoGetClassObject', 'PLPPP', 'L', 'ole32')
140
- API.new('CoGetContextToken', 'P', 'L', 'ole32')
141
- API.new('CoGetCurrentLogicalThreadId', 'P', 'L', 'ole32')
142
- API.new('CoGetCurrentProcess', 'V', 'L', 'ole32')
143
- API.new('CoGetInstanceFromFile', 'PPPLLPLP', 'L', 'ole32')
144
- API.new('CoGetInstanceFromIStorage', 'PPPLPLP', 'L', 'ole32')
145
- API.new('CoInitialize', 'P', 'L', 'ole32')
146
- API.new('CoTaskMemFree', 'P', 'V', 'ole32')
147
- API.new('CoUninitialize', 'V', 'V', 'ole32')
148
- API.new('CoUnmarshalHresult', 'PP', 'L', 'ole32')
149
- API.new('CoUnmarshalInterface', 'PPP', 'L', 'ole32')
150
- API.new('CoWaitForMultipleHandles', 'LLLPP', 'L', 'ole32')
151
- API.new('CreateAntiMoniker', 'P', 'L', 'ole32')
152
- API.new('CreateAsyncBindCtx', 'LKKP', 'L', 'urlmon')
153
- API.new('CreateBindCtx', 'LP', 'L', 'ole32')
154
- API.new('CreateClassMoniker', 'PP', 'L', 'ole32')
155
- API.new('CreateFileMoniker', 'PP', 'L', 'ole32')
156
- API.new('CreateGenericComposite', 'PPP', 'L', 'ole32')
157
- API.new('CreateItemMoniker', 'PPP', 'L', 'ole32')
158
- API.new('CreateObjrefMoniker', 'PP', 'L', 'ole32')
159
- API.new('CreatePointerMoniker', 'PP', 'L', 'ole32')
160
- API.new('GetClassFile', 'PP', 'L', 'ole32')
161
- API.new('GetRunningObjectTable', 'LP', 'L', 'ole32')
162
- API.new('IIDFromString', 'PP', 'L', 'ole32')
163
- API.new('IsAccelerator', 'LIPP', 'B', 'ole32')
164
- API.new('IsEqualGUID', 'PP', 'B', 'ole32')
165
- API.new('MkParseDisplayName', 'PPPP', 'L', 'ole32')
166
- API.new('MonikerCommonPrefixWith', 'PPP', 'L', 'ole32')
167
- API.new('MonikerRelativePathTo', 'PPPI', 'L', 'ole32')
168
- API.new('OleDoAutoConvert', 'PP', 'L', 'ole32')
169
- API.new('OleGetAutoConvert', 'PP', 'L', 'ole32')
170
- API.new('OleGetIconOfClass', 'PPI', 'L', 'ole32')
171
- API.new('OleGetIconOfFile', 'PI', 'L', 'ole32')
172
- API.new('OleIconToCursor', 'PL', 'L', 'olepro32')
173
- API.new('OleInitialize', 'V', 'L', 'ole32')
174
- API.new('OleRegGetMiscStatus', 'PLP', 'L', 'ole32')
175
- API.new('OleRegGetUserType', 'PLP', 'L', 'ole32')
176
- API.new('OleSetAutoConvert', 'PP', 'L', 'ole32')
177
- API.new('OleUninitialize', 'V', 'V', 'ole32')
178
- API.new('ProgIDFromCLSID', 'PP', 'L', 'ole32')
179
- API.new('StringFromCLSID', 'PP', 'L', 'ole32')
180
- API.new('StringFromGUID2', 'PPI', 'I', 'ole32')
181
- API.new('StringFromIID', 'PP', 'L', 'ole32')
182
-
183
- begin
184
- API.new('CoDisconnectContext', 'L', 'L', 'ole32')
185
- rescue Win32::API::LoadLibraryError
186
- # Windows Vista
187
- end
188
- end
189
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module COM
5
+ API.auto_namespace = 'Windows::COM'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = false
9
+
10
+ # These constants are from wtypes.h but are only used in a COM context
11
+ # as far as I know.
12
+
13
+ VT_EMPTY = 0
14
+ VT_NULL = 1
15
+ VT_I2 = 2
16
+ VT_I4 = 3
17
+ VT_R4 = 4
18
+ VT_R8 = 5
19
+ VT_CY = 6
20
+ VT_DATE = 7
21
+ VT_BSTR = 8
22
+ VT_DISPATCH = 9
23
+ VT_ERROR = 10
24
+ VT_BOOL = 11
25
+ VT_VARIANT = 12
26
+ VT_UNKNOWN = 13
27
+ VT_DECIMAL = 14
28
+ VT_I1 = 16
29
+ VT_UI1 = 17
30
+ VT_UI2 = 18
31
+ VT_UI4 = 19
32
+ VT_I8 = 20
33
+ VT_UI8 = 21
34
+ VT_INT = 22
35
+ VT_UINT = 23
36
+ VT_VOID = 24
37
+ VT_HRESULT = 25
38
+ VT_PTR = 26
39
+
40
+ VT_SAFEARRAY = 27
41
+ VT_CARRAY = 28
42
+ VT_USERDEFINED = 29
43
+ VT_LPSTR = 30
44
+ VT_LPWSTR = 31
45
+ VT_RECORD = 36
46
+ VT_INT_PTR = 37
47
+ VT_UINT_PTR = 38
48
+ VT_FILETIME = 64
49
+ VT_BLOB = 65
50
+ VT_STREAM = 66
51
+ VT_STORAGE = 67
52
+ VT_STREAMED_OBJECT = 68
53
+ VT_STORED_OBJECT = 69
54
+ VT_BLOB_OBJECT = 70
55
+ VT_CF = 71
56
+ VT_CLSID = 72
57
+ VT_VERSIONED_STREAM = 73
58
+ VT_BSTR_BLOB = 0xfff
59
+ VT_VECTOR = 0x1000
60
+ VT_ARRAY = 0x2000
61
+ VT_BYREF = 0x4000
62
+ VT_RESERVED = 0x8000
63
+ VT_ILLEGAL = 0xffff
64
+ VT_ILLEGALMASKED = 0xfff
65
+ VT_TYPEMASK = 0xfff
66
+
67
+ # These constants are from OAldl.h
68
+
69
+ INVOKE_FUNC = 1
70
+ INVOKE_PROPERTYGET = 2
71
+ INVOKE_PROPERTYPUT = 4
72
+ INVOKE_PROPERTYPUTREF = 8
73
+
74
+ # CLSCTX enum constants
75
+
76
+ CLSCTX_INPROC_SERVER = 0x1
77
+ CLSCTX_INPROC_HANDLER = 0x2
78
+ CLSCTX_LOCAL_SERVER = 0x4
79
+ CLSCTX_INPROC_SERVER16 = 0x8
80
+ CLSCTX_REMOTE_SERVER = 0x10
81
+ CLSCTX_INPROC_HANDLER16 = 0x20
82
+ CLSCTX_RESERVED1 = 0x40
83
+ CLSCTX_RESERVED2 = 0x80
84
+ CLSCTX_RESERVED3 = 0x100
85
+ CLSCTX_RESERVED4 = 0x200
86
+ CLSCTX_NO_CODE_DOWNLOAD = 0x400
87
+ CLSCTX_RESERVED5 = 0x800
88
+ CLSCTX_NO_CUSTOM_MARSHAL = 0x1000
89
+ CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000
90
+ CLSCTX_NO_FAILURE_LOG = 0x4000
91
+ CLSCTX_DISABLE_AAA = 0x8000
92
+ CLSCTX_ENABLE_AAA = 0x10000
93
+ CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
94
+ CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000
95
+ CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000
96
+
97
+ # IDispatch
98
+
99
+ DISPID_UNKNOWN = -1
100
+ DISPID_VALUE = 0
101
+ DISPID_PROPERTYPUT = -3
102
+ DISPID_NEWENUM = -4
103
+ DISPID_EVALUATE = -5
104
+ DISPID_CONSTRUCTOR = -6
105
+ DISPID_DESTRUCTOR = -7
106
+ DISPID_COLLECT = -8
107
+
108
+ # Flags for IDispatch::Invoke
109
+
110
+ DISPATCH_METHOD = 0x1
111
+ DISPATCH_PROPERTYGET = 0x2
112
+ DISPATCH_PROPERTYPUT = 0x4
113
+ DISPATCH_PROPERTYPUTREF = 0x8
114
+
115
+ API.new('BindMoniker', 'PLPP', 'L', 'ole32')
116
+ API.new('CLSIDFromProgID', 'PP', 'L', 'ole32')
117
+ API.new('CLSIDFromProgIDEx', 'PP', 'L', 'ole32')
118
+ API.new('CLSIDFromString', 'PP', 'L', 'ole32')
119
+ API.new('CoAddRefServerProcess', 'V', 'L', 'ole32')
120
+ API.new('CoAllowSetForegroundWindow', 'PP', 'L', 'ole32')
121
+ API.new('CoCancelCall', 'LL', 'L', 'ole32')
122
+ API.new('CoCopyProxy', 'PP', 'L', 'ole32')
123
+ API.new('CoCreateFreeThreadedMarshaler', 'PP', 'L', 'ole32')
124
+ API.new('CoCreateGuid', 'P', 'L', 'ole32')
125
+ API.new('CoCreateInstance', 'PPLPP', 'L', 'ole32')
126
+ API.new('CoCreateInstanceEx', 'PPLPLP', 'L', 'ole32')
127
+ API.new('CoDisableCallCancellation', 'L', 'L', 'ole32')
128
+ API.new('CoDisconnectObject', 'PL', 'L', 'ole32')
129
+ #API.new('CoDosDateTimeToFileTime', 'LLP', 'L')
130
+ API.new('CoEnableCallCancellation', 'L', 'L', 'ole32')
131
+ API.new('CoFileTimeNow', 'P', 'L', 'ole32')
132
+ API.new('CoFileTimeToDosDateTime', 'LLL', 'B', 'ole32')
133
+ API.new('CoFreeAllLibraries', 'V', 'V', 'ole32')
134
+ API.new('CoFreeLibrary', 'L', 'V', 'ole32')
135
+ API.new('CoFreeUnusedLibraries', 'V', 'V', 'ole32')
136
+ API.new('CoFreeUnusedLibrariesEx', 'V', 'V', 'ole32')
137
+ API.new('CoGetCallContext', 'PP', 'L', 'ole32')
138
+ API.new('CoGetCallerTID', 'P', 'L', 'ole32')
139
+ API.new('CoGetCancelObject', 'LPP', 'L', 'ole32')
140
+ API.new('CoGetClassObject', 'PLPPP', 'L', 'ole32')
141
+ API.new('CoGetContextToken', 'P', 'L', 'ole32')
142
+ API.new('CoGetCurrentLogicalThreadId', 'P', 'L', 'ole32')
143
+ API.new('CoGetCurrentProcess', 'V', 'L', 'ole32')
144
+ API.new('CoGetInstanceFromFile', 'PPPLLPLP', 'L', 'ole32')
145
+ API.new('CoGetInstanceFromIStorage', 'PPPLPLP', 'L', 'ole32')
146
+ API.new('CoInitialize', 'P', 'L', 'ole32')
147
+ API.new('CoTaskMemFree', 'P', 'V', 'ole32')
148
+ API.new('CoUninitialize', 'V', 'V', 'ole32')
149
+ API.new('CoUnmarshalHresult', 'PP', 'L', 'ole32')
150
+ API.new('CoUnmarshalInterface', 'PPP', 'L', 'ole32')
151
+ API.new('CoWaitForMultipleHandles', 'LLLPP', 'L', 'ole32')
152
+ API.new('CreateAntiMoniker', 'P', 'L', 'ole32')
153
+ API.new('CreateAsyncBindCtx', 'LKKP', 'L', 'urlmon')
154
+ API.new('CreateBindCtx', 'LP', 'L', 'ole32')
155
+ API.new('CreateClassMoniker', 'PP', 'L', 'ole32')
156
+ API.new('CreateFileMoniker', 'PP', 'L', 'ole32')
157
+ API.new('CreateGenericComposite', 'PPP', 'L', 'ole32')
158
+ API.new('CreateItemMoniker', 'PPP', 'L', 'ole32')
159
+ API.new('CreateObjrefMoniker', 'PP', 'L', 'ole32')
160
+ API.new('CreatePointerMoniker', 'PP', 'L', 'ole32')
161
+ API.new('GetClassFile', 'PP', 'L', 'ole32')
162
+ API.new('GetRunningObjectTable', 'LP', 'L', 'ole32')
163
+ API.new('IIDFromString', 'PP', 'L', 'ole32')
164
+ API.new('IsAccelerator', 'LIPP', 'B', 'ole32')
165
+ API.new('IsEqualGUID', 'PP', 'B', 'ole32')
166
+ API.new('MkParseDisplayName', 'PPPP', 'L', 'ole32')
167
+ API.new('MonikerCommonPrefixWith', 'PPP', 'L', 'ole32')
168
+ API.new('MonikerRelativePathTo', 'PPPI', 'L', 'ole32')
169
+ API.new('OleDoAutoConvert', 'PP', 'L', 'ole32')
170
+ API.new('OleGetAutoConvert', 'PP', 'L', 'ole32')
171
+ API.new('OleGetIconOfClass', 'PPI', 'L', 'ole32')
172
+ API.new('OleGetIconOfFile', 'PI', 'L', 'ole32')
173
+ API.new('OleIconToCursor', 'PL', 'L', 'olepro32')
174
+ API.new('OleInitialize', 'V', 'L', 'ole32')
175
+ API.new('OleRegGetMiscStatus', 'PLP', 'L', 'ole32')
176
+ API.new('OleRegGetUserType', 'PLP', 'L', 'ole32')
177
+ API.new('OleSetAutoConvert', 'PP', 'L', 'ole32')
178
+ API.new('OleUninitialize', 'V', 'V', 'ole32')
179
+ API.new('ProgIDFromCLSID', 'PP', 'L', 'ole32')
180
+ API.new('StringFromCLSID', 'PP', 'L', 'ole32')
181
+ API.new('StringFromGUID2', 'PPI', 'I', 'ole32')
182
+ API.new('StringFromIID', 'PP', 'L', 'ole32')
183
+
184
+ begin
185
+ API.new('CoDisconnectContext', 'L', 'L', 'ole32')
186
+ rescue Win32::API::LoadLibraryError
187
+ # Windows Vista
188
+ end
189
+ end
190
+ end