Tim Roberts wrote:
Joel Bryan Juliano wrote:
Based on the context_menu.py example found in
win32comext\shell\demos\servers\context_menu.py, there is a function
callback when an item is chosen,

def InvokeCommand(self, ci):
        mask, hwnd, verb, params, dir, nShow, hotkey, hicon = ci
        win32gui.MessageBox(hwnd, "Hello", "Wow", win32con.MB_OK)

My question is how can I get the current names of the "MenuName >
SubMenuName > SubItemName" when InvokeCommand is called? I apologize
if this may sound like a dumb question, I'm really new to win32/COM
programming.. My approach is when I get the names, I can easily call a
function for them, since the subitems are dynamic and always changing.

You can't get the names.  What you get is the menu identifier (idCmd in
the sample) of the item that was clicked, as the "verb" -- the 3rd
member of the tuple you get in InvokeCommand.  It's up to you to assign
a meaning to that identifier.  The Win32 menu handling doesn't track the
menu "tree".  The tree is only meaningful for display.  It only notifies
you that a menu item was clicked.

I would also caution you that it is not good practice to create deeply
nested context menus.  It makes for a very confusing user experience.


And if you "really" need to know the names in the menus then you should just design your own using a Python GUI toolkit, like Tkinter or wxPython.

Mike

_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to