def OnTaskbarNotify(self, hwnd, msg, wparam, lparam):
     if lparam == win32con.WM_RBUTTONUP:
         menu = win32gui.CreatePopupMenu()
         win32gui.AppendMenu(menu, win32con.MF_STRING,
                             Win32MaayTaskbar.SEARCH_MENU_ID, "Search")
         win32gui.AppendMenu(menu, win32con.MF_STRING,
                             Win32MaayTaskbar.INDEXATION_MENU_ID,
                             "Manage Folders")
         win32gui.AppendMenu(menu, win32con.MF_SEPARATOR, 1002, "")
         win32gui.AppendMenu(menu, win32con.MF_STRING,
                             Win32MaayTaskbar.HOMEPAGE_MENU_ID,
                             "Maay Homepage")
         win32gui.SetMenuDefaultItem(menu, Win32MaayTaskbar.SEARCH_MENU_ID,
                                     0)
         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)
     elif lparam == win32con.WM_LBUTTONDBLCLK:
         webbrowser.open("http://127.0.0.1:%s/" %
                         self.node.NODE_CONFIG.webserver_port,
                         autoraise=1)
     return 1
Beispiel #2
0
 def notify_callback(hwnd):
     menu = win32gui.CreatePopupMenu()
     win32gui.AppendMenu( menu, win32con.MF_STRING, 1024, "Generate balloon")
     win32gui.AppendMenu( menu, win32con.MF_STRING, 1025, "Exit")
     pos = win32api.GetCursorPos()
     win32gui.SetForegroundWindow(hwnd)
     win32gui.TrackPopupMenu(menu, win32con.TPM_LEFTALIGN, pos[0], pos[1], 0, hwnd, None)
     win32api.PostMessage(hwnd, win32con.WM_NULL, 0, 0)
Beispiel #3
0
    def RightMB(self):
        menu = win32gui.CreatePopupMenu()
        win32gui.AppendMenu(menu, win32con.MF_STRING, 1023, "Settings")
        win32gui.AppendMenu(menu, win32con.MF_STRING, 1024, "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)
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)
Beispiel #5
0
    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
Beispiel #6
0
 def onRightClick(self):
     menu = win32gui.CreatePopupMenu()
     win32gui.AppendMenu(menu, win32con.MF_STRING,
                         WM_TASKBARNOTIFY_MENUITEM_SHOW, u'显示')
     win32gui.AppendMenu(menu, win32con.MF_STRING,
                         WM_TASKBARNOTIFY_MENUITEM_HIDE, u'隐藏')
     win32gui.AppendMenu(menu, win32con.MF_STRING,
                         WM_TASKBARNOTIFY_MENUITEM_EXIT, u'退出')
     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)
Beispiel #7
0
 def on_taskbar_notify(self, hwnd, msg, wparam, lparam):
     if lparam == win32con.WM_RBUTTONUP:
         menu = win32gui.CreatePopupMenu()
         win32gui.AppendMenu(menu,
                             self.menu_mindustry_flags[self.game_state],
                             1024, "Show Mindustry Game")
         win32gui.AppendMenu(menu, win32con.MF_STRING, 1025,
                             "Exit Notifier")
         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
Beispiel #8
0
 def _on_taskbar_notify(self, hwnd, msg, wparam, lparam):
     if lparam == win32con.WM_LBUTTONUP or lparam == win32con.WM_RBUTTONUP:
         log.error("You right clicked me.")
         menu = win32gui.CreatePopupMenu()
         win32gui.AppendMenu(menu, win32con.MF_STRING, 1023,
                             "Display Dialog")
         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
