lib/rautomation/adapter/ms_uia/uia_dll.rb in rautomation-0.13.0 vs lib/rautomation/adapter/ms_uia/uia_dll.rb in rautomation-0.14.0
- old
+ new
@@ -92,11 +92,11 @@
end
def data=(value)
case how
when :hwnd
- self[:data][:int_data] = value
+ self[:data][:int_data] = value || 0 # cannot accept nil
when :id, :value
self[:data][:string_data] = value
when :point
self[:data][:point_data].to_ptr.write_array_of_int(value)
end
@@ -300,36 +300,48 @@
# Table methods
attach_function :Table_GetHeaders,
[SearchCriteria.by_ref, :pointer], :int
attach_function :Table_GetValues,
[SearchCriteria.by_ref, :pointer], :int
+ attach_function :Table_GetSelectedIndexes,
+ [SearchCriteria.by_ref, :pointer], :int
attach_function :table_row_count, :Table_RowCount,
[SearchCriteria.by_ref], :int
attach_function :Table_CoordinateIsValid,
[SearchCriteria.by_ref, :int, :int], :bool
attach_function :Table_ValueAt,
[SearchCriteria.by_ref, :int, :int, :pointer, :int], :void
attach_function :Table_SelectByIndex,
[SearchCriteria.by_ref, :int, :pointer, :int], :void
+ attach_function :Table_SingleSelectByIndex,
+ [SearchCriteria.by_ref, :int, :pointer, :int], :void
attach_function :Table_SelectByValue,
[SearchCriteria.by_ref, :string, :pointer, :int], :void
attach_function :table_row_is_selected, :Table_IsSelectedByIndex,
[SearchCriteria.by_ref, :int], :bool
attach_function :Table_RemoveRowByIndex,
[SearchCriteria.by_ref, :int, :pointer, :int], :void
attach_function :Table_RemoveRowByValue,
[SearchCriteria.by_ref, :string, :pointer, :int], :void
+ def self.table_selected_indexes(search_information)
+ integers_from(:Table_GetSelectedIndexes, search_information)
+ end
+
def self.table_select(search_information, which_item)
case which_item
when Integer
can_throw(:Table_SelectByIndex, search_information, which_item)
when String
can_throw(:Table_SelectByValue, search_information, which_item)
end
end
+ def self.table_single_select(search_information, which_item)
+ can_throw(:Table_SingleSelectByIndex, search_information, which_item)
+ end
+
def self.table_value_at(search_information, row, column=0)
string_from(:Table_ValueAt, search_information, row, column)
end
def self.table_coordinate_valid?(search_information, row, column=0)
@@ -379,9 +391,16 @@
def self.control_click(search_information)
can_throw(:Click, search_information)
end
private
+ def self.integers_from(method, search_information)
+ item_count = send method, search_information, nil
+ pointer = FFI::MemoryPointer.new :pointer, item_count
+ send method, search_information, pointer
+ pointer.read_array_of_int(item_count)
+ end
+
def self.strings_from(method, hwnd)
string_count = send method, hwnd, nil
pointer = FFI::MemoryPointer.new :pointer, string_count
send method, hwnd, pointer
strings = pointer.get_array_of_string 0, string_count