我们从Python开源项目中,提取了以下35个代码示例,用于说明如何使用win32con.MF_STRING。
def OnTaskbarNotify(self, hwnd, msg, wparam, lparam): if lparam == win32con.WM_LBUTTONUP: print "You clicked me." elif lparam == win32con.WM_LBUTTONDBLCLK: print "You double-clicked me - goodbye" win32gui.DestroyWindow(self.hwnd) elif lparam == win32con.WM_RBUTTONUP: print "You right clicked me." menu = win32gui.CreatePopupMenu() win32gui.AppendMenu(menu, win32con.MF_STRING, 1023, gbk("????")) win32gui.AppendMenu(menu, win32con.MF_STRING, 1024, gbk("????")) win32gui.AppendMenu(menu, win32con.MF_STRING, 1025, gbk("????")) win32gui.AppendMenu(menu, win32con.MF_STRING, 1026, gbk("????")) pos = win32gui.GetCursorPos() win32gui.SetForegroundWindow(self.hwnd) win32gui.TrackPopupMenu(menu, win32con.TPM_LEFTALIGN, pos[0], pos[1], 0, self.hwnd, None) win32gui.PostMessage(self.hwnd, win32con.WM_NULL, 0, 0) return 1
def OnTaskbarNotify(self, hwnd, msg, wparam, lparam): if lparam==win32con.WM_LBUTTONUP: print "You clicked me." elif lparam==win32con.WM_LBUTTONDBLCLK: print "You double-clicked me - goodbye" win32gui.DestroyWindow(self.hwnd) elif lparam==win32con.WM_RBUTTONUP: print "You right clicked me." menu = win32gui.CreatePopupMenu() win32gui.AppendMenu( menu, win32con.MF_STRING, 1023, "Display Dialog") win32gui.AppendMenu( menu, win32con.MF_STRING, 1024, "Say Hello") win32gui.AppendMenu( menu, win32con.MF_STRING, 1025, "Exit program" ) pos = win32gui.GetCursorPos() # See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/menus_0hdi.asp win32gui.SetForegroundWindow(self.hwnd) win32gui.TrackPopupMenu(menu, win32con.TPM_LEFTALIGN, pos[0], pos[1], 0, self.hwnd, None) win32gui.PostMessage(self.hwnd, win32con.WM_NULL, 0, 0) return 1
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 OnRClick(self,params): menu = win32ui.CreatePopupMenu() # look for a module name line=self._obj_.GetLine().strip() flags=win32con.MF_STRING|win32con.MF_ENABLED if patImport.match(line)==len(line): menu.AppendMenu(flags, ID_LOCATE_FILE, "&Locate %s.py"%patImport.group('name')) menu.AppendMenu(win32con.MF_SEPARATOR); menu.AppendMenu(flags, win32ui.ID_EDIT_UNDO, '&Undo') menu.AppendMenu(win32con.MF_SEPARATOR); menu.AppendMenu(flags, win32ui.ID_EDIT_CUT, 'Cu&t') menu.AppendMenu(flags, win32ui.ID_EDIT_COPY, '&Copy') menu.AppendMenu(flags, win32ui.ID_EDIT_PASTE, '&Paste') menu.AppendMenu(flags, win32con.MF_SEPARATOR); menu.AppendMenu(flags, win32ui.ID_EDIT_SELECT_ALL, '&Select all') menu.AppendMenu(flags, win32con.MF_SEPARATOR); menu.AppendMenu(flags, ID_GOTO_LINE, '&Goto line...') menu.TrackPopupMenu(params[5]) return 0
def OnRClick(self, params): menu = win32ui.CreatePopupMenu() flags=win32con.MF_STRING|win32con.MF_ENABLED lineno = self._obj_.LineFromChar(-1) #selection or current line line = self._obj_.GetLine(lineno) regexGrepResult = regexGrep.match(line) charstart, charend = self._obj_.GetSel() if regexGrepResult: self.fnm = regexGrepResult.group(1) self.lnnum = int(regexGrepResult.group(2)) menu.AppendMenu(flags, ID_OPEN_FILE, "&Open "+self.fnm) menu.AppendMenu(flags, ID_ADDCOMMENT, "&Add to source: Comment Tag/#$pycheck_no ..") menu.AppendMenu(flags, ID_ADDPYCHECKNO2, "&Add to source: Specific #$pycheck_no=%(errtext)s ..") menu.AppendMenu(win32con.MF_SEPARATOR) menu.AppendMenu(flags, ID_TRYAGAIN, "&Try Again") menu.AppendMenu(flags, win32ui.ID_EDIT_CUT, 'Cu&t') menu.AppendMenu(flags, win32ui.ID_EDIT_COPY, '&Copy') menu.AppendMenu(flags, win32ui.ID_EDIT_PASTE, '&Paste') menu.AppendMenu(flags, win32con.MF_SEPARATOR); menu.AppendMenu(flags, win32ui.ID_EDIT_SELECT_ALL, '&Select all') menu.AppendMenu(flags, win32con.MF_SEPARATOR); menu.AppendMenu(flags, ID_SAVERESULTS, 'Sa&ve results') menu.TrackPopupMenu(params[5]) return 0
def OnItemRightClick(self, notify_data, extra): # First select the item we right-clicked on. pt = self.ScreenToClient(win32api.GetCursorPos()) flags, hItem, subitem = self.HitTest(pt) if hItem==-1 or commctrl.TVHT_ONITEM & flags==0: return None self.SetItemState(hItem, commctrl.LVIS_SELECTED, commctrl.LVIS_SELECTED) menu = win32ui.CreatePopupMenu() menu.AppendMenu(win32con.MF_STRING|win32con.MF_ENABLED,1000, "Edit item") menu.AppendMenu(win32con.MF_STRING|win32con.MF_ENABLED,1001, "Delete item") dockbar = self.GetParent() if dockbar.IsFloating(): hook_parent = win32ui.GetMainFrame() else: hook_parent = self.GetParentFrame() hook_parent.HookCommand(self.OnEditItem, 1000) hook_parent.HookCommand(self.OnDeleteItem, 1001) menu.TrackPopupMenu(win32api.GetCursorPos()) # track at mouse position. return None
def AppendMenu(self, menu, text="", event=None, flags = None, checked=0): if event is None: assert flags is not None, "No event or custom flags!" cmdid = 0 else: cmdid = self.bindings.get_command_id(event) if cmdid is None: # No event of that name - no point displaying it. print 'View.AppendMenu(): Unknown event "%s" specified for menu text "%s" - ignored' % (event, text) return keyname = configManager.get_key_binding( event, self._GetSubConfigNames() ) if keyname is not None: text = text + "\t" + keyname if flags is None: flags = win32con.MF_STRING|win32con.MF_ENABLED if checked: flags = flags | win32con.MF_CHECKED menu.AppendMenu(flags, cmdid, text)
def CheckIDLEMenus(self, idle): if self.bSetMenus: return self.bSetMenus = 1 submenu = win32ui.CreatePopupMenu() newitems = idle.GetMenuItems("edit") flags=win32con.MF_STRING|win32con.MF_ENABLED for text, event in newitems: id = bindings.event_to_commands.get(event) if id is not None: keyname = pywin.scintilla.view.configManager.get_key_binding( event, ["editor"] ) if keyname is not None: text = text + "\t" + keyname submenu.AppendMenu(flags, id, text) mainMenu = self.GetSharedMenu() editMenu = mainMenu.GetSubMenu(1) editMenu.AppendMenu(win32con.MF_SEPARATOR, 0, "") editMenu.AppendMenu(win32con.MF_STRING | win32con.MF_POPUP | win32con.MF_ENABLED, submenu.GetHandle(), "&Source Code")
def OnItemRightClick(self, notify_data, extra): # First select the item we right-clicked on. pt = self.ScreenToClient(win32api.GetCursorPos()) flags, hItem = self.HitTest(pt) if hItem==0 or commctrl.TVHT_ONITEM & flags==0: return None self.Select(hItem, commctrl.TVGN_CARET) menu = win32ui.CreatePopupMenu() menu.AppendMenu(win32con.MF_STRING|win32con.MF_ENABLED,1000, "Add Key") menu.AppendMenu(win32con.MF_STRING|win32con.MF_ENABLED,1001, "Add Value") menu.AppendMenu(win32con.MF_STRING|win32con.MF_ENABLED,1002, "Delete Key") self.HookCommand(self.OnAddKey, 1000) self.HookCommand(self.OnAddValue, 1001) self.HookCommand(self.OnDeleteKey, 1002) menu.TrackPopupMenu(win32api.GetCursorPos()) # track at mouse position. return None
def AppendMenu(self, menu, text="", event=None, flags = None, checked=0): if event is None: assert flags is not None, "No event or custom flags!" cmdid = 0 else: cmdid = self.bindings.get_command_id(event) if cmdid is None: # No event of that name - no point displaying it. print('View.AppendMenu(): Unknown event "%s" specified for menu text "%s" - ignored' % (event, text)) return keyname = configManager.get_key_binding( event, self._GetSubConfigNames() ) if keyname is not None: text = text + "\t" + keyname if flags is None: flags = win32con.MF_STRING|win32con.MF_ENABLED if checked: flags = flags | win32con.MF_CHECKED menu.AppendMenu(flags, cmdid, text)
def _SetupMenu(self): menu = win32ui.CreateMenu() flags=win32con.MF_STRING|win32con.MF_ENABLED menu.AppendMenu(flags, win32ui.ID_FILE_OPEN, "&Open...") menu.AppendMenu(flags, win32con.IDCANCEL, "&Close") mainMenu = win32ui.CreateMenu() mainMenu.AppendMenu(flags|win32con.MF_POPUP, menu.GetHandle(), "&File") self.SetMenu(mainMenu) self.HookCommand(self.OnFileOpen,win32ui.ID_FILE_OPEN)
def OnRClick(self,params): menu = win32ui.CreatePopupMenu() self.AppendMenu(menu, "&Locate module", "LocateModule") self.AppendMenu(menu, flags=win32con.MF_SEPARATOR) self.AppendMenu(menu, "&Undo", "EditUndo") self.AppendMenu(menu, '&Redo', 'EditRedo') self.AppendMenu(menu, flags=win32con.MF_SEPARATOR) self.AppendMenu(menu, 'Cu&t', 'EditCut') self.AppendMenu(menu, '&Copy', 'EditCopy') self.AppendMenu(menu, '&Paste', 'EditPaste') self.AppendMenu(menu, flags=win32con.MF_SEPARATOR) self.AppendMenu(menu, '&Select all', 'EditSelectAll') self.AppendMenu(menu, 'View &Whitespace', 'ViewWhitespace', checked=self.SCIGetViewWS()) self.AppendMenu(menu, "&Fixed Font", "ViewFixedFont", checked = self._GetColorizer().bUseFixed) self.AppendMenu(menu, flags=win32con.MF_SEPARATOR) self.AppendMenu(menu, "&Goto line...", "GotoLine") submenu = win32ui.CreatePopupMenu() newitems = self.idle.GetMenuItems("edit") for text, event in newitems: self.AppendMenu(submenu, text, event) flags=win32con.MF_STRING|win32con.MF_ENABLED|win32con.MF_POPUP menu.AppendMenu(flags, submenu.GetHandle(), "&Source code") flags = win32con.TPM_LEFTALIGN|win32con.TPM_LEFTBUTTON|win32con.TPM_RIGHTBUTTON menu.TrackPopupMenu(params[5], flags, self) return 0
def OnRClick(self, params): menu = win32ui.CreatePopupMenu() flags=win32con.MF_STRING|win32con.MF_ENABLED lineno = self._obj_.LineFromChar(-1) #selection or current line line = self._obj_.GetLine(lineno) regexGrepResult = regexGrep.match(line) if regexGrepResult: self.fnm = regexGrepResult.group(1) self.lnnum = int(regexGrepResult.group(2)) menu.AppendMenu(flags, ID_OPEN_FILE, "&Open "+self.fnm) menu.AppendMenu(win32con.MF_SEPARATOR) menu.AppendMenu(flags, ID_TRYAGAIN, "&Try Again") charstart, charend = self._obj_.GetSel() if charstart != charend: linestart = self._obj_.LineIndex(lineno) self.sel = line[charstart-linestart:charend-linestart] menu.AppendMenu(flags, ID_GREP, "&Grep for "+self.sel) menu.AppendMenu(win32con.MF_SEPARATOR) menu.AppendMenu(flags, win32ui.ID_EDIT_CUT, 'Cu&t') menu.AppendMenu(flags, win32ui.ID_EDIT_COPY, '&Copy') menu.AppendMenu(flags, win32ui.ID_EDIT_PASTE, '&Paste') menu.AppendMenu(flags, win32con.MF_SEPARATOR); menu.AppendMenu(flags, win32ui.ID_EDIT_SELECT_ALL, '&Select all') menu.AppendMenu(flags, win32con.MF_SEPARATOR); menu.AppendMenu(flags, ID_SAVERESULTS, 'Sa&ve results') menu.TrackPopupMenu(params[5]) return 0
def GetRightMenuItems(self): ret = [] flags=win32con.MF_STRING|win32con.MF_ENABLED ret.append((flags, win32ui.ID_EDIT_COPY, '&Copy')) ret.append((flags, win32ui.ID_EDIT_SELECT_ALL, '&Select all')) return ret # # Windows command handlers, virtuals, etc. #
def OnTaskbarNotify( self, hwnd, msg, wparam, lparam, ): if lparam == win32con.WM_LBUTTONUP: pass elif lparam == win32con.WM_LBUTTONDBLCLK: pass elif lparam == win32con.WM_RBUTTONUP: menu = win32gui.CreatePopupMenu() win32gui.AppendMenu(menu, win32con.MF_STRING, 1023, 'Toggle Display') win32gui.AppendMenu(menu, win32con.MF_SEPARATOR, 0, '') if self.serverState == self.EnumServerState.STOPPED: win32gui.AppendMenu(menu, win32con.MF_STRING, 1024, 'Start Server') win32gui.AppendMenu(menu, win32con.MF_STRING | win32con.MF_GRAYED, 1025, 'Restart Server') win32gui.AppendMenu(menu, win32con.MF_STRING | win32con.MF_GRAYED, 1026, 'Stop Server') else: win32gui.AppendMenu(menu, win32con.MF_STRING | win32con.MF_GRAYED, 1024, 'Start Server') win32gui.AppendMenu(menu, win32con.MF_STRING, 1025, 'Restart Server') win32gui.AppendMenu(menu, win32con.MF_STRING, 1026, 'Stop Server') win32gui.AppendMenu(menu, win32con.MF_SEPARATOR, 0, '') win32gui.AppendMenu(menu, win32con.MF_STRING, 1027, 'Quit (pid:%i)' % os.getpid()) pos = win32gui.GetCursorPos() # See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/menus_0hdi.asp win32gui.SetForegroundWindow(self.hwnd) win32gui.TrackPopupMenu( menu, win32con.TPM_LEFTALIGN, pos[0], pos[1], 0, self.hwnd, None, ) win32api.PostMessage(self.hwnd, win32con.WM_NULL, 0, 0) return 1
def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags): print "QCM", hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags # Query the items clicked on format_etc = win32con.CF_HDROP, None, 1, -1, pythoncom.TYMED_HGLOBAL sm = self.dataobj.GetData(format_etc) num_files = shell.DragQueryFile(sm.data_handle, -1) if num_files>1: msg = "&Hello from Python (with %d files selected)" % num_files else: fname = shell.DragQueryFile(sm.data_handle, 0) msg = "&Hello from Python (with '%s' selected)" % fname idCmd = idCmdFirst items = ['First Python content menu item'] if (uFlags & 0x000F) == shellcon.CMF_NORMAL: # Check == here, since CMF_NORMAL=0 print "CMF_NORMAL..." items.append(msg) elif uFlags & shellcon.CMF_VERBSONLY: print "CMF_VERBSONLY..." items.append(msg + " - shortcut") elif uFlags & shellcon.CMF_EXPLORE: print "CMF_EXPLORE..." items.append(msg + " - normal file, right-click in Explorer") elif uFlags & CMF_DEFAULTONLY: print "CMF_DEFAULTONLY...\r\n" else: print "** unknown flags", uFlags win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_SEPARATOR|win32con.MF_BYPOSITION, 0, None) indexMenu += 1 for item in items: win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_STRING|win32con.MF_BYPOSITION, idCmd, item) indexMenu += 1 idCmd += 1 win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_SEPARATOR|win32con.MF_BYPOSITION, 0, None) indexMenu += 1 return idCmd-idCmdFirst # Must return number of menu items we added.
def icon_wndproc(hwnd, msg, wp, lp): """ Window proc for the tray icons """ if lp==win32con.WM_LBUTTONDOWN: ## popup menu won't disappear if you don't do this win32gui.SetForegroundWindow(hwnd) curr_desktop=win32service.OpenInputDesktop(0,True,win32con.MAXIMUM_ALLOWED) curr_desktop_name=win32service.GetUserObjectInformation(curr_desktop,win32con.UOI_NAME) winsta=win32service.GetProcessWindowStation() desktops=winsta.EnumDesktops() m=win32gui.CreatePopupMenu() desktop_cnt=len(desktops) ## *don't* create an item 0 for d in range(1, desktop_cnt+1): mf_flags=win32con.MF_STRING ## if you switch to winlogon yourself, there's nothing there and you're stuck if desktops[d-1].lower() in ('winlogon','disconnect'): mf_flags=mf_flags|win32con.MF_GRAYED|win32con.MF_DISABLED if desktops[d-1]==curr_desktop_name: mf_flags=mf_flags|win32con.MF_CHECKED win32gui.AppendMenu(m, mf_flags, d, desktops[d-1]) win32gui.AppendMenu(m, win32con.MF_STRING, desktop_cnt+1, 'Create new ...') win32gui.AppendMenu(m, win32con.MF_STRING, desktop_cnt+2, 'Exit') x,y=win32gui.GetCursorPos() d=win32gui.TrackPopupMenu(m,win32con.TPM_LEFTBUTTON|win32con.TPM_RETURNCMD|win32con.TPM_NONOTIFY, x,y, 0, hwnd, None) win32gui.PumpWaitingMessages() win32gui.DestroyMenu(m) if d==desktop_cnt+1: ## Create new get_new_desktop_name(hwnd) elif d==desktop_cnt+2: ## Exit win32gui.PostQuitMessage(0) win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, window_info[hwnd]) del window_info[hwnd] origin_desktop.SwitchDesktop() elif d>0: hdesk=win32service.OpenDesktop(desktops[d-1],0,0,win32con.MAXIMUM_ALLOWED) hdesk.SwitchDesktop() return 0 else: return win32gui.DefWindowProc(hwnd, msg, wp, lp)
def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags): print("QCM", hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags) # Query the items clicked on format_etc = win32con.CF_HDROP, None, 1, -1, pythoncom.TYMED_HGLOBAL sm = self.dataobj.GetData(format_etc) num_files = shell.DragQueryFile(sm.data_handle, -1) if num_files>1: msg = "&Hello from Python (with %d files selected)" % num_files else: fname = shell.DragQueryFile(sm.data_handle, 0) msg = "&Hello from Python (with '%s' selected)" % fname idCmd = idCmdFirst items = ['First Python content menu item'] if (uFlags & 0x000F) == shellcon.CMF_NORMAL: # Check == here, since CMF_NORMAL=0 print("CMF_NORMAL...") items.append(msg) elif uFlags & shellcon.CMF_VERBSONLY: print("CMF_VERBSONLY...") items.append(msg + " - shortcut") elif uFlags & shellcon.CMF_EXPLORE: print("CMF_EXPLORE...") items.append(msg + " - normal file, right-click in Explorer") elif uFlags & CMF_DEFAULTONLY: print("CMF_DEFAULTONLY...\r\n") else: print("** unknown flags", uFlags) win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_SEPARATOR|win32con.MF_BYPOSITION, 0, None) indexMenu += 1 for item in items: win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_STRING|win32con.MF_BYPOSITION, idCmd, item) indexMenu += 1 idCmd += 1 win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_SEPARATOR|win32con.MF_BYPOSITION, 0, None) indexMenu += 1 return idCmd-idCmdFirst # Must return number of menu items we added.