def SetToolsMenu(menu, menuPos = None):
global tools
global idPos
# todo - check the menu does not already exist.
# Create the new menu
toolsMenu = win32ui.CreatePopupMenu()
# Load from the ini file.
items = LoadToolMenuItems()
for menuString, cmd in items:
tools[idPos] = (menuString, cmd, menuString)
toolsMenu.AppendMenu(win32con.MF_ENABLED|win32con.MF_STRING,idPos, menuString)
win32ui.GetMainFrame().HookCommand(HandleToolCommand, idPos)
idPos=idPos+1
# Find the correct spot to insert the new tools menu.
if menuPos is None:
menuPos = menu.GetMenuItemCount()-2
if menuPos<0: menuPos=0
menu.InsertMenu(menuPos, win32con.MF_BYPOSITION|win32con.MF_ENABLED|win32con.MF_STRING|win32con.MF_POPUP, toolsMenu.GetHandle(), '&Tools')
python类MF_BYPOSITION的实例源码
def SetToolsMenu(menu, menuPos = None):
global tools
global idPos
# todo - check the menu does not already exist.
# Create the new menu
toolsMenu = win32ui.CreatePopupMenu()
# Load from the ini file.
items = LoadToolMenuItems()
for menuString, cmd in items:
tools[idPos] = (menuString, cmd, menuString)
toolsMenu.AppendMenu(win32con.MF_ENABLED|win32con.MF_STRING,idPos, menuString)
win32ui.GetMainFrame().HookCommand(HandleToolCommand, idPos)
idPos=idPos+1
# Find the correct spot to insert the new tools menu.
if menuPos is None:
menuPos = menu.GetMenuItemCount()-2
if menuPos<0: menuPos=0
menu.InsertMenu(menuPos, win32con.MF_BYPOSITION|win32con.MF_ENABLED|win32con.MF_STRING|win32con.MF_POPUP, toolsMenu.GetHandle(), '&Tools')
def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags):
s = LoadString(IDS_DISPLAY);
win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_BYPOSITION, idCmdFirst + MENUVERB_DISPLAY, s);
indexMenu += 1
# other verbs could go here...
# indicate that we added one verb.
return 1
def AddSystemReloadMenu(wnd):
if not WndProcManage(wnd):
return False
hSysMenu = win32gui.GetSystemMenu(wnd.GetHandle(), False)
if not hSysMenu:
return False
win32gui.InsertMenu(hSysMenu,
0,
win32con.MF_BYPOSITION | win32con.MF_SEPARATOR,
0,
'')
win32gui.InsertMenu(hSysMenu,
0,
win32con.MF_BYPOSITION,
SYS_MENU_RELOAD_MODULES,
'Reload Modules')
def HandleSystemMenu(wnd, msg, wparam, lparam):
wnd.__class__._reload_modules()
return False
AddCallback(HandleSystemMenu,
wnd,
win32con.WM_SYSCOMMAND,
SYS_MENU_RELOAD_MODULES,
None)
return True
def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags):
s = LoadString(IDS_DISPLAY);
win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_BYPOSITION, idCmdFirst + MENUVERB_DISPLAY, s);
indexMenu += 1
# other verbs could go here...
# indicate that we added one verb.
return 1
def SetHelpMenuOtherHelp(mainMenu):
"""Modifies the main Help Menu to handle all registered help files.
mainMenu -- The main menu to modify - usually from docTemplate.GetSharedMenu()
"""
# Load all help files from the registry.
global helpIDMap
if helpIDMap is None:
helpIDMap = {}
cmdID = win32ui.ID_HELP_OTHER
excludeList = ['Main Python Documentation', 'Pythonwin Reference']
firstList = ListAllHelpFiles()
# We actually want to not only exclude these entries, but
# their help file names (as many entries may share the same name)
excludeFnames = []
for desc, fname in firstList:
if desc in excludeList:
excludeFnames.append(fname)
helpDescs = []
for desc, fname in firstList:
if fname not in excludeFnames:
helpIDMap[cmdID] = (desc, fname)
win32ui.GetMainFrame().HookCommand(HandleHelpOtherCommand, cmdID)
cmdID = cmdID + 1
helpMenu = mainMenu.GetSubMenu(mainMenu.GetMenuItemCount()-1) # Help menu always last.
otherHelpMenuPos = 2 # cant search for ID, as sub-menu has no ID.
otherMenu = helpMenu.GetSubMenu(otherHelpMenuPos)
while otherMenu.GetMenuItemCount():
otherMenu.DeleteMenu(0, win32con.MF_BYPOSITION)
if helpIDMap:
for id, (desc, fname) in helpIDMap.iteritems():
otherMenu.AppendMenu(win32con.MF_ENABLED|win32con.MF_STRING,id, desc)
else:
helpMenu.EnableMenuItem(otherHelpMenuPos, win32con.MF_BYPOSITION | win32con.MF_GRAYED)
def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags):
s = LoadString(IDS_DISPLAY);
win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_BYPOSITION, idCmdFirst + MENUVERB_DISPLAY, s);
indexMenu += 1
# other verbs could go here...
# indicate that we added one verb.
return 1
def SetHelpMenuOtherHelp(mainMenu):
"""Modifies the main Help Menu to handle all registered help files.
mainMenu -- The main menu to modify - usually from docTemplate.GetSharedMenu()
"""
# Load all help files from the registry.
global helpIDMap
if helpIDMap is None:
helpIDMap = {}
cmdID = win32ui.ID_HELP_OTHER
excludeList = ['Main Python Documentation', 'Pythonwin Reference']
firstList = ListAllHelpFiles()
# We actually want to not only exclude these entries, but
# their help file names (as many entries may share the same name)
excludeFnames = []
for desc, fname in firstList:
if desc in excludeList:
excludeFnames.append(fname)
helpDescs = []
for desc, fname in firstList:
if fname not in excludeFnames:
helpIDMap[cmdID] = (desc, fname)
win32ui.GetMainFrame().HookCommand(HandleHelpOtherCommand, cmdID)
cmdID = cmdID + 1
helpMenu = mainMenu.GetSubMenu(mainMenu.GetMenuItemCount()-1) # Help menu always last.
otherHelpMenuPos = 2 # cant search for ID, as sub-menu has no ID.
otherMenu = helpMenu.GetSubMenu(otherHelpMenuPos)
while otherMenu.GetMenuItemCount():
otherMenu.DeleteMenu(0, win32con.MF_BYPOSITION)
if helpIDMap:
for id, (desc, fname) in helpIDMap.items():
otherMenu.AppendMenu(win32con.MF_ENABLED|win32con.MF_STRING,id, desc)
else:
helpMenu.EnableMenuItem(otherHelpMenuPos, win32con.MF_BYPOSITION | win32con.MF_GRAYED)
winGuiAuto_bak.py 文件源码
项目:Automation-Framework-for-devices
作者: tok-gogogo
项目源码
文件源码
阅读 21
收藏 0
点赞 0
评论 0
def getMenuInfo(hMenu, uIDItem):
'''Get various info about a menu item.
Arguments:
hMenu The menu in which the item is to be found.
uIDItem The item's index
Returns: Menu item information object. This object is basically
a 'bunch'
(see http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52308).
It will have useful attributes: name, itemCount,
submenu, isChecked, isDisabled, isGreyed, and
isSeperator
Raises:
WinGuiAutoError When the requested menu option isn't found.
Usage example: submenuInfo = getMenuInfo(hMenu, submenu)
hMenu, hMenuItemCount = submenuInfo.submenu, submenuInfo.itemCount'''
# An object to hold the menu info
class MenuInfo(Bunch):
pass
menuInfo = MenuInfo()
# Menu state
menuState = ctypes.windll.user32.GetMenuState(hMenu,
uIDItem,
win32con.MF_BYPOSITION)
if menuState == -1:
raise WinGuiAutoError("No such menu item, hMenu=" +
str(hMenu) +
" uIDItem=" +
str(uIDItem))
menuInfo.isChecked = bool(menuState & win32con.MF_CHECKED)
menuInfo.isDisabled = bool(menuState & win32con.MF_DISABLED)
menuInfo.isGreyed = bool(menuState & win32con.MF_GRAYED)
menuInfo.isSeperator = bool(menuState & win32con.MF_SEPARATOR)
# ... there are more, but these are the ones I'm interested in
# Menu name
menuName = ctypes.c_buffer("\000" * 32)
ctypes.windll.user32.GetMenuStringA(ctypes.c_int(hMenu),
ctypes.c_int(uIDItem),
menuName, ctypes.c_int(len(menuName)),
win32con.MF_BYPOSITION)
menuInfo.name = menuName.value
# Sub menu info
menuInfo.itemCount = menuState >> 8
if bool(menuState & win32con.MF_POPUP):
menuInfo.submenu = ctypes.windll.user32.GetSubMenu(hMenu, uIDItem)
else:
menuInfo.submenu = None
return menuInfo
winGuiAuto.py 文件源码
项目:Automation-Framework-for-devices
作者: tok-gogogo
项目源码
文件源码
阅读 28
收藏 0
点赞 0
评论 0
def getMenuInfo(hMenu, uIDItem):
'''Get various info about a menu item.
Arguments:
hMenu The menu in which the item is to be found.
uIDItem The item's index
Returns: Menu item information object. This object is basically
a 'bunch'
(see http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52308).
It will have useful attributes: name, itemCount,
submenu, isChecked, isDisabled, isGreyed, and
isSeperator
Raises:
WinGuiAutoError When the requested menu option isn't found.
Usage example: submenuInfo = getMenuInfo(hMenu, submenu)
hMenu, hMenuItemCount = submenuInfo.submenu, submenuInfo.itemCount'''
# An object to hold the menu info
class MenuInfo(Bunch):
pass
menuInfo = MenuInfo()
# Menu state
menuState = ctypes.windll.user32.GetMenuState(hMenu,
uIDItem,
win32con.MF_BYPOSITION)
if menuState == -1:
raise WinGuiAutoError("No such menu item, hMenu=" +
str(hMenu) +
" uIDItem=" +
str(uIDItem))
menuInfo.isChecked = bool(menuState & win32con.MF_CHECKED)
menuInfo.isDisabled = bool(menuState & win32con.MF_DISABLED)
menuInfo.isGreyed = bool(menuState & win32con.MF_GRAYED)
menuInfo.isSeperator = bool(menuState & win32con.MF_SEPARATOR)
# ... there are more, but these are the ones I'm interested in
# Menu name
menuName = ctypes.c_buffer("\000" * 32)
ctypes.windll.user32.GetMenuStringA(ctypes.c_int(hMenu),
ctypes.c_int(uIDItem),
menuName, ctypes.c_int(len(menuName)),
win32con.MF_BYPOSITION)
menuInfo.name = menuName.value
# Sub menu info
menuInfo.itemCount = menuState >> 8
if bool(menuState & win32con.MF_POPUP):
menuInfo.submenu = ctypes.windll.user32.GetSubMenu(hMenu, uIDItem)
else:
menuInfo.submenu = None
return menuInfo
def getMenuInfo(hMenu, uIDItem):
#print "getMenuInfo fuction,hMenu,uIDItem",hMenu,uIDItem
'''Get various info about a menu item.
Arguments:
hMenu The menu in which the item is to be found.
uIDItem The item's index
Returns: Menu item information object. This object is basically
a 'bunch'
(see http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52308).
It will have useful attributes: name, itemCount,
submenu, isChecked, isDisabled, isGreyed, and
isSeperator
Raises:
WinGuiAutoError When the requested menu option isn't found.
Usage example: submenuInfo = getMenuInfo(hMenu, submenu)
hMenu, hMenuItemCount = submenuInfo.submenu, submenuInfo.itemCount'''
# An object to hold the menu info
class MenuInfo(Bunch):
pass
menuInfo = MenuInfo()
# Menu state
menuState = ctypes.windll.user32.GetMenuState(hMenu,
uIDItem,
win32con.MF_BYPOSITION)
#print "menuState_MF_BYPOSITION:",ctypes.windll.user32.GetMenuState(hMenu,uIDItem,win32con.MF_BYPOSITION)
#print "menuState_MF_BYCOMMAND:",ctypes.windll.user32.GetMenuState(hMenu,uIDItem,win32con.MF_BYCOMMAND)
if menuState == -1:
raise WinGuiAutoError("No such menu item, hMenu=" +
str(hMenu) +
" uIDItem=" +
str(uIDItem))
menuInfo.isChecked = bool(menuState & win32con.MF_CHECKED)
menuInfo.isDisabled = bool(menuState & win32con.MF_DISABLED)
menuInfo.isGreyed = bool(menuState & win32con.MF_GRAYED)
menuInfo.isSeperator = bool(menuState & win32con.MF_SEPARATOR)
# ... there are more, but these are the ones I'm interested in
# Menu name
menuName = ctypes.c_buffer("\000" * 32)
ctypes.windll.user32.GetMenuStringA(ctypes.c_int(hMenu),
ctypes.c_int(uIDItem),
menuName, ctypes.c_int(len(menuName)),
win32con.MF_BYPOSITION)
menuInfo.name = menuName.value
# Sub menu info
menuInfo.itemCount = menuState >> 8
if bool(menuState & win32con.MF_POPUP):
menuInfo.submenu = ctypes.windll.user32.GetSubMenu(hMenu, uIDItem)
else:
menuInfo.submenu = None
#print "menuInfo",menuInfo
return menuInfo