我们从Python开源项目中,提取了以下37个代码示例,用于说明如何使用win32gui.Shell_NotifyIcon()。
def refresh_icon(self): # Try and find a custom icon hinst = win32gui.GetModuleHandle(None) if os.path.isfile(self.icon): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = win32gui.LoadImage(hinst, self.icon, win32con.IMAGE_ICON, 0, 0, icon_flags) else: print("Can't find icon file - using default.") hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) if self.notify_id: message = win32gui.NIM_MODIFY else: message = win32gui.NIM_ADD self.notify_id = (self.hwnd, 0, win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP, win32con.WM_USER+20, hicon, self.hover_text) win32gui.Shell_NotifyIcon(message, self.notify_id)
def update_tray_icon(self): try: hIcon = win32gui.LoadIcon( win32gui.GetModuleHandle(None), win32con.IDI_APPLICATION ) except: hIcon = win32gui.LoadIcon(None, win32con.IDI_APPLICATION) if self.__NOTIFY_ID is None: message = win32gui.NIM_ADD else: message = win32gui.NIM_MODIFY self.__NOTIFY_ID = ( self.HWND, 0, win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP, self.MESSAGE, hIcon, self.tooltip ) win32gui.Shell_NotifyIcon(message, self.__NOTIFY_ID)
def refresh_icon(self): # Try and find a custom icon hinst = win32gui.GetModuleHandle(None) if os.path.isfile(self.icon): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = win32gui.LoadImage(hinst, self.icon, win32con.IMAGE_ICON, 0, 0, icon_flags) else: print "Can't find icon file - using default." hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) if self.notify_id: message = win32gui.NIM_MODIFY else: message = win32gui.NIM_ADD self.notify_id = (self.hwnd, 0, win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP, win32con.WM_USER + 20, hicon, self.hover_text) win32gui.Shell_NotifyIcon(message, self.notify_id)
def destroy(self, hwnd, msg, wparam, lparam): if self.on_quit: self.on_quit(self) nid = (self.hwnd, 0) win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid) win32gui.PostQuitMessage(0) # Terminate the app.
def _createIcon(self): hinst = win32api.GetModuleHandle(None) iconPathName = "" if os.path.isfile(iconPathName): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = win32gui.LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags) else: print '???icon???????' hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP nid = (self.hwnd, 0, flags, win32con.WM_USER + 20, hicon, "NetKeeper Service") try: win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid) except win32gui.error: print "Failed to add the taskbar icon - is explorer running?"
def OnDestroy(self, hwnd, msg, wparam, lparam): nid = (self.hwnd, 0) win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid) win32gui.PostQuitMessage(0) # Terminate the app.
def __init__(self, hwnd, hicon, tooltip=None): self._hwnd = hwnd self._id = 0 self._flags = win32gui.NIF_MESSAGE | win32gui.NIF_ICON self._callbackmessage = WM_TRAYMESSAGE self._hicon = hicon win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, self._get_nid()) if tooltip: self.set_tooltip(tooltip)
def remove(self): """ Removes the tray icon. """ win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, self._get_nid())
def set_tooltip(self, tooltip): """ Sets the tray icon tooltip. """ self._flags = self._flags | win32gui.NIF_TIP self._tip = tooltip win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, self._get_nid())
def show_balloon(self, title, text, timeout=10, icon=win32gui.NIIF_NONE): """ Shows a balloon tooltip from the tray icon. """ self._flags = self._flags | win32gui.NIF_INFO self._infotitle = title self._info = text self._timeout = timeout * 1000 self._infoflags = icon win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, self._get_nid())
def _redraw(self, *args): """ Redraws the tray icon. """ self.remove win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, self._get_nid())
def OnDestroy( self, hwnd, msg, wparam, lparam, ): nid = (self.hwnd, 0) win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)
def destroy(self, hwnd, msg, wparam, lparam): if self.on_quit: self.on_quit() nid = (self.hwnd, 0) win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid) win32gui.PostQuitMessage(0) # Terminate the app.
def _DoCreateIcons(self): # Try and find a custom icon hinst = win32api.GetModuleHandle(None) iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "pyc.ico" )) if not os.path.isfile(iconPathName): # Look in DLLs dir, a-la py 2.5 iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "DLLs", "pyc.ico" )) if not os.path.isfile(iconPathName): # Look in the source tree. iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "..\\PC\\pyc.ico" )) if os.path.isfile(iconPathName): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = win32gui.LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags) else: print "Can't find a Python icon file - using default" hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP nid = (self.hwnd, 0, flags, win32con.WM_USER+20, hicon, "Python Demo") try: win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid) except win32gui.error: # This is common when windows is starting, and this code is hit # before the taskbar has been created. print "Failed to add the taskbar icon - is explorer running?" # but keep running anyway - when explorer starts, we get the # TaskbarCreated message.
def new_icon(hdesk,desktop_name): """ Runs as a thread on each desktop to create a new tray icon and handle its messages """ global id id=id+1 hdesk.SetThreadDesktop() ## apparently the threads can't use same hinst, so each needs its own window class windowclassname='PythonDesktopManager'+desktop_name wc = win32gui.WNDCLASS() wc.hInstance = win32api.GetModuleHandle(None) wc.lpszClassName = windowclassname wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW | win32con.CS_GLOBALCLASS wc.hCursor = win32gui.LoadCursor( 0, win32con.IDC_ARROW ) wc.hbrBackground = win32con.COLOR_WINDOW wc.lpfnWndProc = icon_wndproc windowclass = win32gui.RegisterClass(wc) style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU hwnd = win32gui.CreateWindow(windowclass, 'dm_'+desktop_name, win32con.WS_SYSMENU, 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, 0, 0, wc.hInstance, None) win32gui.UpdateWindow(hwnd) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP notify_info = (hwnd, id, flags, win32con.WM_USER+20, hicon, 'Desktop Manager (%s)' %desktop_name) window_info[hwnd]=notify_info ## wait for explorer to initialize system tray for new desktop tray_found=0 while not tray_found: try: tray_found=win32gui.FindWindow("Shell_TrayWnd",None) except win32gui.error: traceback.print_exc time.sleep(.5) win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, notify_info) win32gui.PumpMessages()
def _DoCreateIcons(self): # Try and find a custom icon hinst = win32api.GetModuleHandle(None) iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "pyc.ico" )) if not os.path.isfile(iconPathName): # Look in DLLs dir, a-la py 2.5 iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "DLLs", "pyc.ico" )) if not os.path.isfile(iconPathName): # Look in the source tree. iconPathName = os.path.abspath(os.path.join( os.path.split(sys.executable)[0], "..\\PC\\pyc.ico" )) if os.path.isfile(iconPathName): icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE hicon = win32gui.LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags) else: print("Can't find a Python icon file - using default") hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP nid = (self.hwnd, 0, flags, win32con.WM_USER+20, hicon, "Python Demo") try: win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid) except win32gui.error: # This is common when windows is starting, and this code is hit # before the taskbar has been created. print("Failed to add the taskbar icon - is explorer running?") # but keep running anyway - when explorer starts, we get the # TaskbarCreated message.
def OnDestroy(self, hwnd, msg, wparam, lparam): # We don't have to Shell_NotifyIcon to delete it, since # we destroyed pass
def balloon_tip(self, title, msg): style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU hwnd = CreateWindow(self.classAtom, "Taskbar", style, 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, 0, 0, self.hinst, None) UpdateWindow(hwnd) hicon = LoadIcon(0, win32con.IDI_APPLICATION) nid = (hwnd, 0, NIF_ICON | NIF_MESSAGE | NIF_TIP, win32con.WM_USER + 20, hicon, 'Tooltip') Shell_NotifyIcon(NIM_ADD, nid) nid = (hwnd, 0, NIF_INFO, win32con.WM_USER + 20, hicon, 'Balloon Tooltip', msg, 200, title, NIIF_INFO) Shell_NotifyIcon(NIM_MODIFY, nid) DestroyWindow(hwnd)
def stop(self): if getattr(self, 'hook', None) is not None: del self.hook if self.HWND is not None: win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, (self.HWND, 0)) # win32gui.PostMessage(self.HWND, win32con.WM_CLOSE, 0, 0) win32gui.DestroyWindow(self.HWND) self.HWND = None self.clear_instance_check_event() super(KeyCounter, self).stop() raise SystemExit(0)
def __createIcon(self): # try and use custom icon if self.iconPath and os.path.isfile(self.iconPath): hicon = self.__loadFromFile(self.iconPath) else: try: fp = 'tmp.ico' icFH = file(fp, 'wb') if self.serverState == self.EnumServerState.STOPPED: icFH.write(base64.b64decode(self.__getIconStopped())) elif self.serverState == self.EnumServerState.RUNNING: icFH.write(base64.b64decode(self.__getIconRunning())) icFH.close() hicon = self.__loadFromFile(fp) os.unlink(fp) except: print("Can't load web2py icons - using default") hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE\ | win32gui.NIF_TIP nid = ( self.hwnd, 0, flags, win32con.WM_USER + 20, hicon, 'web2py Framework', ) try: win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, nid) except: try: win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid) except win32api.error: # This is common when windows is starting, and this code is hit # before the taskbar has been created. print('Failed to add the taskbar icon - is explorer running?') # but keep running anyway - when explorer starts, we get the
def __createIcon(self): # try and use custom icon if self.iconPath and os.path.isfile(self.iconPath): hicon = self.__loadFromFile(self.iconPath) else: try: fp = 'tmp.ico' icFH = file(fp, 'wb') if self.serverState == self.EnumServerState.STOPPED: icFH.write(base64.b64decode(self.__getIconStopped())) elif self.serverState == self.EnumServerState.RUNNING: icFH.write(base64.b64decode(self.__getIconRunning())) icFH.close() hicon = self.__loadFromFile(fp) os.unlink(fp) except: print "Can't load web2py icons - using default" hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE\ | win32gui.NIF_TIP nid = ( self.hwnd, 0, flags, win32con.WM_USER + 20, hicon, 'web2py Framework', ) try: win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, nid) except: try: win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid) except win32api.error: # This is common when windows is starting, and this code is hit # before the taskbar has been created. print 'Failed to add the taskbar icon - is explorer running?' # but keep running anyway - when explorer starts, we get the
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)