win-ffi 0.3.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 (271) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +36 -0
  3. data/lib/win-ffi/enums/color_types.rb +61 -0
  4. data/lib/win-ffi/enums/comctl32/init_common_controls.rb +32 -0
  5. data/lib/win-ffi/enums/comctl32/window/style/window_class_style.rb +7 -0
  6. data/lib/win-ffi/enums/comctl32.rb +5 -0
  7. data/lib/win-ffi/enums/comdlg32/find_replace.rb +28 -0
  8. data/lib/win-ffi/enums/comdlg32/font.rb +33 -0
  9. data/lib/win-ffi/enums/extended_name_format.rb +17 -0
  10. data/lib/win-ffi/enums/firmware_type.rb +12 -0
  11. data/lib/win-ffi/enums/gdi32/device_context.rb +29 -0
  12. data/lib/win-ffi/enums/gdi32/dib.rb +8 -0
  13. data/lib/win-ffi/enums/gdi32/hatch_styles.rb +15 -0
  14. data/lib/win-ffi/enums/gdi32/pfd_flags.rb +28 -0
  15. data/lib/win-ffi/enums/gdi32/pfd_layer_type.rb +7 -0
  16. data/lib/win-ffi/enums/gdi32/pfd_type.rb +7 -0
  17. data/lib/win-ffi/enums/gdi32/raster_operations.rb +22 -0
  18. data/lib/win-ffi/enums/gdi32.rb +90 -0
  19. data/lib/win-ffi/enums/kernel32/activation_context.rb +17 -0
  20. data/lib/win-ffi/enums/kernel32/computer_name_format.rb +19 -0
  21. data/lib/win-ffi/enums/kernel32/format_message_flags.rb +16 -0
  22. data/lib/win-ffi/enums/kernel32/get_module_handle_ex_flag.rb +7 -0
  23. data/lib/win-ffi/enums/kernel32/global_alloc_flags.rb +14 -0
  24. data/lib/win-ffi/enums/kernel32/handle.rb +9 -0
  25. data/lib/win-ffi/enums/kernel32/heap_flags.rb +14 -0
  26. data/lib/win-ffi/enums/kernel32/local_flags.rb +20 -0
  27. data/lib/win-ffi/enums/kernel32/memory.rb +12 -0
  28. data/lib/win-ffi/enums/kernel32/memory_flags.rb +22 -0
  29. data/lib/win-ffi/enums/kernel32/memory_protection_constants.rb +20 -0
  30. data/lib/win-ffi/enums/kernel32/set_error_mode_flags.rb +11 -0
  31. data/lib/win-ffi/enums/kernel32/sound_flags.rb +24 -0
  32. data/lib/win-ffi/enums/kernel32/volume.rb +13 -0
  33. data/lib/win-ffi/enums/kernel32.rb +5 -0
  34. data/lib/win-ffi/enums/lr.rb +48 -0
  35. data/lib/win-ffi/enums/netapi21/net_api_status.rb +25 -0
  36. data/lib/win-ffi/enums/netapi32.rb +5 -0
  37. data/lib/win-ffi/enums/system_info.rb +54 -0
  38. data/lib/win-ffi/enums/user32/append_menu_flags.rb +21 -0
  39. data/lib/win-ffi/enums/user32/border_flags.rb +29 -0
  40. data/lib/win-ffi/enums/user32/clipboard_formats.rb +31 -0
  41. data/lib/win-ffi/enums/user32/device_notify_flags.rb +17 -0
  42. data/lib/win-ffi/enums/user32/draw_caption_flags.rb +16 -0
  43. data/lib/win-ffi/enums/user32/draw_frame_control_flags.rb +15 -0
  44. data/lib/win-ffi/enums/user32/draw_frame_control_state_flags.rb +44 -0
  45. data/lib/win-ffi/enums/user32/edge_flags.rb +20 -0
  46. data/lib/win-ffi/enums/user32/feedback_type.rb +21 -0
  47. data/lib/win-ffi/enums/user32/get_ancestor_flags.rb +12 -0
  48. data/lib/win-ffi/enums/user32/icon.rb +19 -0
  49. data/lib/win-ffi/enums/user32/image.rb +12 -0
  50. data/lib/win-ffi/enums/user32/key_event_flags.rb +11 -0
  51. data/lib/win-ffi/enums/user32/keyboard_layout_flags.rb +57 -0
  52. data/lib/win-ffi/enums/user32/keyboard_modifiers.rb +16 -0
  53. data/lib/win-ffi/enums/user32/layered_window_attributes_flags.rb +12 -0
  54. data/lib/win-ffi/enums/user32/map_virtual_key.rb +22 -0
  55. data/lib/win-ffi/enums/user32/message_filter.rb +11 -0
  56. data/lib/win-ffi/enums/user32/mouse_event_flags.rb +25 -0
  57. data/lib/win-ffi/enums/user32/mouse_keys_flags.rb +16 -0
  58. data/lib/win-ffi/enums/user32/mwmo.rb +17 -0
  59. data/lib/win-ffi/enums/user32/ocr.rb +32 -0
  60. data/lib/win-ffi/enums/user32/oic.rb +26 -0
  61. data/lib/win-ffi/enums/user32/pen_flags.rb +12 -0
  62. data/lib/win-ffi/enums/user32/pen_mask.rb +14 -0
  63. data/lib/win-ffi/enums/user32/pointer_flags.rb +82 -0
  64. data/lib/win-ffi/enums/user32/pointer_input_type.rb +13 -0
  65. data/lib/win-ffi/enums/user32/process_dpi_awareness.rb +12 -0
  66. data/lib/win-ffi/enums/user32/queue_status_flags.rb +36 -0
  67. data/lib/win-ffi/enums/user32/rim.rb +12 -0
  68. data/lib/win-ffi/enums/user32/touch_injection_flags.rb +13 -0
  69. data/lib/win-ffi/enums/user32/touch_mask.rb +13 -0
  70. data/lib/win-ffi/enums/user32/user_object_information_flags.rb +22 -0
  71. data/lib/win-ffi/enums/user32/virtual_key_flags.rb +214 -0
  72. data/lib/win-ffi/enums/user32/window/animate_window_flags.rb +31 -0
  73. data/lib/win-ffi/enums/user32/window/broadcast_system_flags.rb +20 -0
  74. data/lib/win-ffi/enums/user32/window/broadcast_system_message_flags.rb +12 -0
  75. data/lib/win-ffi/enums/user32/window/combo_box_message.rb +53 -0
  76. data/lib/win-ffi/enums/user32/window/get_class_long_flags.rb +34 -0
  77. data/lib/win-ffi/enums/user32/window/get_window_flags.rb +38 -0
  78. data/lib/win-ffi/enums/user32/window/get_window_long_flags.rb +16 -0
  79. data/lib/win-ffi/enums/user32/window/menu_flags.rb +54 -0
  80. data/lib/win-ffi/enums/user32/window/message_box_flags.rb +90 -0
  81. data/lib/win-ffi/enums/user32/window/message_box_return.rb +18 -0
  82. data/lib/win-ffi/enums/user32/window/notification/button_notification.rb +20 -0
  83. data/lib/win-ffi/enums/user32/window/notification/edit_notification.rb +19 -0
  84. data/lib/win-ffi/enums/user32/window/notification/static_notification.rb +13 -0
  85. data/lib/win-ffi/enums/user32/window/peek_message_flags.rb +13 -0
  86. data/lib/win-ffi/enums/user32/window/set_window_pos_flags.rb +48 -0
  87. data/lib/win-ffi/enums/user32/window/show_window_flags.rb +41 -0
  88. data/lib/win-ffi/enums/user32/window/smto.rb +22 -0
  89. data/lib/win-ffi/enums/user32/window/style/button_control_style.rb +37 -0
  90. data/lib/win-ffi/enums/user32/window/style/combo_box_style.rb +22 -0
  91. data/lib/win-ffi/enums/user32/window/style/edit_style.rb +23 -0
  92. data/lib/win-ffi/enums/user32/window/style/static_style.rb +45 -0
  93. data/lib/win-ffi/enums/user32/window/style/window_class_style.rb +50 -0
  94. data/lib/win-ffi/enums/user32/window/style/window_style.rb +85 -0
  95. data/lib/win-ffi/enums/user32/window/style/window_style_ex.rb +98 -0
  96. data/lib/win-ffi/enums/user32/window/system_menu_command.rb +37 -0
  97. data/lib/win-ffi/enums/user32/window/system_metrics_flags.rb +300 -0
  98. data/lib/win-ffi/enums/user32/window/system_parameters_info_action.rb +225 -0
  99. data/lib/win-ffi/enums/user32/window/system_parameters_info_flags.rb +246 -0
  100. data/lib/win-ffi/enums/user32/window/track_popup_menu_flags.rb +70 -0
  101. data/lib/win-ffi/enums/user32/window/window_long.rb +22 -0
  102. data/lib/win-ffi/enums/user32/window/window_messages.rb +222 -0
  103. data/lib/win-ffi/enums/user32/window_hook.rb +56 -0
  104. data/lib/win-ffi/enums/user32.rb +5 -0
  105. data/lib/win-ffi/functions/advapi32/process.rb +33 -0
  106. data/lib/win-ffi/functions/advapi32/system_info.rb +17 -0
  107. data/lib/win-ffi/functions/comctl32/control.rb +11 -0
  108. data/lib/win-ffi/functions/comctl32/listbox.rb +20 -0
  109. data/lib/win-ffi/functions/comctl32.rb +7 -0
  110. data/lib/win-ffi/functions/comdlg32/color.rb +9 -0
  111. data/lib/win-ffi/functions/comdlg32/error.rb +6 -0
  112. data/lib/win-ffi/functions/comdlg32/find_replace.rb +9 -0
  113. data/lib/win-ffi/functions/comdlg32/font.rb +9 -0
  114. data/lib/win-ffi/functions/comdlg32.rb +7 -0
  115. data/lib/win-ffi/functions/gdi32/bitmap.rb +275 -0
  116. data/lib/win-ffi/functions/gdi32/brush.rb +54 -0
  117. data/lib/win-ffi/functions/gdi32/device_context.rb +126 -0
  118. data/lib/win-ffi/functions/gdi32/filled_shape.rb +68 -0
  119. data/lib/win-ffi/functions/gdi32/font.rb +9 -0
  120. data/lib/win-ffi/functions/gdi32/metafile.rb +173 -0
  121. data/lib/win-ffi/functions/gdi32/opengl.rb +29 -0
  122. data/lib/win-ffi/functions/gdi32/painting_drawing.rb +50 -0
  123. data/lib/win-ffi/functions/gdi32/text.rb +376 -0
  124. data/lib/win-ffi/functions/gdi32.rb +7 -0
  125. data/lib/win-ffi/functions/kernel32/activation.rb +22 -0
  126. data/lib/win-ffi/functions/kernel32/dll.rb +92 -0
  127. data/lib/win-ffi/functions/kernel32/error.rb +28 -0
  128. data/lib/win-ffi/functions/kernel32/filesystem.rb +22 -0
  129. data/lib/win-ffi/functions/kernel32/handle.rb +29 -0
  130. data/lib/win-ffi/functions/kernel32/memory.rb +478 -0
  131. data/lib/win-ffi/functions/kernel32/process.rb +359 -0
  132. data/lib/win-ffi/functions/kernel32/resource.rb +141 -0
  133. data/lib/win-ffi/functions/kernel32/sound.rb +10 -0
  134. data/lib/win-ffi/functions/kernel32/string.rb +38 -0
  135. data/lib/win-ffi/functions/kernel32/system_info.rb +183 -0
  136. data/lib/win-ffi/functions/kernel32/time.rb +220 -0
  137. data/lib/win-ffi/functions/kernel32/volume.rb +130 -0
  138. data/lib/win-ffi/functions/kernel32.rb +15 -0
  139. data/lib/win-ffi/functions/msimg32/bitmap.rb +46 -0
  140. data/lib/win-ffi/functions/msvcrt/handle.rb +13 -0
  141. data/lib/win-ffi/functions/netapi32/network_management.rb +13 -0
  142. data/lib/win-ffi/functions/netapi32.rb +7 -0
  143. data/lib/win-ffi/functions/ntdll/system_info.rb +14 -0
  144. data/lib/win-ffi/functions/secur32/system_info.rb +30 -0
  145. data/lib/win-ffi/functions/shell32/icon.rb +49 -0
  146. data/lib/win-ffi/functions/shutdown.rb +84 -0
  147. data/lib/win-ffi/functions/thread.rb +230 -0
  148. data/lib/win-ffi/functions/user32/accessibility.rb +23 -0
  149. data/lib/win-ffi/functions/user32/authorization.rb +19 -0
  150. data/lib/win-ffi/functions/user32/bitmap.rb +11 -0
  151. data/lib/win-ffi/functions/user32/brush.rb +10 -0
  152. data/lib/win-ffi/functions/user32/caret.rb +36 -0
  153. data/lib/win-ffi/functions/user32/clipboard.rb +84 -0
  154. data/lib/win-ffi/functions/user32/controls/button.rb +23 -0
  155. data/lib/win-ffi/functions/user32/controls/combobox.rb +29 -0
  156. data/lib/win-ffi/functions/user32/controls/listbox.rb +25 -0
  157. data/lib/win-ffi/functions/user32/controls/scrollbar.rb +95 -0
  158. data/lib/win-ffi/functions/user32/cursor.rb +74 -0
  159. data/lib/win-ffi/functions/user32/dde.rb +214 -0
  160. data/lib/win-ffi/functions/user32/desktop.rb +76 -0
  161. data/lib/win-ffi/functions/user32/device.rb +17 -0
  162. data/lib/win-ffi/functions/user32/device_context.rb +62 -0
  163. data/lib/win-ffi/functions/user32/display.rb +37 -0
  164. data/lib/win-ffi/functions/user32/error.rb +10 -0
  165. data/lib/win-ffi/functions/user32/filled_shape.rb +23 -0
  166. data/lib/win-ffi/functions/user32/gesture.rb +38 -0
  167. data/lib/win-ffi/functions/user32/hook.rb +123 -0
  168. data/lib/win-ffi/functions/user32/icon.rb +98 -0
  169. data/lib/win-ffi/functions/user32/input.rb +23 -0
  170. data/lib/win-ffi/functions/user32/keyboard.rb +177 -0
  171. data/lib/win-ffi/functions/user32/keyboard_accelerators.rb +37 -0
  172. data/lib/win-ffi/functions/user32/mouse.rb +60 -0
  173. data/lib/win-ffi/functions/user32/multiple_display_monitors.rb +43 -0
  174. data/lib/win-ffi/functions/user32/multiple_document_interface.rb +44 -0
  175. data/lib/win-ffi/functions/user32/painting_drawing.rb +173 -0
  176. data/lib/win-ffi/functions/user32/pointer.rb +154 -0
  177. data/lib/win-ffi/functions/user32/power.rb +28 -0
  178. data/lib/win-ffi/functions/user32/print.rb +14 -0
  179. data/lib/win-ffi/functions/user32/process.rb +30 -0
  180. data/lib/win-ffi/functions/user32/raw_input.rb +55 -0
  181. data/lib/win-ffi/functions/user32/rect.rb +67 -0
  182. data/lib/win-ffi/functions/user32/resource.rb +28 -0
  183. data/lib/win-ffi/functions/user32/shell.rb +29 -0
  184. data/lib/win-ffi/functions/user32/string.rb +98 -0
  185. data/lib/win-ffi/functions/user32/text.rb +48 -0
  186. data/lib/win-ffi/functions/user32/touch.rb +69 -0
  187. data/lib/win-ffi/functions/user32/transform.rb +22 -0
  188. data/lib/win-ffi/functions/user32/window/configuration.rb +15 -0
  189. data/lib/win-ffi/functions/user32/window/dialog.rb +167 -0
  190. data/lib/win-ffi/functions/user32/window/menu.rb +245 -0
  191. data/lib/win-ffi/functions/user32/window/message.rb +168 -0
  192. data/lib/win-ffi/functions/user32/window/properties.rb +50 -0
  193. data/lib/win-ffi/functions/user32/window/timer.rb +37 -0
  194. data/lib/win-ffi/functions/user32/window/window.rb +546 -0
  195. data/lib/win-ffi/functions/user32/window/window_class.rb +109 -0
  196. data/lib/win-ffi/functions/user32/window/window_proc.rb +29 -0
  197. data/lib/win-ffi/functions/user32/window_station.rb +39 -0
  198. data/lib/win-ffi/functions/user32.rb +161 -0
  199. data/lib/win-ffi/functions/winmm.rb +547 -0
  200. data/lib/win-ffi/functions/wtsapi32/process.rb +12 -0
  201. data/lib/win-ffi/lib_base.rb +54 -0
  202. data/lib/win-ffi/struct.rb +15 -0
  203. data/lib/win-ffi/structs/comctl32/init_common_controls_ex.rb +10 -0
  204. data/lib/win-ffi/structs/comdlg32/choose_color.rb +23 -0
  205. data/lib/win-ffi/structs/comdlg32/choose_font.rb +28 -0
  206. data/lib/win-ffi/structs/comdlg32/find_replace.rb +24 -0
  207. data/lib/win-ffi/structs/gdi32/abc.rb +9 -0
  208. data/lib/win-ffi/structs/gdi32/abcfloat.rb +10 -0
  209. data/lib/win-ffi/structs/gdi32/bitmap.rb +13 -0
  210. data/lib/win-ffi/structs/gdi32/bitmap_info.rb +11 -0
  211. data/lib/win-ffi/structs/gdi32/bitmap_info_header.rb +17 -0
  212. data/lib/win-ffi/structs/gdi32/blend_function.rb +10 -0
  213. data/lib/win-ffi/structs/gdi32/display_device.rb +12 -0
  214. data/lib/win-ffi/structs/gdi32/handle_table.rb +7 -0
  215. data/lib/win-ffi/structs/gdi32/kerning_pair.rb +9 -0
  216. data/lib/win-ffi/structs/gdi32/log_brush.rb +10 -0
  217. data/lib/win-ffi/structs/gdi32/log_font.rb +20 -0
  218. data/lib/win-ffi/structs/gdi32/meta_file_pict.rb +10 -0
  219. data/lib/win-ffi/structs/gdi32/palette_entry.rb +10 -0
  220. data/lib/win-ffi/structs/gdi32/pixel_format_descriptor.rb +57 -0
  221. data/lib/win-ffi/structs/gdi32/rgb_quad.rb +10 -0
  222. data/lib/win-ffi/structs/kernel32/actctx.rb +22 -0
  223. data/lib/win-ffi/structs/netapi32/wksta_info_100.rb +9 -0
  224. data/lib/win-ffi/structs/os_version_info.rb +10 -0
  225. data/lib/win-ffi/structs/os_version_info_ex.rb +70 -0
  226. data/lib/win-ffi/structs/paint_struct.rb +12 -0
  227. data/lib/win-ffi/structs/point.rb +10 -0
  228. data/lib/win-ffi/structs/rect.rb +28 -0
  229. data/lib/win-ffi/structs/size.rb +6 -0
  230. data/lib/win-ffi/structs/user32/controls/combobox_info.rb +13 -0
  231. data/lib/win-ffi/structs/user32/controls/scroll_info.rb +13 -0
  232. data/lib/win-ffi/structs/user32/controls/scrollbar_info.rb +13 -0
  233. data/lib/win-ffi/structs/user32/cursor_info.rb +10 -0
  234. data/lib/win-ffi/structs/user32/display_device.rb +12 -0
  235. data/lib/win-ffi/structs/user32/draw_text_params.rb +11 -0
  236. data/lib/win-ffi/structs/user32/icon_info.rb +11 -0
  237. data/lib/win-ffi/structs/user32/icon_info_ex.rb +15 -0
  238. data/lib/win-ffi/structs/user32/last_input_info.rb +8 -0
  239. data/lib/win-ffi/structs/user32/mouse_move_point.rb +10 -0
  240. data/lib/win-ffi/structs/user32/msg.rb +16 -0
  241. data/lib/win-ffi/structs/user32/pointer_info.rb +25 -0
  242. data/lib/win-ffi/structs/user32/pointer_pen_info.rb +18 -0
  243. data/lib/win-ffi/structs/user32/pointer_touch_info.rb +17 -0
  244. data/lib/win-ffi/structs/user32/raw_input_device_list.rb +10 -0
  245. data/lib/win-ffi/structs/user32/raw_input_header.rb +10 -0
  246. data/lib/win-ffi/structs/user32/touch_hit_testing_input.rb +11 -0
  247. data/lib/win-ffi/structs/user32/touch_hit_testing_proximity_evaluation.rb +8 -0
  248. data/lib/win-ffi/structs/user32/track_mouse_event.rb +10 -0
  249. data/lib/win-ffi/structs/user32/window/alt_tab_info.rb +17 -0
  250. data/lib/win-ffi/structs/user32/window/bs_info.rb +12 -0
  251. data/lib/win-ffi/structs/user32/window/create_struct.rb +22 -0
  252. data/lib/win-ffi/structs/user32/window/dlg_template.rb +13 -0
  253. data/lib/win-ffi/structs/user32/window/flashw_info.rb +11 -0
  254. data/lib/win-ffi/structs/user32/window/gui_thread_info.rb +17 -0
  255. data/lib/win-ffi/structs/user32/window/luid.rb +8 -0
  256. data/lib/win-ffi/structs/user32/window/menu_info.rb +13 -0
  257. data/lib/win-ffi/structs/user32/window/menu_item_info.rb +18 -0
  258. data/lib/win-ffi/structs/user32/window/menu_item_template.rb +9 -0
  259. data/lib/win-ffi/structs/user32/window/menubar_info.rb +12 -0
  260. data/lib/win-ffi/structs/user32/window/msgbox_params.rb +16 -0
  261. data/lib/win-ffi/structs/user32/window/non_client_metrics.rb +29 -0
  262. data/lib/win-ffi/structs/user32/window/title_bar_info.rb +9 -0
  263. data/lib/win-ffi/structs/user32/window/tpm_params.rb +8 -0
  264. data/lib/win-ffi/structs/user32/window/update_layered_window_info.rb +22 -0
  265. data/lib/win-ffi/structs/user32/window/window_placement.rb +32 -0
  266. data/lib/win-ffi/structs/user32/window/window_pos.rb +46 -0
  267. data/lib/win-ffi/structs/user32/window/wndclass.rb +19 -0
  268. data/lib/win-ffi/structs/user32/window/wndclassex.rb +40 -0
  269. data/lib/win-ffi/version.rb +3 -0
  270. data/lib/win-ffi.rb +42 -0
  271. metadata +363 -0
