Hi Mark,
Matt already replied but I thought I would give more info.
On Oct 23, 2010, at 10:04 PM, Mark Rada wrote:
> Hi,
>
> I've been trying to play with using the Accessibility API to do some
> automated testing.
>
>> From what I have researched, I have to use some C functions that often need
>> a reference passed to the them.
>
> I am at a loss when trying to deal with Pointer objects. I've tried playing
> with them and googling it, but I just cannot figure out how to turn a pointer
> into a more useful type or to get what I want out of them.
>
> For example, I can start like this:
>
> framework 'Cocoa'
>
> unless AXAPIEnabled() # only works if I include the parenthesis
> puts 'Please enable Access for Assistive Devices first'
> exit 2
> end
That's expected, in Ruby methods starting with a capital letter must be called
with explicit parentheses, otherwise they are interpreted as constants.
> mail =
> NSRunningApplication.runningApplicationsWithBundleIdentifier('com.apple.Mail').first
> mail_object = AXUIElementCreateApplication mail.processIdentifier
>
> names = Pointer.new :object
>
> AXUIElementCopyAttributeNames mail_object, names
>
>
> But then how do I get the values out of the names pointer? For reference, I
> found the functions in AXUIElement.h.
It looks like AXUIElementCopyAttributeNames returns a CFArray by reference. So
your pointer object is properly created, to retrieve the array after the call
you just use
array = names[0]
Then, it should behave like a normal Ruby array.
Laurent
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel