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,17 @@
|
|
1
|
+
require 'win-ffi/structs/point'
|
2
|
+
|
3
|
+
module WinFFI
|
4
|
+
module User32
|
5
|
+
class AltTabInfo < FFIStruct
|
6
|
+
layout :cbSize, :dword,
|
7
|
+
:cItems, :int,
|
8
|
+
:cColumns, :int,
|
9
|
+
:cRows, :int,
|
10
|
+
:iColFocus, :int,
|
11
|
+
:iRowFocus, :int,
|
12
|
+
:cxItem, :int,
|
13
|
+
:cyItem, :int,
|
14
|
+
:ptStart, POINT
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module WinFFI
|
2
|
+
module User32
|
3
|
+
class CREATESTRUCT < FFIStruct
|
4
|
+
layout :lpCreateParams, :pointer,
|
5
|
+
:hInstance, :hinstance,
|
6
|
+
:hMenu, :hmenu,
|
7
|
+
:hwndParent, :pointer,
|
8
|
+
:height, :int,
|
9
|
+
:width, :int,
|
10
|
+
:y, :int,
|
11
|
+
:x, :int,
|
12
|
+
:style, :long,
|
13
|
+
:lpszName, :string,
|
14
|
+
:lpszClass, :string,
|
15
|
+
:dwExStyle, :uint
|
16
|
+
|
17
|
+
def to_s
|
18
|
+
[:lpCreateParams, :x, :y, :width, :height, :style, :dwExStyle].map{|n| "#{n} = #{send(n)}"}.join(', ')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'win-ffi/structs/rect'
|
2
|
+
|
3
|
+
module WinFFI
|
4
|
+
module User32
|
5
|
+
class GuiThreadInfo < FFIStruct
|
6
|
+
layout :cbSize, :dword,
|
7
|
+
:flags, :dword,
|
8
|
+
:hwndActive, :hwnd,
|
9
|
+
:hwndFocus, :hwnd,
|
10
|
+
:hwndCapture, :hwnd,
|
11
|
+
:hwndMenuOwner, :hwnd,
|
12
|
+
:hwndMoveSize, :hwnd,
|
13
|
+
:hwndCaret, :hwnd,
|
14
|
+
:rcCaret, RECT
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module WinFFI
|
2
|
+
module User32
|
3
|
+
class MENUITEMINFO < FFIStruct
|
4
|
+
layout :cbSize, :uint,
|
5
|
+
:fMask, :uint,
|
6
|
+
:ftype, :uint,
|
7
|
+
:fState, :uint,
|
8
|
+
:wID, :uint,
|
9
|
+
:hSubMenu, :hmenu,
|
10
|
+
:hbmpChecked, :pointer,
|
11
|
+
:hbmpUnchecked, :pointer,
|
12
|
+
:dwItemData, :ulong,
|
13
|
+
:dwTypeData, :string,
|
14
|
+
:cch, :uint,
|
15
|
+
:hbmpItem, :pointer
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module WinFFI
|
2
|
+
module User32
|
3
|
+
class MSGBOXPARAMS < FFIStruct
|
4
|
+
layout :cbSize, :uint,
|
5
|
+
:hwndOwner, :hwnd,
|
6
|
+
:hInstance, :hinstance,
|
7
|
+
:lpszText, :string,
|
8
|
+
:lpszCaption, :string,
|
9
|
+
:dwStyle, :dword,
|
10
|
+
:lpszIcon, :string,
|
11
|
+
:dwContextHelpId, :ulong,
|
12
|
+
:lpfnMsgBoxCallback, :pointer,
|
13
|
+
:dwLanguageId, :dword
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'win-ffi/structs/gdi32/log_font'
|
2
|
+
|
3
|
+
module WinFFI
|
4
|
+
module User32
|
5
|
+
class NONCLIENTMETRICS < FFIStruct
|
6
|
+
layout(*[
|
7
|
+
:cbSize, :uint,
|
8
|
+
:iBorderWidth, :int,
|
9
|
+
:iScrollWidth, :int,
|
10
|
+
:iScrollHeight, :int,
|
11
|
+
:iCaptionWidth, :int,
|
12
|
+
:iCaptionHeight, :int,
|
13
|
+
:lfCaptionFont, Gdi32::LOGFONT,
|
14
|
+
:iSmCaptionWidth, :int,
|
15
|
+
:iSmCaptionHeight, :int,
|
16
|
+
:lfSmCaptionFont, Gdi32::LOGFONT,
|
17
|
+
:iMenuWidth, :int,
|
18
|
+
:iMenuHeight, :int,
|
19
|
+
:lfMenuFont, Gdi32::LOGFONT,
|
20
|
+
:lfStatusFont, Gdi32::LOGFONT,
|
21
|
+
:lfMessageFont, Gdi32::LOGFONT,
|
22
|
+
(WindowsVersion >= :vista) ? [:iPaddedBorderWidth, :int] : nil
|
23
|
+
].tap { |layout|
|
24
|
+
layout.flatten!
|
25
|
+
layout.compact!
|
26
|
+
})
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'win-ffi/structs/point'
|
2
|
+
require 'win-ffi/structs/size'
|
3
|
+
require 'win-ffi/enums/user32/layered_window_attributes_flags'
|
4
|
+
require 'win-ffi/structs/rect'
|
5
|
+
|
6
|
+
|
7
|
+
module WinFFI
|
8
|
+
module User32
|
9
|
+
class UpdateLayeredWindowInfo < FFIStruct
|
10
|
+
layout :cbSize, :dword,
|
11
|
+
:hdcDst, :hdc,
|
12
|
+
:pptDst, POINT.ptr,
|
13
|
+
:psize, SIZE.ptr,
|
14
|
+
:hdcSrc, :hdc,
|
15
|
+
:pptSrc, POINT.ptr,
|
16
|
+
:crKey, :dword,
|
17
|
+
:pblend, :pointer,
|
18
|
+
:dwFlags, LayeredWindowAttributesFlags,
|
19
|
+
:prcDirty, RECT.ptr
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module WinFFI
|
2
|
+
module User32
|
3
|
+
class WindowPlacement < FFIStruct
|
4
|
+
layout :length, :uint,
|
5
|
+
:flags, :uint,
|
6
|
+
:showCmd, :uint,
|
7
|
+
:ptMinPosition, POINT,
|
8
|
+
:ptMaxPosition, POINT,
|
9
|
+
:rcNormalPosition, RECT
|
10
|
+
|
11
|
+
#TODO
|
12
|
+
#remove_method :length=
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
super
|
16
|
+
self[:length] = self.size
|
17
|
+
end
|
18
|
+
|
19
|
+
def showCmd
|
20
|
+
User32::ShowWindowEnum[self[:showCmd]]
|
21
|
+
end
|
22
|
+
|
23
|
+
def showCmd=(v)
|
24
|
+
self[:showCmd] = v.is_a?(Integer) ? v : User32::ShowWindowEnum[v]
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_s
|
28
|
+
"showCmd = #{showCmd}, min = #{ptMinPosition}, max = #{ptMaxPosition}, normal = #{rcNormalPosition}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative '../../../enums/user32/window/set_window_pos_flags'
|
2
|
+
|
3
|
+
module WinFFI
|
4
|
+
module User32
|
5
|
+
class WindowPos < FFIStruct
|
6
|
+
FLAGS_INV = SetWindowPosFlags.to_hash.reduce(Hash.new{|h,k| h[k] = []}){|h,(k,v)| h[v] << k; h}.freeze
|
7
|
+
|
8
|
+
layout :hwnd, :pointer, #HWND
|
9
|
+
:hwndInsertAfter, :pointer, #HWND
|
10
|
+
:left, :int,
|
11
|
+
:top, :int,
|
12
|
+
:width, :int,
|
13
|
+
:height, :int,
|
14
|
+
:flags, :uint
|
15
|
+
|
16
|
+
def flags
|
17
|
+
val = self[:flags]
|
18
|
+
Set.new(FLAGS_INV.select { |k,_| val & k != 0 }.reduce([]) { |a,(_,v)| a << v }.flatten)
|
19
|
+
end
|
20
|
+
|
21
|
+
def flags=(flags)
|
22
|
+
self[:flags] = [*flags].reduce(0) { |a,f| a | SetWindowPosFlags[f].to_i }
|
23
|
+
end
|
24
|
+
|
25
|
+
def right
|
26
|
+
width + left
|
27
|
+
end
|
28
|
+
|
29
|
+
def right=(v)
|
30
|
+
self.width = v - left
|
31
|
+
end
|
32
|
+
|
33
|
+
def bottom
|
34
|
+
height + top
|
35
|
+
end
|
36
|
+
|
37
|
+
def bottom=(v)
|
38
|
+
self.height = v - top
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_s
|
42
|
+
"left = #{left}, top = #{top}, width = #{width}, height = #{height}, flags = #{flags.to_a.inspect}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'win-ffi/functions/user32/window/window_proc'
|
2
|
+
|
3
|
+
module WinFFI
|
4
|
+
module User32
|
5
|
+
class WNDCLASS < FFIStruct
|
6
|
+
layout :style, :uint,
|
7
|
+
:lpfnWndProc, WindowProc,
|
8
|
+
:cbClsExtra, :int,
|
9
|
+
:cbWndExtra, :int,
|
10
|
+
:hInstance, :hinstance,
|
11
|
+
:hIcon, :hicon,
|
12
|
+
:hCursor, :hcursor,
|
13
|
+
:hbrBackground, :hbrush,
|
14
|
+
:lpszMenuName, :pointer,
|
15
|
+
:lpszClassName, :pointer,
|
16
|
+
:hIconSm, :pointer
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'win-ffi/enums/user32/window/style/window_class_style'
|
2
|
+
require 'win-ffi/functions/user32/window/window_proc'
|
3
|
+
|
4
|
+
module WinFFI
|
5
|
+
module User32
|
6
|
+
class WNDCLASSEX < FFIStruct
|
7
|
+
layout :cbSize, :uint,
|
8
|
+
:style, WindowClassStyle,
|
9
|
+
:lpfnWndProc, WindowProc,
|
10
|
+
:cbClsExtra, :int,
|
11
|
+
:cbWndExtra, :int,
|
12
|
+
:hInstance, :hinstance,
|
13
|
+
:hIcon, :hicon,
|
14
|
+
:hCursor, :hcursor,
|
15
|
+
:hbrBackground, :hbrush,
|
16
|
+
:lpszMenuName, :pointer,
|
17
|
+
:lpszClassName, :pointer,
|
18
|
+
:hIconSm, :pointer
|
19
|
+
|
20
|
+
#TODO
|
21
|
+
#undef_method :cbSize=
|
22
|
+
|
23
|
+
def initialize(class_name)
|
24
|
+
super()
|
25
|
+
@class_name = class_name
|
26
|
+
self.cbSize = self.size
|
27
|
+
self.lpszClassName = FFI::MemoryPointer.from_string(@class_name)
|
28
|
+
@atom = nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def atom
|
32
|
+
@atom = User32::RegisterClassExW(self) unless @atom
|
33
|
+
raise 'RegisterClassEx Error' if @atom == 0
|
34
|
+
@atom
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
require 'win-ffi/functions/user32/window/window_class'
|
data/lib/win-ffi.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'facets/pathname'
|
2
|
+
require 'win-ffi/version'
|
3
|
+
require 'win-ffi/struct'
|
4
|
+
|
5
|
+
|
6
|
+
module WinFFI
|
7
|
+
require 'win-ffi/lib_base'
|
8
|
+
extend LibBase
|
9
|
+
|
10
|
+
module Kernel32
|
11
|
+
extend LibBase
|
12
|
+
|
13
|
+
ffi_lib 'kernel32'
|
14
|
+
|
15
|
+
#BOOL WINAPI GetVersionEx( _Inout_ LPOSVERSIONINFO lpVersionInfo )
|
16
|
+
attach_function 'GetVersionExA', [:pointer], :bool
|
17
|
+
attach_function 'GetVersionExW', [:pointer], :bool
|
18
|
+
end
|
19
|
+
|
20
|
+
require_relative 'win-ffi/structs/os_version_info_ex'
|
21
|
+
|
22
|
+
WindowsVersion = OSVERSIONINFOEX.new.get!
|
23
|
+
|
24
|
+
require 'win-ffi/functions/netapi32/network_management'
|
25
|
+
require 'win-ffi/structs/netapi32/wksta_info_100'
|
26
|
+
|
27
|
+
FFI::MemoryPointer.new(:long) do |pinfoRawData|
|
28
|
+
if Netapi32.NetWkstaGetInfo(nil, 100, pinfoRawData) == 0
|
29
|
+
net_info = WKSTA_INFO_100.new(pinfoRawData.get_pointer(0))
|
30
|
+
major = net_info.wki100_ver_major
|
31
|
+
minor = net_info.wki100_ver_minor
|
32
|
+
puts major
|
33
|
+
puts minor
|
34
|
+
WindowsVersion.major = major
|
35
|
+
WindowsVersion.minor = minor
|
36
|
+
puts WindowsVersion.major
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
puts "WinFFI #{WinFFI::VERSION}"
|
41
|
+
puts WinFFI::WindowsVersion.to_s
|
42
|
+
end
|