windows-pr 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
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