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,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,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,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,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,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,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,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,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,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
|