Hi

I am trying to retrieve the label displayed of menu item in  windows
explorer. For that I used win32 Api function GetMenuString( int
GetMenuString(HMENU, hMenu, WORD wIDItem, LPSTR lpString, int nMaxCount,
WORD wFlag)). But it is not giving right result. 
I also used GetMenuItemCount. It is giving right number of menu item.
If run the below script it result to

Exploring - program found
Numer Of menu item : 5
MenuLabel :

Can anyone tell where is wrong in my script  and why MenuLabel is not
showing any string .

---------------
use Win32::API;
use win32; 
 
use Win32::Setupsup qw(EnumWindows GetWindowText EnumChildWindows SetFocus 
                        WaitForWindow GetWindowProperties);

#getting total number of desktop window

EnumWindows(\@windows);
$num=0;
foreach $ele(@windows)
{
        $num++;
}


# Finding the explorer window 

FOR: for ($i=0;$i<$num;$i++)
{
        GetWindowText( @windows->[$i], \$windowtext); 
        if($windowtext eq "Exploring - program")
        {
                print "Exploring - program found \n";
                $winhandle=@windows->[$i];
                last FOR;
     }
 }
 
# getting the window handle 

$GetMenu=new Win32::API("user32","GetMenu",[N],N);
$menu=$GetMenu->Call($winhandle);

# getting total number of menu item
  
$GetMenuItemCount= new Win32::API("user32", "GetMenuItemCount", [N], N);
$n=$GetMenuItemCount->Call($menu);
print "Numer Of menu item : $n\n";
  
# gettiing label of 4th menu item ie Tools

$GetMenuString=new Win32::API("user32","GetMenuString", [N,N,P,I,N], I);
$lpBuffer = " " x 80;
$GetMenuString->Call($menu,3,$lpBuffer,80,MF_BYPOSITION);
print "MenuLabel : $lpBuffer";



-------------------------------------


Abhra Debroy
Prabodhan Exports Pvt. Ltd.(www.prabodhan.com - Join our QA Club!)
Tel: 91-20-5462035,543 1447



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to