I would expect FoxPro and derivative applications to be no different to other Windows applications in that they would be composed entirely of windows that you access via window handles. The fact that they utilise COM/ActiveX objects probably doesn't help you unless they also expose a public interface.

As for accessing the child windows (controls) of the application window, Win32::GuiTest provides a PushChildButton method that allows you to specify either the handle or the text of the child window. For simple purposes you wouldn't even need to enumerate the child controls, just specify the text of the button you want to push. For example:

#!perl use strict; use warnings; use Win32::GuiTest qw(FindWindowLike SetForegroundWindow); my $hWnd = (FindWindowLike (0,qr/My FoxPro Application/))[0] ; die "No window found\n" unless $hWnd; SetForegroundWindow ($hWnd); PushChildButton( $hWnd, "PushMe!" );

I have also had some success using SendKeys to queue messages for the main application window. With this approach it is not important which child control actually dispatches the message, just that the application must be capable of responding to the keyboard (a usability test in itself!)

Beyond this you may need to investigate Win32::API which allows you to call native Windows API functions such as SendMessage() etc. But frankly I wouldn't go this far myself, and if I did it would be with a language better suited to this kind of chicanery.


In reply to Re: Using Win32::GUITEST for Win32 Applications containing ActiveX or other COM objects. by EdwardG
in thread Using Win32::GUITEST for Win32 Applications containing ActiveX or other COM objects. by talwyn

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.