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