Beispiel #9
0
 def OnTaskbarNotify(self, hwnd, msg, wparam, lparam):
     if lparam == win32con.WM_RBUTTONUP:
         menu = win32gui.CreatePopupMenu()
         win32gui.AppendMenu(menu, win32con.MF_STRING, SEARCH_MENU_ID,
                             "Search")
         win32gui.AppendMenu(menu, win32con.MF_STRING, PREFERENCES_MENU_ID,
                             "Preferences")
         win32gui.AppendMenu(menu, win32con.MF_STRING, HELP_MENU_ID, "Help")
         win32gui.AppendMenu(menu, win32con.MF_SEPARATOR, 1002, "")
         if maay.globalvars.indexer.isPaused():
             win32gui.AppendMenu(menu, win32con.MF_STRING,
                                 PAUSE_INDEXING_MENU_ID,
                                 "Pause indexing for 15 minutes more")
             win32gui.AppendMenu(menu, win32con.MF_STRING,
                                 RESUME_INDEXING_MENU_ID, "Resume indexing")
         else:
             win32gui.AppendMenu(menu, win32con.MF_STRING,
                                 PAUSE_INDEXING_MENU_ID, "Pause indexing")
         win32gui.AppendMenu(menu, win32con.MF_STRING, EXIT_MENU_ID, "Exit")
         win32gui.SetMenuDefaultItem(menu, SEARCH_MENU_ID, 0)
         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)
     elif lparam == win32con.WM_LBUTTONDBLCLK:
         webbrowser.open("http://127.0.0.1:%d/maay/resultspool" %
                         maay.constants.MAAY_PORT,
                         autoraise=1)
     return 1
Beispiel #10
0
    def __init__(self):
        msg_TaskbarRestart = win32gui.RegisterWindowMessage("TaskbarCreated")
        #定义一个新的窗口消息
        message_map = {                         #建立函数命令字典,用于窗口回调函数的四个参数
                msg_TaskbarRestart: self.OnRestart,
                win32con.WM_DESTROY: self.OnDestroy,
                win32con.WM_COMMAND: self.OnCommand,
                win32con.WM_USER+20 : self.OnTaskbarNotify,
        }
        self.menu = win32gui.CreatePopupMenu()  #产生一个菜单句柄menu
        win32gui.AppendMenu(self.menu, win32con.MF_STRING, 1023,
                            "显示/隐藏窗口")  #给菜单添加子项,1027可以一直下去
        win32gui.AppendMenu(self.menu, win32con.MF_STRING, 1024, "设置")
        win32gui.AppendMenu(self.menu, win32con.MF_STRING, 1025, "退出程序")
        #win32gui.EnableMenuItem(menu,1023,win32con.MF_GRAYED)#是用菜单句柄,对菜单进行操作

        # Register the Window class.
        self.wc = win32gui.WNDCLASS()  #局部变量wc改成窗口类的实例
        hinst = self.wc.hInstance = win32api.GetModuleHandle(None)  #获得程序模块句柄
        self.wc.lpszClassName = ("PythonTaskbarDemo")  #窗口类的类名
        self.wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        #窗口类的style特征,水平重画和竖直重画
        self.wc.hCursor = win32api.LoadCursor(0, win32con.IDC_ARROW)
        self.wc.hbrBackground = win32con.COLOR_WINDOW
        self.wc.lpfnWndProc = message_map  # could also specify a wndproc,给窗口回调函数赋值
        '''这里传进去的其实是函数指针,它里面保存的是我们定义的windowproc的入口地址'''
        # Don't blow up if class already registered to make testing easier
        try:
            classAtom = win32gui.RegisterClass(self.wc)  #用wc将classatom注册为一个窗口类
        except win32gui.error and err_info:
            if err_info.winerror != winerror.ERROR_CLASS_ALREADY_EXISTS:
                raise

        # Create the Window.
        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
        self.hwnd = win32gui.CreateWindow(
            self.wc.lpszClassName,
            "Taskbar Demo",
            style,  #创建一个窗口 
            0,
            0,
            win32con.CW_USEDEFAULT,
            win32con.CW_USEDEFAULT,
            0,
            0,
            hinst,
            None)
        win32gui.UpdateWindow(self.hwnd)  #更新窗口
        self._DoCreateIcons()
        win32gui.PumpMessages()
 def on_taskbar_notify(self, hwnd, msg, wparam, lparam):
     if lparam == win32con.WM_LBUTTONDBLCLK:
         win32gui.DestroyWindow(self.hwnd)
     elif lparam == win32con.WM_RBUTTONUP:
         menu = win32gui.CreatePopupMenu()
         win32gui.AppendMenu(menu, win32con.MF_STRING, 1024, "Show timer")
         win32gui.AppendMenu(menu, win32con.MF_STRING, 1025, "Settings")
         win32gui.AppendMenu(menu, win32con.MF_STRING, 1026, "Exit")
         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
