The applicaition is Visual 2003, but uses WxWidgets. www.wxwidgets.org
What I want to do is:
Code: click into code to enlarge
ret = RxMenuSelectItemText (form, "View","Fullscreen");
The code below is just me iterating seeing that the name of the menu is not valid.
Code: click into code to enlarge
#include "stdafx.h"
#include "RanorexCore.h"
void DumpElementTree(ElementStruct* pElement, int level, HMENU menu=NULL)
{
level++;
if (level < 6)
{
if (pElement->Role == ROLE_SYSTEM_MENUITEM || pElement->Role == ROLE_SYSTEM_MENUPOPUP ||
pElement->Role == ROLE_SYSTEM_MENUBAR || pElement->Role == ROLE_SYSTEM_WINDOW)
{
if (pElement->Role == ROLE_SYSTEM_MENUBAR )
{
menu = GetMenu(pElement->hWnd);
}
int childCount = RxElementGetChildCount(pElement);
for(int index=0;index<childCount;index++)
{
int childId=0;
ElementStruct child;
HMENU subMenu;
BOOL ret=RxElementGetChild(pElement, index, &child);
if( ret == TRUE )
{
if (child.Role == ROLE_SYSTEM_MENUITEM || child.Role == ROLE_SYSTEM_MENUPOPUP ||
child.Role == ROLE_SYSTEM_MENUBAR)
{
printf("%d",level);
for(int j=0;j<level;j++)
printf(" ");
char szText[256];
UINT ID = ::GetMenuItemID(menu,index);
::GetMenuString(menu,index,szText,255,MF_BYPOSITION);
printf("Index=%d Name=%s Role=%d Value=%s ID=%d %s\n",
index,child.Name,child.Role,RxElementGetValue(&child),ID,szText);
if (ID == 20061)
{
RxElementDoDefaultAction(&child);
}
subMenu = GetSubMenu(menu,index);
if (level == 3)
{
subMenu = menu;
}
DumpElementTree(&child,level,subMenu);
}
}
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
if (argc < 2)
{
printf("ERROR: Need executable name");
return 0;
}
printf("-------------------------------------\n");
printf(" Starting application... \n");
printf("-------------------------------------\n");
// Starting testapplication
int ret = RxApplicationStart(argv[1]);
if ( ret != 0 )
{
printf(" ERROR: Cannot start application %s\n",argv[1]);
exit(1);
}
HWND form = RxFormFindTitle("Ed", MATCH_SUBSTRING , TRUE, 90000);
// Finding form by class name and activate it (timeout=3000 msec)
if ( form == 0 )
{
printf(" ERROR: Application not found\n");
exit(1);
}
printf("Selecting menu items\n");
ElementStruct elBrowser;
if (RxControlGetElement (form, &elBrowser))
{
DumpElementTree(&elBrowser, 0);
}
int i;
int k;
int m1;
int iID;
int iState;
char *szName;
i = RxMenuGetItemCount(form,0);
for (int j=1;j<=i;j++)
{
szName = RxMenuGetItemText(form,j);
iID = RxMenuGetItemId (form,j);
iState = RxMenuGetItemState (form,j);
printf("%d\tNAME: %s\t%d\t%d\n",j, szName, iID, iState);
k = RxMenuGetItemCount(form,j);
for (int l=1;l<=k;l++)
{
szName = RxMenuGetItemText(form,j,l);
iID = RxMenuGetItemId (form,j,l);
iState = RxMenuGetItemState (form,j,l);
printf("\t%d\tNAME: %s\t%d\t%d\n",l,szName, iID, iState);
m1 = RxMenuGetItemCount(form,j,l);
for (int m2=1;m2<=m1;m2++)
{
szName = RxMenuGetItemText(form,j,l,m2);
iID = RxMenuGetItemId (form,j,l,m2);
iState = RxMenuGetItemState (form,j,l,m2);
printf("\t\t%d\tNAME: %s\t%d\t%d\n",m2,szName, iID, iState);
}
}
}
ret = RxMenuSelectPosition (form,1,2,-1);
char* str = RxMenuGetItemText(form,3,2);
ret = RxMenuSelectItemText (form, "View","Fullscreen");
RxFormClose(form);
return 0;
}
|