in reply to Using Win32::GUITEST for Win32 Applications containing ActiveX or other COM objects.
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Using Win32::GUITEST for Win32 Applications containing ActiveX or other COM objects.
by talwyn (Monk) on Nov 19, 2003 at 01:47 UTC | |
by gmpassos (Priest) on Nov 20, 2003 at 00:27 UTC |