Beispiel #12
0
 def on_rightclick(self, systray):
     #self.change_tooltip("You right clicked me.")
     menu = win32gui.CreatePopupMenu()
     win32gui.AppendMenu( menu, win32con.MF_STRING, 1023, "About")
     if len(self.custom_menu_items) > 0:
         for menu_item in self.custom_menu_items.itervalues():
             if callable(menu_item['func']):
                 try:
                     is_checked = menu_item['func'](self, get_state = True)
                 except Exception, e:
                     print e
             else:
                 is_checked = False
             flags = win32con.MF_STRING | (win32con.MF_CHECKED if is_checked else 0)
             win32gui.AppendMenu( menu, flags, menu_item['id'], menu_item['text'])
 def OnTaskbarNotify(self, hwnd, msg, wparam, lparam):
     if lparam == win32con.WM_RBUTTONUP:
         menu = win32gui.CreatePopupMenu()
         win32gui.AppendMenu(menu, win32con.MF_STRING, 1024, "Show Log")
         win32gui.AppendMenu(menu, win32con.MF_STRING, 1026, "About Us")
         win32gui.AppendMenu(menu, win32con.MF_STRING, 1027, "Option")
         win32gui.AppendMenu(menu, win32con.MF_STRING, 1028,
                             "Upload Offline")
         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
Beispiel #14
0
    def append(self, name, content):
        option = win32con.MF_STRING
        option |= self._get_option()

        win32gui.AppendMenu(self._curtarget, \
                            option,\
                            self._id, \
                            name)
        self._add_content(content)
Beispiel #15
0
 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
Beispiel #16
0
 def onRightClick(self):
     """Override in subclasses"""
     
     if(self.owner.watchState == True):
         statestr = u"停止"
     else:
         statestr = u"开始"
     
     menu = win32gui.CreatePopupMenu()   
     win32gui.AppendMenu( menu, win32con.MF_STRING, 1023, u"显示界面")
     win32gui.AppendMenu( menu, win32con.MF_STRING, 1024, statestr + u"监控")
     win32gui.AppendMenu( menu, win32con.MF_STRING, 1025, u"退出程序" )   
     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)   
     pass
Beispiel #17
0
 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
Beispiel #18
0
 def createMenu(self, items):
     self.menu = win32gui.CreatePopupMenu()
     self.menuitems = []
     for index, (key, value) in enumerate(items):
         # for index, key in enumerate(items):
         # for index, item in items :
         # key = items[index][0], value = items[index][1]
         self.menuitems.append(key)
         win32gui.AppendMenu(self.menu, win32con.MF_STRING, (1023 + index),
                             value)
Beispiel #19
0
	def OnTaskbarNotify(self, hwnd, msg, wparam, lparam):
		if lparam==win32con.WM_LBUTTONUP:
			print u"Tık"
			
		elif lparam==win32con.WM_LBUTTONDBLCLK:
                        global kaynak
			print u"Çift Tık"
			self.balonGoster(u"Güncelleniyor...",u"Döviz Kurları (" + kaynak + ")")
                        self.kurlariAl()
                        
			
			#win32gui.DestroyWindow(self.hwnd)

			
		elif lparam==win32con.WM_RBUTTONUP:
			print u"Sağ Tık"
			menu = win32gui.CreatePopupMenu()
			win32gui.AppendMenu( menu, win32con.MF_STRING|win32con.MF_DISABLED, 0, u"Kaynak Seçimi")
			win32gui.AppendMenu( menu, win32con.MF_STRING, 1021, u"T.C.M.B.")
			win32gui.AppendMenu( menu, win32con.MF_STRING, 1022, u"Enpara")
			win32gui.AppendMenu( menu, win32con.MF_STRING, 1023, u"Investing")
			win32gui.AppendMenu( menu, win32con.MF_SEPARATOR, 0, '')
			win32gui.AppendMenu( menu, win32con.MF_STRING, 1099, u"Çıkış" )
			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
