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,24 @@
1
+ module WinFFI
2
+ module Comdlg32
3
+ #UINT_PTR CALLBACK FRHookProc(
4
+ # _In_ HWND hdlg,
5
+ # _In_ UINT uiMsg,
6
+ # _In_ WPARAM wParam,
7
+ # _In_ LPARAM lParam )
8
+ callback :FRHOOKPROC, [:hwnd, :uint, :wparam, :lparam], :uint
9
+
10
+ class FINDREPLACE < FFIStruct
11
+ layout :lStructSize, :dword,
12
+ :hwndOwner, :hwnd,
13
+ :hInstance, :hinstance,
14
+ :Flags, :dword,
15
+ :lpstrFindWhat, :string,
16
+ :lpstrReplaceWith, :string,
17
+ :wFindWhatLen, :word,
18
+ :wReplaceWithLen, :word,
19
+ :lCustData, :lparam,
20
+ :lpfnHook, :FRHOOKPROC,
21
+ :lpTemplateName, :string
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,9 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class ABC < FFIStruct
4
+ layout :abcA, :int,
5
+ :abcB, :uint,
6
+ :abcC, :int
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class ABCFLOAT < FFIStruct
4
+ layout :abcfA, :float,
5
+ :abcfB, :float,
6
+ :abcfC, :int
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,13 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class BITMAP < FFIStruct
4
+ layout :bmType, :long,
5
+ :bmWidth, :long,
6
+ :bmHeight, :long,
7
+ :bmWidthBytes, :long,
8
+ :bmPlanes, :word,
9
+ :bmBitsPixel, :word,
10
+ :bmBits, :pointer
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'bitmap_info_header'
2
+ require_relative 'rgb_quad'
3
+
4
+ module WinFFI
5
+ module Gdi32
6
+ class BITMAPINFO < FFIStruct
7
+ layout :bmiHeader, BITMAPINFOHEADER,
8
+ :bmiColors, RGBQUAD
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class BITMAPINFOHEADER < FFIStruct
4
+ layout :biSize, :dword,
5
+ :biWidth, :long,
6
+ :biHeight, :long,
7
+ :biPlanes, :word,
8
+ :biBitCount, :word,
9
+ :biCompression, :dword,
10
+ :biSizeImage, :dword,
11
+ :biXPelsPerMeter, :long,
12
+ :biYPelsPerMeter, :long,
13
+ :biClrUsed, :dword,
14
+ :biClrImportant, :dword
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class BLENDFUNCTION < FFIStruct
4
+ layout :BlendOp, :byte,
5
+ :BlendFlags, :byte,
6
+ :SourceConstantAlpha, :byte,
7
+ :AlphaFormat, :byte
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class DISPLAY_DEVICE < FFIStruct
4
+ layout :cb, :dword,
5
+ :DeviceName, [:char, 32],
6
+ :DeviceString, [:char, 128],
7
+ :StateFlags, :dword,
8
+ :DeviceID, [:char, 128],
9
+ :DeviceKey, [:char, 128]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class HANDLETABLE < FFIStruct
4
+ layout :objectHandle, :pointer
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class KERNINGPAIR < FFIStruct
4
+ layout :wFirst, :word,
5
+ :wSecond, :word,
6
+ :iKernAmount, :int
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ extend LibBase
4
+ class LOGBRUSH < FFIStruct
5
+ layout :lbStyle, :uint,
6
+ :lbColor, :colorref,
7
+ :lbHatch, :uint
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,20 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class LOGFONT < FFIStruct
4
+ layout :lfHeight, :long,
5
+ :lfWidth, :long,
6
+ :lfEscapement, :long,
7
+ :lfOrientation, :long,
8
+ :lfWeight, :long,
9
+ :lfItalic, :uchar,
10
+ :lfUnderline, :uchar,
11
+ :lfStrikeOut, :uchar,
12
+ :lfCharSet, :uchar,
13
+ :lfOutPrecision, :uchar,
14
+ :lfClipPrecision, :uchar,
15
+ :lfQuality, :uchar,
16
+ :lfPitchAndFamily, :uchar,
17
+ :lfFaceName, [:ushort, 32]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class METAFILEPICT < FFIStruct
4
+ layout :mm, :long,
5
+ :xExt, :long,
6
+ :yExt, :long,
7
+ :hMf, :long
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class PALETTEENTRY < FFIStruct
4
+ layout :peRed, :byte,
5
+ :peGreen, :byte,
6
+ :peBlue, :byte,
7
+ :peFlags, :byte
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,57 @@
1
+ require_relative '../../enums/gdi32/pfd_flags'
2
+
3
+ module WinFFI
4
+ module Gdi32
5
+ class PIXELFORMATDESCRIPTOR < FFIStruct
6
+ FLAGS_INV = PFDFlags.to_hash.reduce(Hash.new{|h,k| h[k] = []}){|h,(k,v)| h[v] << k; h}.freeze
7
+
8
+ layout :nSize, :ushort,
9
+ :nVersion, :ushort,
10
+ :dwFlags, :uint,
11
+ :iPixelType, :char,
12
+ :cColorBits, :char,
13
+ :cRedBits, :char,
14
+ :cRedShift, :char,
15
+ :cGreenBits, :char,
16
+ :cGreenShift, :char,
17
+ :cBlueBits, :char,
18
+ :cBlueShift, :char,
19
+ :cAlphaBits, :char,
20
+ :cAlphaShift, :char,
21
+ :cAccumBits, :char,
22
+ :cAccumRedBits, :char,
23
+ :cAccumGreenBits, :char,
24
+ :cAccumBlueBits, :char,
25
+ :cAccumAlphaBits, :char,
26
+ :cDepthBits, :char,
27
+ :cStencilBits, :char,
28
+ :cAuxBuffers, :char,
29
+ :iLayerType, :char,
30
+ :bReserved, :char,
31
+ :dwLayerMask, :uint,
32
+ :dwVisibleMask, :uint,
33
+ :dwDamageMask, :uint
34
+
35
+ #TODO
36
+ #undef_method :nSize=
37
+
38
+ def initialize
39
+ super
40
+ self[:nSize] = self.size
41
+ end
42
+
43
+ def dwFlags
44
+ val = self[:dwFlags]
45
+ Set.new(FLAGS_INV.select{|k,_| val & k != 0}.reduce([]) {|a,(_,v)| a << v}.flatten)
46
+ end
47
+
48
+ def dwFlags=(flags)
49
+ self[:dwFlags] = [*flags].reduce(0) {|a,f| a | PFDFlags[f].to_i}
50
+ end
51
+
52
+ def to_s
53
+ [:iPixelType, :cColorBits, :cAccumBits, :cDepthBits, :iLayerType, :dwFlags].map{|n| "#{n} = #{send(n).inspect}"}.join(', ')
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ module Gdi32
3
+ class RGBQUAD < FFIStruct
4
+ layout :rgbBlue, :byte,
5
+ :rgbGreen, :byte,
6
+ :rgbRed, :byte,
7
+ :rgbReserved, :byte
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,22 @@
1
+ require_relative '../../enums/kernel32/activation_context'
2
+
3
+ module WinFFI
4
+ module Kernel32
5
+ class ACTCTX < FFIStruct
6
+ layout :cbSize, :ulong,
7
+ :dwFlags, ActivationContext,
8
+ :lpSource, :pointer,
9
+ :wProcessorArchitecture, :ushort,
10
+ :wLangId, :langid,
11
+ :lpAssemblyDirectory, :pointer,
12
+ :lpResourceName, :pointer,
13
+ :lpApplicationName, :pointer,
14
+ :hModule, :hmodule
15
+
16
+ def initialize(*args)
17
+ super
18
+ self.cbSize = self.size
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ module WinFFI
2
+ class WKSTA_INFO_100 < FFIStruct
3
+ layout :wki100_platform_id, :dword,
4
+ :wki100_computername, :string,
5
+ :wki100_langroup, :string,
6
+ :wki100_ver_major, :dword,
7
+ :wki100_ver_minor, :dword
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ class OSVERSIONINFO < FFIStruct
3
+ layout :dwOSVersionInfoSize, :ulong,
4
+ :dwMajorVersion, :ulong,
5
+ :dwMinorVersion, :ulong,
6
+ :dwBuildNumber, :ulong,
7
+ :dwPlatformId, :ulong,
8
+ :szCSDVersion, [:char, 128]
9
+ end
10
+ end
@@ -0,0 +1,70 @@
1
+ module WinFFI
2
+ class OSVERSIONINFOEX < FFIStruct
3
+ layout :dwOSVersionInfoSize, :ulong,
4
+ :dwMajorVersion, :ulong,
5
+ :dwMinorVersion, :ulong,
6
+ :dwBuildNumber, :ulong,
7
+ :dwPlatformId, :ulong,
8
+ :szCSDVersion, [:char, 128],
9
+ :wServicePackMajor, :ushort,
10
+ :wServicePackMinor, :ushort,
11
+ :wSuiteMask, :ushort,
12
+ :wProductType, :uchar,
13
+ :wReserved, :uchar
14
+
15
+ def initialize
16
+ super
17
+ self[:dwOSVersionInfoSize] = size
18
+ end
19
+
20
+ def get!
21
+ Kernel32.GetVersionExA(self)
22
+ self
23
+ end
24
+
25
+ def major; dwMajorVersion end
26
+ def minor; dwMinorVersion end
27
+ def build; dwBuildNumber end
28
+ def sp; wServicePackMajor end
29
+
30
+ def major=(major)
31
+ self.dwMajorVersion = major
32
+ end
33
+
34
+ def minor=(minor)
35
+ self.dwMinorVersion = minor
36
+ end
37
+
38
+ def hex; (major << 8) + minor end
39
+
40
+ def <=>(version)
41
+ hex <=> case version
42
+ when '2000', 2000 then 0x0500
43
+ when 'xp', :xp then 0x0501
44
+ when 'vista', :vista then 0x0600
45
+ when '7', 7; then 0x0601
46
+ when '8', 8; then 0x0602
47
+ when '8.1', 8.1; then 0x0603
48
+ when '10', 10; then 0x0604
49
+ else raise ArgumentError, 'Unknown Version'
50
+ end
51
+ end
52
+
53
+ include Comparable
54
+
55
+ def name
56
+ case hex
57
+ when 0x0500...0x0501; 'Windows 2000'
58
+ when 0x0501...0x0600; 'Windows XP'
59
+ when 0x0600...0x0601; 'Windows Vista'
60
+ when 0x0601; 'Windows 7'
61
+ when 0x0602; 'Windows 8'
62
+ when 0x0603; 'Windows 8.1'
63
+ when 0x0a00; 'Windows 10'
64
+ else 'Unknown'
65
+ end
66
+ end
67
+
68
+ def to_s; "#{name} v#{major}.#{minor}.#{build} SP#{sp}" end
69
+ end
70
+ end
@@ -0,0 +1,12 @@
1
+ require 'win-ffi/structs/rect'
2
+
3
+ module WinFFI
4
+ class PAINTSTRUCT < FFIStruct
5
+ layout :hdc, :hdc,
6
+ :fErase, :bool,
7
+ :rcPaint, RECT,
8
+ :fRestore, :bool,
9
+ :fIncUpdate, :bool,
10
+ :rgbReserved, [:uint8, 32]
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ class POINT < FFIStruct
3
+ layout :x, :long,
4
+ :y, :long
5
+
6
+ def to_s
7
+ "(x = #{x}, y = #{y})"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,28 @@
1
+ module WinFFI
2
+ class RECT < FFIStruct
3
+ layout :left, :long,
4
+ :top, :long,
5
+ :right, :long,
6
+ :bottom, :long
7
+
8
+ def width
9
+ right - left
10
+ end
11
+
12
+ def width=(v)
13
+ self.right = left + v
14
+ end
15
+
16
+ def height
17
+ bottom - top
18
+ end
19
+
20
+ def height=(v)
21
+ self.bottom = top + v
22
+ end
23
+
24
+ def to_s
25
+ "(left = #{left}, top = #{top}, width = #{width}, height = #{height})"
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,6 @@
1
+ module WinFFI
2
+ class SIZE < FFIStruct
3
+ layout :cx, :long,
4
+ :cy, :long
5
+ end
6
+ end
@@ -0,0 +1,13 @@
1
+ module WinFFI
2
+ module User32
3
+ class COMBOBOXINFO < FFIStruct
4
+ layout :cbSize, :dword,
5
+ :rcItem, RECT,
6
+ :rcButton, RECT,
7
+ :stateButton, :dword,
8
+ :hwndCombo, :hwnd,
9
+ :hwndItem, :hwnd,
10
+ :hwndList, :hwnd
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module WinFFI
2
+ module User32
3
+ class SCROLLINFO < FFIStruct
4
+ layout :cbSize, :uint,
5
+ :fMask, :uint,
6
+ :nMin, :int,
7
+ :nMax, :int,
8
+ :nPage, :uint,
9
+ :nPos, :int,
10
+ :nTrackPos, :int
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module WinFFI
2
+ module User32
3
+ class SCROLLBARINFO < FFIStruct
4
+ layout :cbSize, :dword,
5
+ :rcScrollBar, RECT,
6
+ :dxyLineButton, :int,
7
+ :xyThumbTop, :int,
8
+ :xyThumbBottom, :int,
9
+ :reserved, :int,
10
+ :rgstate, :dword
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ module User32
3
+ class CURSORINFO < FFIStruct
4
+ layout :cbSize, :dword,
5
+ :flags, :dword,
6
+ :hCursor, :hcursor,
7
+ :ptScreenPos, WinFFI::POINT
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module WinFFI
2
+ module User32
3
+ class DISPLAY_DEVICE < FFIStruct
4
+ layout :cb, :dword,
5
+ :DeviceName, [:char, 32],
6
+ :DeviceString, [:char, 128],
7
+ :StateFlags, :dword,
8
+ :DeviceID, [:char, 128],
9
+ :DeviceKey, [:char, 128]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ module WinFFI
2
+ module User32
3
+ class DRAWTEXTPARAMS < FFIStruct
4
+ layout :cbSize, :uint,
5
+ :iTabLength, :int,
6
+ :iLeftMargin, :int,
7
+ :iRightMargin, :int,
8
+ :uiLengthDrawn, :uint
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module WinFFI
2
+ module User32
3
+ class ICONINFO < FFIStruct
4
+ layout :fIcon, :bool,
5
+ :xHotspot, :dword,
6
+ :yHotspot, :dword,
7
+ :hbmMask, :pointer,
8
+ :hbmColor, :pointer
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module WinFFI
2
+ module User32
3
+ class ICONINFOEX < FFIStruct
4
+ layout :cbSize, :dword,
5
+ :fIcon, :bool,
6
+ :xHotspot, :dword,
7
+ :yHotspot, :dword,
8
+ :hbmMask, :pointer,
9
+ :hbmColor, :pointer,
10
+ :wResID, :word,
11
+ :szModName, :string,
12
+ :szResName, :string
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,8 @@
1
+ module WinFFI
2
+ module User32
3
+ class LASTINPUTINFO < FFIStruct
4
+ layout :cbSize, :uint,
5
+ :dwTime, :dword
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ module WinFFI
2
+ module User32
3
+ class MOUSEMOVEPOINT < FFIStruct
4
+ layout :x, :int,
5
+ :y, :int,
6
+ :time, :dword,
7
+ :dwExtraInfo, :ulong
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,16 @@
1
+ module WinFFI
2
+ module User32
3
+ class MSG < FFIStruct
4
+ layout :hwnd, :pointer,
5
+ :message, :uint,
6
+ :ulong, :ulong,
7
+ :long, :long,
8
+ :time, :uint,
9
+ :pt, POINT
10
+
11
+ def to_s
12
+ "<User32::MSG #{members.map { |m| "#{m} = #{self[m]}" }.join(', ')}>"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ require_relative '../../enums/user32/pointer_input_type'
2
+ require_relative '../../enums/user32/pointer_flags'
3
+
4
+ module WinFFI
5
+ module User32
6
+ class POINTER_INFO < FFIStruct
7
+ layout :pointerType, PointerInputType,
8
+ :pointerId, :uint32,
9
+ :frameId, :uint32,
10
+ :pointerFlags, PointerFlags,
11
+ :sourceDevice, :handle,
12
+ :hwndTarget, :hwnd,
13
+ :ptPixelLocation, POINT,
14
+ :ptHimetricLocation, POINT,
15
+ :ptPixelLocationRaw, POINT,
16
+ :ptHimetricLocationRaw, POINT,
17
+ :dwTime, :dword,
18
+ :historyCount, :uint32,
19
+ :inputData, :int32,
20
+ :dwKeyStates, :dword,
21
+ :PerformanceCount, :uint,
22
+ :ButtonChangeType, :pointer
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../enums/user32/pen_flags'
2
+ require_relative '../../enums/user32/pen_mask'
3
+
4
+ require_relative 'pointer_info'
5
+
6
+ module WinFFI
7
+ module User32
8
+ class POINTER_PEN_INFO < FFIStruct
9
+ layout :pointerInfo, POINTER_INFO,
10
+ :penFlags, PenFlags,
11
+ :penMask, PenMask,
12
+ :pressure, :uint32,
13
+ :rotation, :uint32,
14
+ :tiltX, :int32,
15
+ :tiltY, :int32
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ require_relative '../../enums/user32/touch_mask'
2
+
3
+ require_relative 'pointer_info'
4
+
5
+ module WinFFI
6
+ module User32
7
+ class POINTER_TOUCH_INFO < FFIStruct
8
+ layout :pointerInfo, POINTER_INFO,
9
+ :touchFlags, :int,
10
+ :touchMask, TouchMask,
11
+ :rcContact, RECT,
12
+ :rcContactRaw, RECT,
13
+ :orientation, :uint32,
14
+ :pressure, :uint32
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ require_relative '../../enums/user32/rim'
2
+
3
+ module WinFFI
4
+ module User32
5
+ class RAWINPUTDEVICELIST < FFIStruct
6
+ layout :hDevice, :handle,
7
+ :dwType, RIM
8
+ end
9
+ end
10
+ end