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.
- checksums.yaml +7 -0
- data/README.md +36 -0
- data/lib/win-ffi/enums/color_types.rb +61 -0
- data/lib/win-ffi/enums/comctl32/init_common_controls.rb +32 -0
- data/lib/win-ffi/enums/comctl32/window/style/window_class_style.rb +7 -0
- data/lib/win-ffi/enums/comctl32.rb +5 -0
- data/lib/win-ffi/enums/comdlg32/find_replace.rb +28 -0
- data/lib/win-ffi/enums/comdlg32/font.rb +33 -0
- data/lib/win-ffi/enums/extended_name_format.rb +17 -0
- data/lib/win-ffi/enums/firmware_type.rb +12 -0
- data/lib/win-ffi/enums/gdi32/device_context.rb +29 -0
- data/lib/win-ffi/enums/gdi32/dib.rb +8 -0
- data/lib/win-ffi/enums/gdi32/hatch_styles.rb +15 -0
- data/lib/win-ffi/enums/gdi32/pfd_flags.rb +28 -0
- data/lib/win-ffi/enums/gdi32/pfd_layer_type.rb +7 -0
- data/lib/win-ffi/enums/gdi32/pfd_type.rb +7 -0
- data/lib/win-ffi/enums/gdi32/raster_operations.rb +22 -0
- data/lib/win-ffi/enums/gdi32.rb +90 -0
- data/lib/win-ffi/enums/kernel32/activation_context.rb +17 -0
- data/lib/win-ffi/enums/kernel32/computer_name_format.rb +19 -0
- data/lib/win-ffi/enums/kernel32/format_message_flags.rb +16 -0
- data/lib/win-ffi/enums/kernel32/get_module_handle_ex_flag.rb +7 -0
- data/lib/win-ffi/enums/kernel32/global_alloc_flags.rb +14 -0
- data/lib/win-ffi/enums/kernel32/handle.rb +9 -0
- data/lib/win-ffi/enums/kernel32/heap_flags.rb +14 -0
- data/lib/win-ffi/enums/kernel32/local_flags.rb +20 -0
- data/lib/win-ffi/enums/kernel32/memory.rb +12 -0
- data/lib/win-ffi/enums/kernel32/memory_flags.rb +22 -0
- data/lib/win-ffi/enums/kernel32/memory_protection_constants.rb +20 -0
- data/lib/win-ffi/enums/kernel32/set_error_mode_flags.rb +11 -0
- data/lib/win-ffi/enums/kernel32/sound_flags.rb +24 -0
- data/lib/win-ffi/enums/kernel32/volume.rb +13 -0
- data/lib/win-ffi/enums/kernel32.rb +5 -0
- data/lib/win-ffi/enums/lr.rb +48 -0
- data/lib/win-ffi/enums/netapi21/net_api_status.rb +25 -0
- data/lib/win-ffi/enums/netapi32.rb +5 -0
- data/lib/win-ffi/enums/system_info.rb +54 -0
- data/lib/win-ffi/enums/user32/append_menu_flags.rb +21 -0
- data/lib/win-ffi/enums/user32/border_flags.rb +29 -0
- data/lib/win-ffi/enums/user32/clipboard_formats.rb +31 -0
- data/lib/win-ffi/enums/user32/device_notify_flags.rb +17 -0
- data/lib/win-ffi/enums/user32/draw_caption_flags.rb +16 -0
- data/lib/win-ffi/enums/user32/draw_frame_control_flags.rb +15 -0
- data/lib/win-ffi/enums/user32/draw_frame_control_state_flags.rb +44 -0
- data/lib/win-ffi/enums/user32/edge_flags.rb +20 -0
- data/lib/win-ffi/enums/user32/feedback_type.rb +21 -0
- data/lib/win-ffi/enums/user32/get_ancestor_flags.rb +12 -0
- data/lib/win-ffi/enums/user32/icon.rb +19 -0
- data/lib/win-ffi/enums/user32/image.rb +12 -0
- data/lib/win-ffi/enums/user32/key_event_flags.rb +11 -0
- data/lib/win-ffi/enums/user32/keyboard_layout_flags.rb +57 -0
- data/lib/win-ffi/enums/user32/keyboard_modifiers.rb +16 -0
- data/lib/win-ffi/enums/user32/layered_window_attributes_flags.rb +12 -0
- data/lib/win-ffi/enums/user32/map_virtual_key.rb +22 -0
- data/lib/win-ffi/enums/user32/message_filter.rb +11 -0
- data/lib/win-ffi/enums/user32/mouse_event_flags.rb +25 -0
- data/lib/win-ffi/enums/user32/mouse_keys_flags.rb +16 -0
- data/lib/win-ffi/enums/user32/mwmo.rb +17 -0
- data/lib/win-ffi/enums/user32/ocr.rb +32 -0
- data/lib/win-ffi/enums/user32/oic.rb +26 -0
- data/lib/win-ffi/enums/user32/pen_flags.rb +12 -0
- data/lib/win-ffi/enums/user32/pen_mask.rb +14 -0
- data/lib/win-ffi/enums/user32/pointer_flags.rb +82 -0
- data/lib/win-ffi/enums/user32/pointer_input_type.rb +13 -0
- data/lib/win-ffi/enums/user32/process_dpi_awareness.rb +12 -0
- data/lib/win-ffi/enums/user32/queue_status_flags.rb +36 -0
- data/lib/win-ffi/enums/user32/rim.rb +12 -0
- data/lib/win-ffi/enums/user32/touch_injection_flags.rb +13 -0
- data/lib/win-ffi/enums/user32/touch_mask.rb +13 -0
- data/lib/win-ffi/enums/user32/user_object_information_flags.rb +22 -0
- data/lib/win-ffi/enums/user32/virtual_key_flags.rb +214 -0
- data/lib/win-ffi/enums/user32/window/animate_window_flags.rb +31 -0
- data/lib/win-ffi/enums/user32/window/broadcast_system_flags.rb +20 -0
- data/lib/win-ffi/enums/user32/window/broadcast_system_message_flags.rb +12 -0
- data/lib/win-ffi/enums/user32/window/combo_box_message.rb +53 -0
- data/lib/win-ffi/enums/user32/window/get_class_long_flags.rb +34 -0
- data/lib/win-ffi/enums/user32/window/get_window_flags.rb +38 -0
- data/lib/win-ffi/enums/user32/window/get_window_long_flags.rb +16 -0
- data/lib/win-ffi/enums/user32/window/menu_flags.rb +54 -0
- data/lib/win-ffi/enums/user32/window/message_box_flags.rb +90 -0
- data/lib/win-ffi/enums/user32/window/message_box_return.rb +18 -0
- data/lib/win-ffi/enums/user32/window/notification/button_notification.rb +20 -0
- data/lib/win-ffi/enums/user32/window/notification/edit_notification.rb +19 -0
- data/lib/win-ffi/enums/user32/window/notification/static_notification.rb +13 -0
- data/lib/win-ffi/enums/user32/window/peek_message_flags.rb +13 -0
- data/lib/win-ffi/enums/user32/window/set_window_pos_flags.rb +48 -0
- data/lib/win-ffi/enums/user32/window/show_window_flags.rb +41 -0
- data/lib/win-ffi/enums/user32/window/smto.rb +22 -0
- data/lib/win-ffi/enums/user32/window/style/button_control_style.rb +37 -0
- data/lib/win-ffi/enums/user32/window/style/combo_box_style.rb +22 -0
- data/lib/win-ffi/enums/user32/window/style/edit_style.rb +23 -0
- data/lib/win-ffi/enums/user32/window/style/static_style.rb +45 -0
- data/lib/win-ffi/enums/user32/window/style/window_class_style.rb +50 -0
- data/lib/win-ffi/enums/user32/window/style/window_style.rb +85 -0
- data/lib/win-ffi/enums/user32/window/style/window_style_ex.rb +98 -0
- data/lib/win-ffi/enums/user32/window/system_menu_command.rb +37 -0
- data/lib/win-ffi/enums/user32/window/system_metrics_flags.rb +300 -0
- data/lib/win-ffi/enums/user32/window/system_parameters_info_action.rb +225 -0
- data/lib/win-ffi/enums/user32/window/system_parameters_info_flags.rb +246 -0
- data/lib/win-ffi/enums/user32/window/track_popup_menu_flags.rb +70 -0
- data/lib/win-ffi/enums/user32/window/window_long.rb +22 -0
- data/lib/win-ffi/enums/user32/window/window_messages.rb +222 -0
- data/lib/win-ffi/enums/user32/window_hook.rb +56 -0
- data/lib/win-ffi/enums/user32.rb +5 -0
- data/lib/win-ffi/functions/advapi32/process.rb +33 -0
- data/lib/win-ffi/functions/advapi32/system_info.rb +17 -0
- data/lib/win-ffi/functions/comctl32/control.rb +11 -0
- data/lib/win-ffi/functions/comctl32/listbox.rb +20 -0
- data/lib/win-ffi/functions/comctl32.rb +7 -0
- data/lib/win-ffi/functions/comdlg32/color.rb +9 -0
- data/lib/win-ffi/functions/comdlg32/error.rb +6 -0
- data/lib/win-ffi/functions/comdlg32/find_replace.rb +9 -0
- data/lib/win-ffi/functions/comdlg32/font.rb +9 -0
- data/lib/win-ffi/functions/comdlg32.rb +7 -0
- data/lib/win-ffi/functions/gdi32/bitmap.rb +275 -0
- data/lib/win-ffi/functions/gdi32/brush.rb +54 -0
- data/lib/win-ffi/functions/gdi32/device_context.rb +126 -0
- data/lib/win-ffi/functions/gdi32/filled_shape.rb +68 -0
- data/lib/win-ffi/functions/gdi32/font.rb +9 -0
- data/lib/win-ffi/functions/gdi32/metafile.rb +173 -0
- data/lib/win-ffi/functions/gdi32/opengl.rb +29 -0
- data/lib/win-ffi/functions/gdi32/painting_drawing.rb +50 -0
- data/lib/win-ffi/functions/gdi32/text.rb +376 -0
- data/lib/win-ffi/functions/gdi32.rb +7 -0
- data/lib/win-ffi/functions/kernel32/activation.rb +22 -0
- data/lib/win-ffi/functions/kernel32/dll.rb +92 -0
- data/lib/win-ffi/functions/kernel32/error.rb +28 -0
- data/lib/win-ffi/functions/kernel32/filesystem.rb +22 -0
- data/lib/win-ffi/functions/kernel32/handle.rb +29 -0
- data/lib/win-ffi/functions/kernel32/memory.rb +478 -0
- data/lib/win-ffi/functions/kernel32/process.rb +359 -0
- data/lib/win-ffi/functions/kernel32/resource.rb +141 -0
- data/lib/win-ffi/functions/kernel32/sound.rb +10 -0
- data/lib/win-ffi/functions/kernel32/string.rb +38 -0
- data/lib/win-ffi/functions/kernel32/system_info.rb +183 -0
- data/lib/win-ffi/functions/kernel32/time.rb +220 -0
- data/lib/win-ffi/functions/kernel32/volume.rb +130 -0
- data/lib/win-ffi/functions/kernel32.rb +15 -0
- data/lib/win-ffi/functions/msimg32/bitmap.rb +46 -0
- data/lib/win-ffi/functions/msvcrt/handle.rb +13 -0
- data/lib/win-ffi/functions/netapi32/network_management.rb +13 -0
- data/lib/win-ffi/functions/netapi32.rb +7 -0
- data/lib/win-ffi/functions/ntdll/system_info.rb +14 -0
- data/lib/win-ffi/functions/secur32/system_info.rb +30 -0
- data/lib/win-ffi/functions/shell32/icon.rb +49 -0
- data/lib/win-ffi/functions/shutdown.rb +84 -0
- data/lib/win-ffi/functions/thread.rb +230 -0
- data/lib/win-ffi/functions/user32/accessibility.rb +23 -0
- data/lib/win-ffi/functions/user32/authorization.rb +19 -0
- data/lib/win-ffi/functions/user32/bitmap.rb +11 -0
- data/lib/win-ffi/functions/user32/brush.rb +10 -0
- data/lib/win-ffi/functions/user32/caret.rb +36 -0
- data/lib/win-ffi/functions/user32/clipboard.rb +84 -0
- data/lib/win-ffi/functions/user32/controls/button.rb +23 -0
- data/lib/win-ffi/functions/user32/controls/combobox.rb +29 -0
- data/lib/win-ffi/functions/user32/controls/listbox.rb +25 -0
- data/lib/win-ffi/functions/user32/controls/scrollbar.rb +95 -0
- data/lib/win-ffi/functions/user32/cursor.rb +74 -0
- data/lib/win-ffi/functions/user32/dde.rb +214 -0
- data/lib/win-ffi/functions/user32/desktop.rb +76 -0
- data/lib/win-ffi/functions/user32/device.rb +17 -0
- data/lib/win-ffi/functions/user32/device_context.rb +62 -0
- data/lib/win-ffi/functions/user32/display.rb +37 -0
- data/lib/win-ffi/functions/user32/error.rb +10 -0
- data/lib/win-ffi/functions/user32/filled_shape.rb +23 -0
- data/lib/win-ffi/functions/user32/gesture.rb +38 -0
- data/lib/win-ffi/functions/user32/hook.rb +123 -0
- data/lib/win-ffi/functions/user32/icon.rb +98 -0
- data/lib/win-ffi/functions/user32/input.rb +23 -0
- data/lib/win-ffi/functions/user32/keyboard.rb +177 -0
- data/lib/win-ffi/functions/user32/keyboard_accelerators.rb +37 -0
- data/lib/win-ffi/functions/user32/mouse.rb +60 -0
- data/lib/win-ffi/functions/user32/multiple_display_monitors.rb +43 -0
- data/lib/win-ffi/functions/user32/multiple_document_interface.rb +44 -0
- data/lib/win-ffi/functions/user32/painting_drawing.rb +173 -0
- data/lib/win-ffi/functions/user32/pointer.rb +154 -0
- data/lib/win-ffi/functions/user32/power.rb +28 -0
- data/lib/win-ffi/functions/user32/print.rb +14 -0
- data/lib/win-ffi/functions/user32/process.rb +30 -0
- data/lib/win-ffi/functions/user32/raw_input.rb +55 -0
- data/lib/win-ffi/functions/user32/rect.rb +67 -0
- data/lib/win-ffi/functions/user32/resource.rb +28 -0
- data/lib/win-ffi/functions/user32/shell.rb +29 -0
- data/lib/win-ffi/functions/user32/string.rb +98 -0
- data/lib/win-ffi/functions/user32/text.rb +48 -0
- data/lib/win-ffi/functions/user32/touch.rb +69 -0
- data/lib/win-ffi/functions/user32/transform.rb +22 -0
- data/lib/win-ffi/functions/user32/window/configuration.rb +15 -0
- data/lib/win-ffi/functions/user32/window/dialog.rb +167 -0
- data/lib/win-ffi/functions/user32/window/menu.rb +245 -0
- data/lib/win-ffi/functions/user32/window/message.rb +168 -0
- data/lib/win-ffi/functions/user32/window/properties.rb +50 -0
- data/lib/win-ffi/functions/user32/window/timer.rb +37 -0
- data/lib/win-ffi/functions/user32/window/window.rb +546 -0
- data/lib/win-ffi/functions/user32/window/window_class.rb +109 -0
- data/lib/win-ffi/functions/user32/window/window_proc.rb +29 -0
- data/lib/win-ffi/functions/user32/window_station.rb +39 -0
- data/lib/win-ffi/functions/user32.rb +161 -0
- data/lib/win-ffi/functions/winmm.rb +547 -0
- data/lib/win-ffi/functions/wtsapi32/process.rb +12 -0
- data/lib/win-ffi/lib_base.rb +54 -0
- data/lib/win-ffi/struct.rb +15 -0
- data/lib/win-ffi/structs/comctl32/init_common_controls_ex.rb +10 -0
- data/lib/win-ffi/structs/comdlg32/choose_color.rb +23 -0
- data/lib/win-ffi/structs/comdlg32/choose_font.rb +28 -0
- data/lib/win-ffi/structs/comdlg32/find_replace.rb +24 -0
- data/lib/win-ffi/structs/gdi32/abc.rb +9 -0
- data/lib/win-ffi/structs/gdi32/abcfloat.rb +10 -0
- data/lib/win-ffi/structs/gdi32/bitmap.rb +13 -0
- data/lib/win-ffi/structs/gdi32/bitmap_info.rb +11 -0
- data/lib/win-ffi/structs/gdi32/bitmap_info_header.rb +17 -0
- data/lib/win-ffi/structs/gdi32/blend_function.rb +10 -0
- data/lib/win-ffi/structs/gdi32/display_device.rb +12 -0
- data/lib/win-ffi/structs/gdi32/handle_table.rb +7 -0
- data/lib/win-ffi/structs/gdi32/kerning_pair.rb +9 -0
- data/lib/win-ffi/structs/gdi32/log_brush.rb +10 -0
- data/lib/win-ffi/structs/gdi32/log_font.rb +20 -0
- data/lib/win-ffi/structs/gdi32/meta_file_pict.rb +10 -0
- data/lib/win-ffi/structs/gdi32/palette_entry.rb +10 -0
- data/lib/win-ffi/structs/gdi32/pixel_format_descriptor.rb +57 -0
- data/lib/win-ffi/structs/gdi32/rgb_quad.rb +10 -0
- data/lib/win-ffi/structs/kernel32/actctx.rb +22 -0
- data/lib/win-ffi/structs/netapi32/wksta_info_100.rb +9 -0
- data/lib/win-ffi/structs/os_version_info.rb +10 -0
- data/lib/win-ffi/structs/os_version_info_ex.rb +70 -0
- data/lib/win-ffi/structs/paint_struct.rb +12 -0
- data/lib/win-ffi/structs/point.rb +10 -0
- data/lib/win-ffi/structs/rect.rb +28 -0
- data/lib/win-ffi/structs/size.rb +6 -0
- data/lib/win-ffi/structs/user32/controls/combobox_info.rb +13 -0
- data/lib/win-ffi/structs/user32/controls/scroll_info.rb +13 -0
- data/lib/win-ffi/structs/user32/controls/scrollbar_info.rb +13 -0
- data/lib/win-ffi/structs/user32/cursor_info.rb +10 -0
- data/lib/win-ffi/structs/user32/display_device.rb +12 -0
- data/lib/win-ffi/structs/user32/draw_text_params.rb +11 -0
- data/lib/win-ffi/structs/user32/icon_info.rb +11 -0
- data/lib/win-ffi/structs/user32/icon_info_ex.rb +15 -0
- data/lib/win-ffi/structs/user32/last_input_info.rb +8 -0
- data/lib/win-ffi/structs/user32/mouse_move_point.rb +10 -0
- data/lib/win-ffi/structs/user32/msg.rb +16 -0
- data/lib/win-ffi/structs/user32/pointer_info.rb +25 -0
- data/lib/win-ffi/structs/user32/pointer_pen_info.rb +18 -0
- data/lib/win-ffi/structs/user32/pointer_touch_info.rb +17 -0
- data/lib/win-ffi/structs/user32/raw_input_device_list.rb +10 -0
- data/lib/win-ffi/structs/user32/raw_input_header.rb +10 -0
- data/lib/win-ffi/structs/user32/touch_hit_testing_input.rb +11 -0
- data/lib/win-ffi/structs/user32/touch_hit_testing_proximity_evaluation.rb +8 -0
- data/lib/win-ffi/structs/user32/track_mouse_event.rb +10 -0
- data/lib/win-ffi/structs/user32/window/alt_tab_info.rb +17 -0
- data/lib/win-ffi/structs/user32/window/bs_info.rb +12 -0
- data/lib/win-ffi/structs/user32/window/create_struct.rb +22 -0
- data/lib/win-ffi/structs/user32/window/dlg_template.rb +13 -0
- data/lib/win-ffi/structs/user32/window/flashw_info.rb +11 -0
- data/lib/win-ffi/structs/user32/window/gui_thread_info.rb +17 -0
- data/lib/win-ffi/structs/user32/window/luid.rb +8 -0
- data/lib/win-ffi/structs/user32/window/menu_info.rb +13 -0
- data/lib/win-ffi/structs/user32/window/menu_item_info.rb +18 -0
- data/lib/win-ffi/structs/user32/window/menu_item_template.rb +9 -0
- data/lib/win-ffi/structs/user32/window/menubar_info.rb +12 -0
- data/lib/win-ffi/structs/user32/window/msgbox_params.rb +16 -0
- data/lib/win-ffi/structs/user32/window/non_client_metrics.rb +29 -0
- data/lib/win-ffi/structs/user32/window/title_bar_info.rb +9 -0
- data/lib/win-ffi/structs/user32/window/tpm_params.rb +8 -0
- data/lib/win-ffi/structs/user32/window/update_layered_window_info.rb +22 -0
- data/lib/win-ffi/structs/user32/window/window_placement.rb +32 -0
- data/lib/win-ffi/structs/user32/window/window_pos.rb +46 -0
- data/lib/win-ffi/structs/user32/window/wndclass.rb +19 -0
- data/lib/win-ffi/structs/user32/window/wndclassex.rb +40 -0
- data/lib/win-ffi/version.rb +3 -0
- data/lib/win-ffi.rb +42 -0
- 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,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
|