Beispiel #20
0
	def OnTaskbarNotify(self, hwnd, msg, wparam, lparam):
		if lparam==win32con.WM_LBUTTONUP:
			print u"Tık"
		elif lparam==win32con.WM_LBUTTONDBLCLK:
			print u"Çift Tık"
			nid = (self.hwnd, 0)
			hicon = win32gui.LoadImage(win32api.GetModuleHandle(None), os.path.realpath("icon.ico"), win32con.IMAGE_ICON, 0, 0, win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE)
			win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, \
                         (self.hwnd, 0, win32gui.NIF_INFO, win32con.WM_USER+20,\
                          hicon, "Balloon  tooltip",u"Bu ikona sağ tıklayın.",200,u"Kullanım"))
			
		elif lparam==win32con.WM_RBUTTONUP:
			print u"Sağ Tık"
			menu = win32gui.CreatePopupMenu()
			win32gui.AppendMenu( menu, win32con.MF_STRING, 1023, u"Hiçbir zaman")
			win32gui.AppendMenu( menu, win32con.MF_STRING, 1024, u"20 dakika")
			win32gui.AppendMenu (menu, win32con.MF_SEPARATOR, 0, '')
			win32gui.AppendMenu( menu, win32con.MF_STRING, 1025, u"Çıkış" )
			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
Beispiel #21
0
    def on_rightclick(self, systray):
        #self.change_tooltip("You right clicked me.")
        menu = win32gui.CreatePopupMenu()
        win32gui.AppendMenu( menu, win32con.MF_STRING, 1023, "About")
        if len(self.custom_menu_items) > 0:
            for menu_item in self.custom_menu_items.values():
                if callable(menu_item['func']):
                    try:
                        is_checked = menu_item['func'](self, get_state = True)
                    except Exception as e:
                        print(e)
                else:
                    is_checked = False
                flags = win32con.MF_STRING | (win32con.MF_CHECKED if is_checked else 0)
                win32gui.AppendMenu( menu, flags, menu_item['id'], menu_item['text'])

        win32gui.AppendMenu( menu, win32con.MF_SEPARATOR, -1, "")
        win32gui.AppendMenu( menu, win32con.MF_STRING, 1024, "E&xit")
        win32gui.SetMenuDefaultItem(menu, 0, True)
        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)
Beispiel #22
0
    def on_tray_notify(self, hwnd, msg, wp, lp):
        if lp == win32con.WM_LBUTTONUP:
            # print "left click"
            # win32gui.SetForegroundWindow(self.hwnd)
            pass
        elif lp == win32con.WM_RBUTTONUP:
            # print "right click"
            menu = win32gui.CreatePopupMenu()
            for cid in sorted(self.commands.keys(), reverse=True):
                name, _ = self.commands[cid]
                win32gui.AppendMenu(menu, win32con.MF_STRING, cid, name)

            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 True
Beispiel #23
0
    def submenu_end(self):
        # 親ユニットのハンドルを取ってくる
        target = None
        try:
            target = self._targetstack.pop()
        except IndexError:
            return

        # 現ユニット → 親ユニット に連結
        option = win32con.MF_POPUP
        option |= self._get_option()
        win32gui.AppendMenu(target.get_target(), \
                            option,\
                            self._curtarget, \
                            target.get_name())

        # 親ユニットをターゲットにする
        self._curtarget = target.get_target()
Beispiel #24
0
    def create_menu(menu, item, text):
        # Normal menu
        if isinstance(item, int):
            flag = win32con.MF_STRING

        # Sub menu
        elif isinstance(item, list):
            flag = win32con.MF_POPUP
            sub_menu = win32gui.CreatePopupMenu()
            for s, v in item:
                sub_menu = TrayIcon.create_menu(sub_menu, v, s)
            item = sub_menu

        # Separotor
        elif item is None:
            flag = win32con.MF_SEPARATOR
            item = 0
            text = ''

        else:
            raise TrayIconPopupMenuError()

        win32gui.AppendMenu(menu, flag, item, text)
        return menu
