#!perl -w # $Id: menuselect.pl,v 1.8 2004/07/28 11:45:13 szabgab Exp $ # Example how to get the names of the menus use strict; use Win32::GuiTest qw(:ALL); system "start notepad"; sleep 1; my $menu = GetMenu(GetForegroundWindow()); print "Menu: $menu\n"; my $submenu = GetSubMenu($menu, 0); print "Submenu: $submenu\n"; print "Count:", GetMenuItemCount($menu), "\n"; use Data::Dumper; my %h = GetMenuItemInfo($menu, 1); # Edit on the main menu print Dumper \%h; %h = GetMenuItemInfo($submenu, 1); # Open in the File menu print Dumper \%h; %h = GetMenuItemInfo($submenu, 4); # Separator in the File menu print Dumper \%h; print "===================\n"; menu_parse($menu); #MenuSelect("&Archivo|&Salir"); # Close the menu and notepad SendKeys("{ESC}%{F4}"); # this function receives a menu id and prints as much information about that menu and # all its submenues as it can # One day we might include this in the distributionor in some helper module sub menu_parse { my ($menu, $depth) = @_; $depth ||= 0; foreach my $i (0..GetMenuItemCount($menu)-1) { my %h = GetMenuItemInfo($menu, $i); print " " x $depth; print "$i "; print $h{text} if $h{type} and $h{type} eq "string"; print "------" if $h{type} and $h{type} eq "separator"; print "UNKNOWN" if not $h{type}; print "\n"; my $submenu = GetSubMenu($menu, $i); if ($submenu) { menu_parse($submenu, $depth+1); } } } SendKeys("%{F4}");