@@ -0,0 +1,547 @@
1
+ module WinFFI
2
+ module WinMM
3
+
4
+ typedef :pointer, :hwaveout
5
+ typedef :pointer, :hwavein
6
+ typedef :uint, :mmversion
7
+
8
+ MMRESULT = enum :mm_result, [
9
+ :MMSYSERR_NOERROR, 0,
10
+ :MMSYSERR_ERROR, 1,
11
+ :MMSYSERR_BADDEVICEID, 2,
12
+ :MMSYSERR_NOTENABLED, 3,
13
+ :MMSYSERR_ALLOCATED, 4,
14
+ :MMSYSERR_INVALHANDLE, 5,
15
+ :MMSYSERR_NODRIVER, 6,
16
+ :MMSYSERR_NOMEM, 7,
17
+ :MMSYSERR_NOTSUPPORTED, 8,
18
+ :MMSYSERR_BADERRNUM, 9,
19
+ :MMSYSERR_INVALFLAG, 10,
20
+ :MMSYSERR_INVALPARAM, 11,
21
+ :MMSYSERR_HANDLEBUSY, 12,
22
+ :MMSYSERR_INVALIDALIAS, 13,
23
+ :MMSYSERR_BADDB, 14,
24
+ :MMSYSERR_KEYNOTFOUND, 15,
25
+ :MMSYSERR_READERROR, 16,
26
+ :MMSYSERR_WRITEERROR, 17,
27
+ :MMSYSERR_DELETEERROR, 18,
28
+ :MMSYSERR_VALNOTFOUND, 19,
29
+ :MMSYSERR_NODRIVERCB, 20,
30
+ :WAVERR_BADFORMAT, 32,
31
+ :WAVERR_STILLPLAYING, 33,
32
+ :WAVERR_UNPREPARED, 34
33
+ ]
34
+
35
+ module Waveform
36
+ ffi_lib 'winmm.dll'
37
+ extend LibBase
38
+
39
+ # typedef struct {
40
+ # WORD wMid;
41
+ # WORD wPid;
42
+ # MMVERSION vDriverVersion;
43
+ # TCHAR szPname[MAXPNAMELEN];
44
+ # WORD wTechnology;
45
+ # WORD wReserved1;
46
+ # DWORD dwSupport;
47
+ # } AUXCAPS;
48
+ class AUXCAPS < FFIStruct
49
+ layout :wMid, :word,
50
+ :wPid, :word,
51
+ :vDriverVersion, :mmversion,
52
+ :szPname, :string,
53
+ :wTechnology, :word,
54
+ :wReserved1, :word,
55
+ :dwSupport, :dword
56
+ end
57
+
58
+ SND = enum :sound_flags, [
59
+ :SYNC, 0x0000,
60
+ :ASYNC, 0x0001,
61
+ :NODEFAULT, 0x0002,
62
+ :MEMORY, 0x0004,
63
+
64
+ #loop the sound until next sndPlaySound
65
+ :LOOP, 0x0008,
66
+ :NOSTOP, 0x0010,
67
+ :PURGE, 0x40,
68
+
69
+ #The pszSound parameter is an application-specific alias in the registry. You can combine this flag with the
70
+ # SND_ALIAS or SND_ALIAS_ID flag to specify an application-defined sound alias.
71
+ :APPLICATION, 0x80,
72
+ :NOWAIT, 0x00002000,
73
+ :ALIAS, 0x00010000,
74
+ :ALIAS_ID, 0x00110000,
75
+ :FILENAME, 0x00020000,
76
+ :RESOURCE, 0x00040004
77
+ ]
78
+
79
+ WHDR = enum :whdr_flags, [
80
+ :DONE, 1,
81
+ :PREPARED, 2,
82
+ :BEGINLOOP, 4,
83
+ :ENDLOOP, 8,
84
+ :INQUEUE, 16
85
+ ]
86
+
87
+ # typedef struct wavehdr_tag {
88
+ # LPSTR lpData;
89
+ # DWORD dwBufferLength;
90
+ # DWORD dwBytesRecorded;
91
+ # DWORD_PTR dwUser;
92
+ # DWORD dwFlags;
93
+ # DWORD dwLoops;
94
+ # struct wavehdr_tag *lpNext;
95
+ # DWORD_PTR reserved;
96
+ # } WAVEHDR, *LPWAVEHDR;
97
+ class WAVEHDR < FFIStruct
98
+ layout :lpData, :pointer,
99
+ :dwBufferLength, :dword,
100
+ :dwBytesRecorded, :dword,
101
+ :dwUser, :pointer,
102
+ :dwFlags, WHDR,
103
+ :dwLoops, :dword,
104
+ :lpNext, :pointer,
105
+ :reserved, :pointer
106
+ end
107
+
108
+ # typedef struct {
109
+ # WORD wMid;
110
+ # WORD wPid;
111
+ # MMVERSION vDriverVersion;
112
+ # TCHAR szPname[MAXPNAMELEN];
113
+ # DWORD dwFormats;
114
+ # WORD wChannels;
115
+ # WORD wReserved1;
116
+ # } WAVEINCAPS;
117
+ class WAVEINCAPS < FFIStruct
118
+ layout :wMid, :word,
119
+ :wPid, :word,
120
+ :vDriverVersion, :mmversion,
121
+ :szPname, :string,
122
+ :dwFormats, :dword,
123
+ :wChannels, :word,
124
+ :wReserved1, :word
125
+ end
126
+
127
+ # typedef struct {
128
+ # WORD wMid;
129
+ # WORD wPid;
130
+ # MMVERSION vDriverVersion;
131
+ # TCHAR szPname[MAXPNAMELEN];
132
+ # DWORD dwFormats;
133
+ # WORD wChannels;
134
+ # WORD wReserved1;
135
+ # DWORD dwSupport;
136
+ # } WAVEOUTCAPS;
137
+ class WAVEOUTCAPS < FFIStruct
138
+ layout wMid, :word,
139
+ wPid, :word,
140
+ vDriverVersion, :mmversion,
141
+ szPname, :string,
142
+ dwFormats, :dword,
143
+ wChannels, :word,
144
+ wReserved1, :word,
145
+ dwSupport, :dword
146
+ end
147
+
148
+ # typedef struct {
149
+ # WORD wFormatTag;
150
+ # WORD nChannels;
151
+ # DWORD nSamplesPerSec;
152
+ # DWORD nAvgBytesPerSec;
153
+ # WORD nBlockAlign;
154
+ # WORD wBitsPerSample;
155
+ # WORD cbSize;
156
+ # } WAVEFORMATEX;
157
+ class WAVEFORMATEX < FFIStruct
158
+ layout :wFormatTag, :word,
159
+ :nChannels, :word,
160
+ :nSamplesPerSec, :dword,
161
+ :nAvgBytesPerSec, :dword,
162
+ :nBlockAlign, :word,
163
+ :wBitsPerSample, :word,
164
+ :cbSize, :word
165
+ end
166
+
167
+ # MMRESULT auxGetDevCaps(
168
+ # UINT_PTR uDeviceID,
169
+ # LPAUXCAPS lpCaps,
170
+ # UINT cbCaps);
171
+ attach_function 'auxGetDevCapsA', [:pointer, AUXCAPS.ptr, :uint], MMRESULT
172
+ attach_function 'auxGetDevCapsW', [:pointer, AUXCAPS.ptr, :uint], MMRESULT
173
+
174
+ # UINT auxGetNumDevs(void);
175
+ attach_function 'auxGetNumDevs', [], :uint
176
+
177
+ # MMRESULT auxGetVolume(
178
+ # UINT uDeviceID,
179
+ # LPDWORD lpdwVolume);
180
+ attach_function 'auxGetVolume', [:uint, :pointer], MMRESULT
181
+
182
+ # DWORD auxOutMessage(
183
+ # UINT uDeviceID,
184
+ # UINT uMsg,
185
+ # DWORD_PTR dwParam1,
186
+ # DWORD_PTR dwParam2);
187
+ attach_function 'auxOutMessage', [:uint, :uint, :pointer, :pointer], :dword
188
+
189
+ # MMRESULT auxSetVolume(
190
+ # UINT uDeviceID,
191
+ # DWORD dwVolume);
192
+ attach_function 'auxSetVolume', [:uint, :dword], MMRESULT
193
+
194
+ #BOOL PlaySound(
195
+ # LPCTSTR pszSound,
196
+ # HMODULE hmod,
197
+ # DWORD fdwSound )
198
+ attach_function 'PlaySound', [:string, :hmodule, SoundFlags], :bool
199
+ attach_function 'PlaySoundA', [:string, :hmodule, SoundFlags], :bool
200
+ attach_function 'PlaySoundW', [:string, :hmodule, SoundFlags], :bool
201
+
202
+ # BOOL sndPlaySound(
203
+ # LPCTSTR lpszSound,
204
+ # UINT fuSound)
205
+ attach_function 'sndPlaySound', [:string, SND], :bool
206
+
207
+ # MMRESULT waveInAddBuffer(
208
+ # HWAVEIN hwi,
209
+ # LPWAVEHDR pwh,
210
+ # UINT cbwh)
211
+ attach_function 'waveInAddBuffer', [:hwavein, WAVEHDR.ptr, :uint], MMRESULT
212
+
213
+ # MMRESULT waveInClose( HWAVEIN hwi )
214
+ attach_fuunction 'waveInClose', [:hwavein], MMRESULT
215
+
216
+ # MMRESULT waveInGetDevCaps(
217
+ # UINT_PTR uDeviceID,
218
+ # LPWAVEINCAPS pwic,
219
+ # UINT cbwic)
220
+ attach_function 'waveInGetDevCapsA', [:pointer, WAVEINCAPS.ptr, :uint], MMRESULT
221
+ attach_function 'waveInGetDevCapsW', [:pointer, WAVEINCAPS.ptr, :uint], MMRESULT
222
+
223
+ # MMRESULT waveInGetErrorText(
224
+ # MMRESULT mmrError,
225
+ # LPTSTR pszText,
226
+ # UINT cchText)
227
+ attach_function 'waveInGetErrorTextA', [MMRESULT, :string, :uint], MMRESULT
228
+ attach_function 'waveInGetErrorTextW', [MMRESULT, :string, :uint], MMRESULT
229
+
230
+ # MMRESULT waveInGetID(
231
+ # HWAVEIN hwi,
232
+ # LPUINT puDeviceID);
233
+ attach_function 'waveInGetID', [:hwavein, :pointer], MMRESULT
234
+
235
+ # UINT waveInGetNumDevs(void)
236
+ attach_function 'waveInGetNumDevs', [], :uint
237
+
238
+ # UINT waveInGetNumDevs(void);
239
+ attach_function 'waveInGetNumDevs', [], :uint
240
+
241
+ #TODO MMTIME structure
242
+ # MMRESULT waveInGetPosition(
243
+ # HWAVEIN hwi,
244
+ # LPMMTIME pmmt,
245
+ # UINT cbmmt)
246
+ # attach_function 'waveInGetPosition', [:hwavein, ], MMRESULT
247
+
248
+ # DWORD waveInMessage(
249
+ # HWAVEIN deviceID,
250
+ # UINT uMsg,
251
+ # DWORD_PTR dwParam1,
252
+ # DWORD_PTR dwParam2);
253
+ attach_function 'waveInMessage', [:hwavein, :uint, :pointer, :pointer], :dword
254
+
255
+ # MMRESULT waveInOpen(
256
+ # LPHWAVEIN phwi,
257
+ # UINT uDeviceID,
258
+ # LPCWAVEFORMATEX pwfx,
259
+ # DWORD_PTR dwCallback,
260
+ # DWORD_PTR dwCallbackInstance,
261
+ # DWORD fdwOpen);
262
+ attach_function 'waveInOpen', [:hwavein.ptr, :uint, WAVEFORMATEX.ptr, :pointer, :pointer, :dword], MMRESULT
263
+
264
+ # MMRESULT waveInPrepareHeader(
265
+ # HWAVEIN hwi,
266
+ # LPWAVEHDR pwh,
267
+ # UINT cbwh);
268
+ attach_function 'waveInPrepareHeader', [:hwavein, WAVEHDR.ptr, :uint], MMRESULT
269
+
270
+ #TODO Callback
271
+ # void CALLBACK waveInProc(
272
+ # HWAVEIN hwi,
273
+ # UINT uMsg,
274
+ # DWORD_PTR dwInstance,
275
+ # DWORD_PTR dwParam1,
276
+ # DWORD_PTR dwParam2);
277
+ WaveInProc = callback :waveInProc, [:hwavein, :uint, :pointer, :pointer, :pointer], :void
278
+
279
+ # MMRESULT waveInReset( HWAVEIN hwi );
280
+ attach_function 'waveInReset', [:hwavein], MMRESULT
281
+
282
+ # MMRESULT waveInStart( HWAVEIN hwi );
283
+ attach_function 'waveInStart', [:hwavein], MMRESULT
284
+
285
+ # MMRESULT waveInStop( HWAVEIN hwi );
286
+ attach_function 'waveInStop', [:hwavein], MMRESULT
287
+
288
+ # MMRESULT waveInUnprepareHeader(
289
+ # HWAVEIN hwi,
290
+ # LPWAVEHDR pwh,
291
+ # UINT cbwh);
292
+ attach_function 'waveInUnprepareHeader', [:hwavein, WAVEHDR.ptr, :uint], MMRESULT
293
+
294
+ # MMRESULT waveOutBreakLoop( HWAVEOUT hwo );
295
+ attach_function 'waveOutBreakLoop', [:hwaveout], MMRESULT
296
+
297
+ # MMRESULT waveOutClose( HWAVEOUT hwo );
298
+ attach_function 'waveOutClose', [:hwaveout], MMRESULT
299
+
300
+ # MMRESULT waveOutGetDevCaps(
301
+ # UINT_PTR uDeviceID,
302
+ # LPWAVEOUTCAPS pwoc,
303
+ # UINT cbwoc);
304
+ attach_function 'waveOutGetDevCapsA', [:pointer, WAVEOUTCAPS.ptr, :uint], MMRESULT
305
+ attach_function 'waveOutGetDevCapsW', [:pointer, WAVEOUTCAPS.ptr, :uint], MMRESULT
306
+
307
+ # MMRESULT waveOutGetErrorText(
308
+ # MMRESULT mmrError,
309
+ # LPTSTR pszText,
310
+ # UINT cchText);
311
+ attach_function 'waveOutGetErrorTextA', [MMRESULT, :string, :uint], MMRESULT
312
+ attach_function 'waveOutGetErrorTextW', [MMRESULT, :string, :uint], MMRESULT
313
+
314
+ # MMRESULT waveOutGetID(
315
+ # HWAVEOUT hwo,
316
+ # LPUINT puDeviceID);
317
+ attach_function 'waveOutGetID' , [:hwaveout, :pointer], MMRESULT
318
+
319
+ # UINT waveOutGetNumDevs(void);
320
+ attach_function 'waveOutGetNumDevs', [], :uint
321
+
322
+ # MMRESULT waveOutGetPitch(
323
+ # HWAVEOUT hwo,
324
+ # LPDWORD pdwPitch);
325
+ attach_function 'waveOutGetPitch', [:hwaveout, :pointer], MMRESULT
326
+
327
+ # MMRESULT waveOutGetPlaybackRate(
328
+ # HWAVEOUT hwo,
329
+ # LPDWORD pdwRate);
330
+ attach_function 'waveOutGetPlaybackRate', [:hwaveout, :pointer], MMRESULT
331
+
332
+ #TODO MMTIME
333
+ # MMRESULT waveOutGetPosition(
334
+ # HWAVEOUT hwo,
335
+ # LPMMTIME pmmt,
336
+ # UINT cbmmt);
337
+ # attach_function 'waveOutGetPosition', [:hwaveout, :]
338
+
339
+ # MMRESULT waveOutGetVolume(
340
+ # HWAVEOUT hwo,
341
+ # LPDWORD pdwVolume);
342
+ attach_function 'waveOutGetVolume', [:hwaveout, :pointer], MMRESULT
343
+
344
+ # DWORD waveOutMessage(
345
+ # HWAVEOUT deviceID,
346
+ # UINT uMsg,
347
+ # DWORD_PTR dwParam1,
348
+ # DWORD_PTR dwParam2);
349
+ attach_function 'waveOutMessage', [:hwaveout, :uint, :pointer, :pointer], :dword
350
+
351
+ # MMRESULT waveOutOpen(
352
+ # LPHWAVEOUT phwo,
353
+ # UINT_PTR uDeviceID,
354
+ # LPWAVEFORMATEX pwfx,
355
+ # DWORD_PTR dwCallback,
356
+ # DWORD_PTR dwCallbackInstance,
357
+ # DWORD fdwOpen);
358
+ attach_function 'waveOutOpen', [:pointer, :pointer, WAVEFORMATEX.ptr, :pointer, :pointer, :dword], MMRESULT
359
+
360
+ # MMRESULT waveOutPause( HWAVEOUT hwo );
361
+ attach_function 'waveOutPause', [:hwaveout], MMRESULT
362
+
363
+ #MMRESULT waveOutSetVolume(
364
+ # HWAVEOUT hwo,
365
+ # DWORD dwVolume )
366
+ attach_function 'waveOutSetVolume', [:hwaveout, :dword], :int
367
+
368
+ #UINT waveOutGetNumDevs(void)
369
+ attach_function 'waveOutGetNumDevs', [], :uint
370
+
371
+ #UINT waveInGetNumDevs(void)
372
+ attach_function 'waveInGetNumDevs', [], :uint
373
+
374
+ #UINT midiOutGetNumDevs(void)
375
+ attach_function 'midiOutGetNumDevs', [], :uint
376
+
377
+ #UINT midiInGetNumDevs(void)
378
+ attach_function 'midiInGetNumDevs', [], :uint
379
+
380
+ #UINT auxGetNumDevs(void)
381
+ attach_function 'auxGetNumDevs', [], :uint
382
+
383
+ #UINT mixerGetNumDevs(void)
384
+ attach_function 'mixerGetNumDevs', [], :int
385
+
386
+ end
387
+
388
+ module Joystick
389
+ ffi_lib 'winmm.dll'
390
+ extend LibBase
391
+
392
+ # typedef struct {
393
+ # UINT wXpos;
394
+ # UINT wYpos;
395
+ # UINT wZpos;
396
+ # UINT wButtons;
397
+ # } JOYINFO;
398
+ class JOYINFO < FFIStruct
399
+ layout :wXpos, :uint,
400
+ :wYpos, :uint,
401
+ :wZpos, :uint,
402
+ :wButtons, :uint
403
+ end
404
+
405
+ # typedef struct joyinfoex_tag {
406
+ # DWORD dwSize;
407
+ # DWORD dwFlags;
408
+ # DWORD dwXpos;
409
+ # DWORD dwYpos;
410
+ # DWORD dwZpos;
411
+ # DWORD dwRpos;
412
+ # DWORD dwUpos;
413
+ # DWORD dwVpos;
414
+ # DWORD dwButtons;
415
+ # DWORD dwButtonNumber;
416
+ # DWORD dwPOV;
417
+ # DWORD dwReserved1;
418
+ # DWORD dwReserved2;
419
+ # } JOYINFOEX;
420
+ class JOYINFOEX < FFIStruct
421
+ layout :dwSize, :dword,
422
+ :dwFlags, :dword,
423
+ :dwXpos, :dword,
424
+ :dwYpos, :dword,
425
+ :dwZpos, :dword,
426
+ :dwRpos, :dword,
427
+ :dwUpos, :dword,
428
+ :dwVpos, :dword,
429
+ :dwButtons, :dword,
430
+ :dwButtonNumber, :dword,
431
+ :dwPOV, :dword,
432
+ :dwReserved1, :dword,
433
+ :dwReserved2, :dword,
434
+ end
435
+
436
+ # typedef struct {
437
+ # WORD wMid;
438
+ # WORD wPid;
439
+ # TCHAR szPname[MAXPNAMELEN];
440
+ # UINT wXmin;
441
+ # UINT wXmax;
442
+ # UINT wYmin;
443
+ # UINT wYmax;
444
+ # UINT wZmin;
445
+ # UINT wZmax;
446
+ # UINT wNumButtons;
447
+ # UINT wPeriodMin;
448
+ # UINT wPeriodMax;
449
+ # UINT wRmin;
450
+ # UINT wRmax;
451
+ # UINT wUmin;
452
+ # UINT wUmax;
453
+ # UINT wVmin;
454
+ # UINT wVmax;
455
+ # UINT wCaps;
456
+ # UINT wMaxAxes;
457
+ # UINT wNumAxes;
458
+ # UINT wMaxButtons;
459
+ # TCHAR szRegKey[MAXPNAMELEN];
460
+ # TCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
461
+ # } JOYCAPS;
462
+
463
+ class JOYCAPS < FFIStruct
464
+ layout :wMid, :word,
465
+ :wPid, :word,
466
+ :szPname, :string,
467
+ :wXmin, :uint,
468
+ :wXmax, :uint,
469
+ :wYmin, :uint,
470
+ :wYmax, :uint,
471
+ :wZmin, :uint,
472
+ :wZmax, :uint,
473
+ :wNumButtons, :uint,
474
+ :wPeriodMin, :uint,
475
+ :wPeriodMax, :uint,
476
+ :wRmin, :uint,
477
+ :wRmax, :uint,
478
+ :wUmin, :uint,
479
+ :wUmax, :uint,
480
+ :wVmin, :uint,
481
+ :wVmax, :uint,
482
+ :wCaps, :uint,
483
+ :wMaxAxes, :uint,
484
+ :wNumAxes, :uint,
485
+ :wMaxButtons, :uint,
486
+ :szRegKey, :string,
487
+ :szOEMVxD, :string,
488
+ end
489
+
490
+ JoyCapsFlags = enum :joy_caps_flags, [
491
+ :HASZ, # Joystick has z-coordinate information.
492
+ :HASR, # Joystick has rudder (fourth axis) information.
493
+ :HASU, # Joystick has u-coordinate (fifth axis) information.
494
+ :HASV, # Joystick has v-coordinate (sixth axis) information.
495
+ :HASPOV, # Joystick has point-of-view information.
496
+ :POV4DIR, # Joystick point-of-view supports discrete values (centered, forward, backward, left, and right).
497
+ :POVCTS , # Joystick point-of-view supports continuous degree bearings.
498
+ ]
499
+
500
+ # MMRESULT joyConfigChanged( DWORD dwFlags )
501
+ attach_function 'joyConfigChanged', [:dword], MMRESULT
502
+
503
+ # MMRESULT joyGetDevCaps(
504
+ # UINT_PTR uJoyID,
505
+ # LPJOYCAPS pjc,
506
+ # UINT cbjc);
507
+ attach_function 'joyGetDevCapsA', [:pointer, JOYCAPS.ptr, :uint], MMRESULT
508
+ attach_function 'joyGetDevCapsW', [:pointer, JOYCAPS.ptr, :uint], MMRESULT
509
+
510
+ # UINT joyGetNumDevs(void);
511
+ attach_function 'joyGetNumDevs', [], :uint
512
+
513
+ # MMRESULT joyGetPos(
514
+ # UINT uJoyID,
515
+ # LPJOYINFO pji);
516
+ attach_function 'joyGetPos', [:uint, JOYINFO.ptr], MMRESULT
517
+
518
+ # MMRESULT joyGetPosEx(
519
+ # UINT uJoyID,
520
+ # LPJOYINFOEX pji);
521
+ attach_function 'joyGetPosEx', [:uint, JOYINFOEX.ptr], MMRESULT
522
+
523
+ # MMRESULT joyGetThreshold(
524
+ # UINT uJoyID,
525
+ # LPUINT puThreshold);
526
+ attach_function 'joyGetThreshold', [:uint, :pointer], MMRESULT
527
+
528
+ # MMRESULT joyReleaseCapture( UINT uJoyID );
529
+ attach_function 'joyReleaseCapture', [:uint], MMRESULT
530
+
531
+ # MMRESULT joySetCapture(
532
+ # HWND hwnd,
533
+ # UINT uJoyID,
534
+ # UINT uPeriod,
535
+ # BOOL fChanged);
536
+ attach_function 'joySetCapture', [:hwnd, :uint, :uint, :bool], MMRESULT
537
+
538
+ # MMRESULT joySetThreshold(
539
+ # UINT uJoyID,
540
+ # UINT uThreshold);
541
+ attach_function 'joySetThreshold', [:uint, :uint], MMRESULT
542
+
543
+
544
+
545
+ end
546
+ end
547
+ end
@@ -0,0 +1,12 @@
1
+ module WinFFI
2
+ module Wtsapi32
3
+ #BOOL WTSEnumerateProcesses(
4
+ # _In_ HANDLE hServer,
5
+ # _In_ DWORD Reserved,
6
+ # _In_ DWORD Version,
7
+ # _Out_ PWTS_PROCESS_INFO *ppProcessInfo,
8
+ # _Out_ DWORD *pCount )
9
+ attach_function 'WTSEnumerateProcessesA', [:handle, :dword, :dword, :pointer, :pointer], :bool
10
+ attach_function 'WTSEnumerateProcessesW', [:handle, :dword, :dword, :pointer, :pointer], :bool
11
+ end
12
+ end
@@ -0,0 +1,54 @@
1
+ require 'ffi'
2
+
3
+ module WinFFI
4
+ module LibBase
5
+
6
+ extend FFI::Library
7
+ ffi_convention :stdcall
8
+
9
+ typedef :ushort, :atom
10
+ typedef :uchar, :byte
11
+ typedef :ushort, :word
12
+ typedef :uint, :dword
13
+ typedef :uint, :colorref
14
+ typedef :uint, :wparam
15
+ typedef :long, :lparam
16
+ typedef :long, :lresult
17
+ typedef :ushort, :langid
18
+ %i'
19
+ haccel
20
+ handle
21
+ hbitmap
22
+ hbrush
23
+ hconv
24
+ hcursor
25
+ hdc
26
+ hddedata
27
+ hdesk
28
+ hgdiobj
29
+ hglobal
30
+ hicon
31
+ hinstance
32
+ hkl
33
+ hmenu
34
+ hmetafile
35
+ hmonitor
36
+ hmodule
37
+ hrgn
38
+ hsz
39
+ hwnd
40
+ hwinsta
41
+ '.each do |s|
42
+ typedef :pointer, s
43
+ end
44
+
45
+ def self.extended(c)
46
+ c.extend FFI::Library
47
+ instance_variables.each do |v|
48
+ value = instance_variable_get(v)
49
+ value = value.dup unless value.is_a?(Fixnum) || value.is_a?(Symbol)
50
+ c.instance_variable_set(v, value)
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,15 @@
1
+ require 'ffi'
2
+
3
+ module WinFFI
4
+ class FFIStruct < FFI::Struct
5
+ def self.layout(*args)
6
+ super
7
+ members.each do |name|
8
+ unless method_defined?(name)
9
+ define_method name, ->{self[name]}
10
+ define_method "#{name}=", ->(v){self[name] = v}
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ require 'win-ffi/enums/comctl32/init_common_controls'
2
+
3
+ module WinFFI
4
+ module Comctl32
5
+ class INITCOMMONCONTROLSEX < FFIStruct
6
+ layout :dwsize, :dword,
7
+ :dwICC, InitCommonControls
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,23 @@
1
+ module WinFFI
2
+ module Comdlg32
3
+
4
+ #UINT_PTR CALLBACK CCHookProc(
5
+ # _In_ HWND hdlg,
6
+ # _In_ UINT uiMsg,
7
+ # _In_ WPARAM wParam,
8
+ # _In_ LPARAM lParam )
9
+ CCHookProc = callback :CCHookProc, [:hwnd, :uint, :wparam, :lparam], :uint
10
+
11
+ class CHOOSECOLOR < FFIStruct
12
+ layout :lStructSize, :ulong,
13
+ :hwndOwner, :hwnd,
14
+ :hInstance, :hinstance,
15
+ :rgbResult, :ulong,
16
+ :lpCustColors, :pointer,
17
+ :Flags, :ulong,
18
+ :lCustData, :long,
19
+ :lpfnHook, CCHookProc,
20
+ :lpTemplateName, :pointer
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,28 @@
1
+ module WinFFI
2
+ module Comdlg32
3
+ # UINT_PTR CALLBACK CFHookProc(
4
+ # _In_ HWND hdlg,
5
+ # _In_ UINT uiMsg,
6
+ # _In_ WPARAM wParam,
7
+ # _In_ LPARAM lParam )
8
+ CFHookProc = callback 'CFHookProc', [:hwnd, :uint, :wparam, :lparam], :uint
9
+
10
+ class CHOOSEFONT < FFIStruct
11
+ layout :lStructSize, :dword,
12
+ :hwndOwner, :hwnd,
13
+ :hDC, :hdc,
14
+ :lpLogFont, :pointer,
15
+ :iPointSize, :int,
16
+ :Flags, :dword,
17
+ :rgbColors, :colorref,
18
+ :lCustData, :lparam,
19
+ :lpfnHook, CFHookProc,
20
+ :lpTemplateName, :string,
21
+ :hInstance, :hinstance,
22
+ :lpszStyle, :pointer,
23
+ :nFontType, :word,
24
+ :nSizeMin, :int,
25
+ :nSizeMax, :int
26
+ end
27
+ end
28
+ end