Beispiel #25
0
def InitMenu(hwnd):
    try:
        #初始化菜单
        f = open(GetParentPath("\\menu\\menus_map.json"), "r")
        s = f.read()
        j = json.loads(s)

        if (getAppCfg("is_show_menu") == "0"):
            return

        global menuData
        menuData = j["menus"]

        menus = win32gui.CreateMenu()
        for d in menuData:
            #print d["id"]
            #print d["title"]
            win32gui.AppendMenu(menus,
                                win32con.MF_STRING | win32con.MF_ENABLED,
                                int(d["id"]), d["title"])

        win32gui.SetMenu(hwnd, menus)
    except:
        win32gui.MessageBox(None, u"初始化菜单失败", u"错误", 0)
Beispiel #26
0
 def OnTaskbarNotify(self, hwnd, msg, wparam, lparam):
     if lparam==win32con.WM_LBUTTONUP:
         pass
     elif lparam==win32con.WM_LBUTTONDBLCLK:
         win32gui.DestroyWindow(self.hwnd)
     elif lparam==win32con.WM_RBUTTONUP:
         menu = win32gui.CreatePopupMenu()
         win32gui.AppendMenu( menu, win32con.MF_GRAYED | win32con.MF_STRING, TrayThermostat.Connected, "Connected" if self.__connected else "Disconnected")
         win32gui.AppendMenu( menu, self.__flag_set(TrayThermostat.Automatic), TrayThermostat.Automatic, "Automatic")
         win32gui.AppendMenu( menu, self.__flag_set(TrayThermostat.V12), TrayThermostat.V12, "12V")
         win32gui.AppendMenu( menu, self.__flag_set(TrayThermostat.V5), TrayThermostat.V5, "5V" )
         win32gui.AppendMenu( menu, self.__flag_set(TrayThermostat.V0), TrayThermostat.V0, "Off" )
         win32gui.AppendMenu( menu, win32con.MF_STRING, TrayThermostat.Exit, "Exit" )
         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
Beispiel #27
0
 def append_separator(self):
     win32gui.AppendMenu(self._curtarget, \
                         win32con.MF_SEPARATOR | self._get_option(),\
                         0, \
                         "")
Beispiel #28
0
    def OnTaskbarNotify(self, hwnd, msg, wparam, lparam):
        if lparam == win32con.WM_LBUTTONUP:
            pass
        elif lparam == win32con.WM_LBUTTONDBLCLK:
            self.OnCommand(hwnd, win32con.WM_COMMAND, self.MENU_OPEN_CLAM, 0)
        elif lparam == win32con.WM_RBUTTONUP:
            if self._nomenu:
                hwnd = win32gui.FindWindow('#32770', 'Blindata Update')
                if hwnd:
                    try:
                        win32gui.ShowWindow(hwnd, win32con.SW_SHOW)
                        win32gui.SetForegroundWindow(hwnd)
                        win32gui.SetFocus(hwnd)
                    except Exception, e:
                        print 'ShowWindow Error: %s' % str(e)
                return 1

            # create scheduler menu
            scheduler_popup = win32gui.CreatePopupMenu()
            win32gui.AppendMenu(scheduler_popup, win32con.MF_STRING,
                                self.MENU_CONFIGURESCHEDULER,
                                "&Configure Scheduler")

            if not self._processes:
                flags = win32con.MF_GRAYED
            else:
                flags = 0

            # create scheduled tasks menu
            tasks_popup = win32gui.CreatePopupMenu()
            i = 0
            for scan in self._scheduledScans:
                win32gui.AppendMenu(tasks_popup, win32con.MF_STRING,
                                    self.MENU_RUNSCHEDULE + i,
                                    scan.Description)
                i += 1
            if not i:
                flags2 = win32con.MF_GRAYED
            else:
                flags2 = 0
            win32gui.InsertMenu(
                scheduler_popup, self.MENU_CONFIGURESCHEDULER,
                win32con.MF_BYCOMMAND | win32con.MF_POPUP | flags2,
                tasks_popup, "&Run Scheduled Scan")

            win32gui.InsertMenu(
                scheduler_popup, flags,
                win32con.MF_BYCOMMAND | win32con.MF_STRING | flags,
                self.MENU_TERMINATESCHEDULE, "&Stop All Running Tasks Now")

            # create reports menu
            reports_popup = win32gui.CreatePopupMenu()
            if not len(self._config.Get('ClamAV', 'LogFile')):
                flags = win32con.MF_GRAYED
            else:
                flags = 0
            win32gui.InsertMenu(
                reports_popup, 0,
                win32con.MF_BYCOMMAND | win32con.MF_STRING | flags,
                self.MENU_SHOWSCANLOG, "&Virus Scan Report")
            if not len(self._config.Get('Updates', 'DBUpdateLogFile')):
                flags = win32con.MF_GRAYED
            else:
                flags = 0
            win32gui.InsertMenu(
                reports_popup, self.MENU_SHOWSCANLOG,
                win32con.MF_BYCOMMAND | win32con.MF_STRING | flags,
                self.MENU_SHOWUPDATELOG, "&Virus Database Update Report")

            # create main menu
            menu = win32gui.CreatePopupMenu()
            win32gui.AppendMenu(menu, win32con.MF_STRING, self.MENU_OPEN_CLAM,
                                "&Open Blindata")
            win32gui.AppendMenu(menu, win32con.MF_STRING, self.MENU_UPDATE_DB,
                                "&Download Virus Database Update")
            win32gui.AppendMenu(menu, win32con.MF_STRING, self.MENU_CONFIGURE,
                                "&Configure Blindata")
            win32gui.AppendMenu(menu, win32con.MF_POPUP, scheduler_popup,
                                "&Scheduler")
            win32gui.AppendMenu(menu, win32con.MF_POPUP, reports_popup,
                                "Display &Reports")
            win32gui.AppendMenu(menu, win32con.MF_SEPARATOR, 0, "")
            win32gui.AppendMenu(menu, win32con.MF_STRING,
                                self.MENU_CHECK_UPDATE,
                                "Check &Latest Version")
            win32gui.AppendMenu(menu, win32con.MF_STRING,
                                self.MENU_CLAMWIN_WEB,
                                "&Visit Blindata Website")
            win32gui.AppendMenu(menu, win32con.MF_SEPARATOR, 0, "")
            win32gui.AppendMenu(menu, win32con.MF_STRING, self.MENU_EXIT,
                                "&Exit")

            pos = win32gui.GetCursorPos()
            # See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/menus_0hdi.asp
            try:
                win32gui.SetForegroundWindow(self.hwnd)
            except:
                pass
            try:
                win32gui.SetMenuDefaultItem(menu, 0, 1)
            except NameError:
                pass

            win32gui.TrackPopupMenu(menu, win32con.TPM_LEFTALIGN, pos[0],
                                    pos[1], 0, self.hwnd, None)
            win32gui.SendMessage(self.hwnd, win32con.WM_NULL, 0, 0)
        win32gui.AppendMenu(menu, win32con.MF_STRING, 1023, "About")
        if len(self.custom_menu_items) > 0:
            for menu_item in self.custom_menu_items.itervalues():
                if callable(menu_item['func']):
                    try:
                        is_checked = menu_item['func'](self, get_state=True)
                    except Exception, e:
                        print e
                else:
                    is_checked = False
                flags = win32con.MF_STRING | (win32con.MF_CHECKED
                                              if is_checked else 0)
                win32gui.AppendMenu(menu, flags, menu_item['id'],
                                    menu_item['text'])

        win32gui.AppendMenu(menu, win32con.MF_SEPARATOR, -1, "")
        win32gui.AppendMenu(menu, win32con.MF_STRING, 1024, "E&xit")
        win32gui.SetMenuDefaultItem(menu, 0, True)
        pos = get_cursor_pos()
        # From MSDN:
        # To display a context menu for a notification icon, the current window must be the foreground window
        # before the application calls TrackPopupMenu or TrackPopupMenuEx. Otherwise, the menu will not disappear
        # when the user clicks outside of the menu or the window that created the menu (if it is visible).
        # However, when the current window is the foreground window, the second time this menu is displayed,
        # it displays and then immediately disappears. To correct this, you must force a task switch
        # to the application that called TrackPopupMenu. This is done by posting a benign message to the window
        # or thread.
        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)