Exemple #1
0
    def wnd_proc(self, hwnd, message, wParam, lParam):  # wmca MFC 콜백 처리
        # if wParam == CA_DISCONNECTED:
        #     print("Goodbye")/
        #     win32gui.PostQuitMessage(0)
        #     win32gui.DestroyWindow(self.hwnd)
        # el
        if wParam == CA_CONNECTED:  # 로그인 성공
            print("로그인 성공")
            # self.response.append({"login": "******"})
            win32gui.PostQuitMessage(
                0)  # mfc 메시지 루프 종료 (메시지를 받고 종료 처리 뒷 프로세스 실행을 위함)
        elif wParam == CA_SOCKETERROR:  # 통신 오류 발생
            print("통신 오류 발생")
        elif wParam == CA_RECEIVEDATA:  # 서비스 응답 수신(TR)
            print("서비스 응답 수신(TR)")
            sz_block_name, sz_block_data = self.on_wm_receivedata(lParam)
            self.response[sz_block_name] = sz_block_data
        elif wParam == CA_RECEIVESISE:  # 실시간 데이터 수신(BC)
            print("실시간 데이터 수신(BC)")
            self.response['realtime'] = self.on_wm_receivesise(lParam)
        elif wParam == CA_RECEIVEMESSAGE:  # 상태 메시지 수신 (입력값이 잘못되었을 경우 문자열형태로 설명이 수신됨)
            msg_cd, user_msg = self.on_wm_receivemessage(lParam)
            self.response[msg_cd] = user_msg
            win32gui.PostQuitMessage(0)
        elif wParam == CA_RECEIVECOMPLETE:  # 서비스 처리 완료
            print("서비스 처리 완료")
            win32gui.PostQuitMessage(
                0)  # mfc 메시지 루프 종료 (메시지를 받고 종료 처리 뒷 프로세스 실행을 위함)
        elif wParam == CA_RECEIVEERROR:  # 서비스 처리중 오류 발생 (입력값 오류등)
            print("서비스 처리중 오류 발생 (입력값 오류등)")

        return win32gui.DefWindowProc(hwnd, message, wParam, lParam)
 def BGWndProc(self,hwnd,msg,wParam,lParam):
     if msg == win32con.WM_PAINT:
         #print('BG painting...%d...'%wParam)
         hdc,ps = win32gui.BeginPaint(hwnd)
         rect = win32gui.GetClientRect(hwnd)
 #        win32gui.Rectangle(hdc,min(xc),min(yc),max(xc),max(yc))
 #        win32gui.Ellipse(hdc,300+wParam,550,400+wParam,650)
         DFW.OnChange(mode='RandomMove')
         
         #self.hdcbuffer = win32gui.CreateCompatibleDC(hdc)
         #hBitMap = win32gui.CreateCompatibleBitmap(hdc, 1920, 1080)
         ###win32gui.ReleaseDC(hwnd, hdc)
         #win32gui.SelectObject(self.hdcbuffer, hBitMap)
         #win32gui.PatBlt(self.hdcbuffer, 0, 0, 1920, 1080, win32con.WHITENESS)
         
         #win32gui.SetBkMode(hdc,win32con.TRANSPARENT)
         for index in range(len(DFW.Words)):
             rect = (int(DFW.Coors[index][0]),int(DFW.Coors[index][1]),1920,1080)
             win32gui.DrawText(hdc,'%s,%d'%(DFW.Words[index],wParam),
                 len('%s'%(DFW.Words[index])),rect,win32con.DT_SINGLELINE|win32con.DT_TOP|win32con.DT_LEFT)
         #win32gui.BitBlt(hdc, 0, 0, 1920, 1080, self.hdcbuffer, 0, 0, win32con.SRCCOPY )
         win32gui.EndPaint(hwnd,ps)
     elif msg == win32con.WM_DESTROY:  
         win32gui.PostQuitMessage(0)
     elif msg == win32con.WM_TIMER:
         #print("BG TIMER TRIGGERED",wParam)
         win32gui.InvalidateRect(hwnd,None,True)
         win32gui.UpdateWindow(hwnd)
     else:
         pass
         #print('BG:其他信息:',msg)
     return win32gui.DefWindowProc(hwnd,msg,wParam,lParam)  
Exemple #3
0
    def onDeviceChange(self, hwnd, msg, wparam, lparam):
        #
        # WM_DEVICECHANGE:
        #  wParam - type of change: arrival, removal etc.
        #  lParam - what's changed?
        #    if it's a volume then...
        #  lParam - what's changed more exactly
        #
        global DRIVE
        dev_broadcast_hdr = DEV_BROADCAST_HDR.from_address(lparam)

        if wparam == DBT_DEVICEARRIVAL:
            #print("Something's arrived")

            if dev_broadcast_hdr.dbch_devicetype == DBT_DEVTYP_VOLUME:
                #print("It's a volume!")

                dev_broadcast_volume = DEV_BROADCAST_VOLUME.from_address(lparam)
                #if dev_broadcast_volume.dbcv_flags & DBTF_MEDIA:
                if DBTF_MEDIA:
                    #print("with some media")
                    drive_letter = drive_from_mask(dev_broadcast_volume.dbcv_unitmask)
                    DRIVE = os.path.normpath(chr(ord("A") + drive_letter) + ':/')                     
                    print("Drive", DRIVE, "inserted")
                    Notification.yesDevice.set()

        if wparam == DBT_DEVICEREMOVECOMPLETE:
                DRIVE = None
                print("Safe to remove drive")
                if (Notification.stopThread.is_set()):
                    win32gui.PostQuitMessage(0)
                    return
                #print ("Drive ", chr(ord("A") + drive_letter, " being ejected!"));

        return 1
Exemple #4
0
def wndProc(hWnd, message, wParam, lParam):
    if message == win32con.WM_PAINT:
        hDC, paintStruct = win32gui.BeginPaint(hWnd)

        rect = win32gui.GetClientRect(hWnd)
        win32gui.DrawText(
            hDC,
            'Hello send by Python via Win32!',
            -1,
            rect,
            win32con.DT_SINGLELINE | win32con.DT_CENTER | win32con.DT_VCENTER)

        win32gui.EndPaint(hWnd, paintStruct)
        return 0

    elif message == win32con.WM_DESTROY:
        print('Being destroyed')
        win32gui.PostQuitMessage(0)
        return 0
    elif message == FullGenMessage:
        print("Founded new message from FullGen")
        print(wParam)
        print(lParam)
        return 0
    else:
        return win32gui.DefWindowProc(hWnd, message, wParam, lParam)
Exemple #5
0
    def _win_message(self, hWnd, message, wParam, lParam):
        if message == win32_contants.WM_PAINT:
            device_context_handle, paintStruct = win32gui.BeginPaint(hWnd)
            dpiScale = ctypes.windll.gdi32.GetDeviceCaps(
                device_context_handle, win32_contants.LOGPIXELSX) / 60.0
            fontSize = 14

            # http://msdn.microsoft.com/en-us/library/windows/desktop/dd145037(v=vs.85).aspx
            lf = win32gui.LOGFONT()
            lf.lfFaceName = "Times New Roman"
            # lf.lfHeight = int(round(dpiScale * fontSize))
            lf.lfHeight = 20
            lf.lfWeight = 0
            # Use nonantialiased to remove the white edges around the text.
            lf.lfQuality = win32con.NONANTIALIASED_QUALITY
            hf = win32gui.CreateFontIndirect(lf)
            win32gui.SetTextColor(device_context_handle,
                                  win32_color(self.font_color))
            win32gui.SelectObject(device_context_handle, hf)
            self._draw(device_context_handle)
            win32gui.EndPaint(hWnd, paintStruct)
            return 0
        elif message == win32_contants.WM_DESTROY:
            win32gui.PostQuitMessage(0)
            return 0
        else:
            return ctypes.windll.user32.DefWindowProcW(hWnd, message, wParam,
                                                       lParam)
Exemple #6
0
 def close(self):
     if not self._hwnd:
         return
     win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, (self._hwnd, 0))
     win32gui.DestroyWindow(self._hwnd)
     win32gui.PostQuitMessage(0)
     self._hwnd = None
Exemple #7
0
 def OnDestroy(self, hwnd, msg, wparam, lparam):
     print("tearing down ExplorerBrowser...")
     self.eb.Unadvise(self.event_cookie)
     self.eb.Destroy()
     self.eb = None
     print("shutting down app...")
     win32gui.PostQuitMessage(0)
def WndProc(hwnd, msg, wParam, lParam):

    if msg == WM_PAINT:
        hdc, ps = win32gui.BeginPaint(hwnd)
        rect = win32gui.GetClientRect(hwnd)
        _str = u'请把【星任务】文件拖拽到这!'
        win32gui.DrawText(hdc, _str,
                          len(_str) * 2, rect,
                          DT_SINGLELINE | DT_CENTER | DT_VCENTER)
        win32gui.EndPaint(hwnd, ps)
        win32gui.DragAcceptFiles(hwnd, 1)
    elif msg == WM_DESTROY:
        win32gui.PostQuitMessage(0)
    elif msg == WM_DROPFILES:
        hDropInfo = wParam
        filescount = win32api.DragQueryFile(hDropInfo)
        for i in range(filescount):
            filename = win32api.DragQueryFile(hDropInfo, i)
            if os.path.isdir(filename):
                _files = scan_files(filename)
            else:
                _files = [filename]

            if len(_files) > 0:
                for _f in _files:
                    fileHandler(_f)
        win32api.DragFinish(hDropInfo)

    return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
Exemple #9
0
 def wndProc(self, hwnd, msg, wParam, lParam):
     """
     消息处理
     :param hwnd:
     :param msg:
     :param wParam:
     :param lParam:
     :return:
     """
     if msg == win32con.WM_PAINT:
         hdc, ps = win32gui.BeginPaint(hwnd)
         rect = win32gui.GetClientRect(hwnd)
         win32gui.DrawText(
             hdc, 'GUI Python', len('GUI Python'), rect,
             win32con.DT_SINGLELINE | win32con.DT_CENTER
             | win32con.DT_VCENTER)
         win32gui.EndPaint(hwnd, ps)
     if msg == win32con.WM_CREATE:
         print('message: WM_CREATE')
     if msg == win32con.WM_SIZE:
         print('message: WM_SIZE')
     if msg == win32con.WM_PAINT:
         print('message: WM_PAINT')
     if msg == 1280:
         print("message: 1280")
     if msg == win32con.WM_CLOSE:
         print('message: WM_CLOSE')
     if msg == win32con.WM_DESTROY:
         print('message: WM_DESTROY')
         win32gui.PostQuitMessage(0)
     return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
Exemple #10
0
 def OnDestroy(self, hwnd, msg, wparam, lparam):
     nid = (self.hwnd, 0)  #tuple of our window's handle and zero(?)
     # implements our settings and deletes (win32gui.NIM_DELETE)
     # our window (nid)
     win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)
     win32gui.PostQuitMessage(0)  # Terminate the app.
     self.CLstate = -1
def WndProc(hwnd, msg, wParam, lParam):
    """
    视窗处理
    :param hwnd: 句柄
    :param msg: 消息
    :param wParam: 参数1
    :param lParam: 参数2
    :return: 下一个消息处理器
    """

    if msg == WM_PAINT:
        hdc, ps = win32gui.BeginPaint(hwnd)
        rect = win32gui.GetClientRect(hwnd)
        _str = u'请把【项目经理:日报】文件拖拽到这!'
        win32gui.DrawText(hdc, _str,
                          len(_str) * 2 - 4, rect,
                          DT_SINGLELINE | DT_CENTER | DT_VCENTER)
        win32gui.EndPaint(hwnd, ps)
        win32gui.DragAcceptFiles(hwnd, 1)
    elif msg == WM_DESTROY:
        win32gui.PostQuitMessage(0)
    elif msg == WM_DROPFILES:
        """文件拖拉消息
        """
        hDropInfo = wParam
        filescount = win32api.DragQueryFile(hDropInfo)
        for i in range(filescount):
            """获取文件名"""
            filename = win32api.DragQueryFile(hDropInfo, i)
            """处理文件"""
            fileHandler(hwnd, filename)
        win32api.DragFinish(hDropInfo)

    return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
Exemple #12
0
    def OnDestroy(self, hwnd, msg, wparam, lparam):

        nid = (self.hwnd, 0)

        win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)

        win32gui.PostQuitMessage(0)  # Terminate the app.
Exemple #13
0
def WndProc(hwnd, msg, wParam, lParam):

    if msg == WM_PAINT:
        hdc, ps = win32gui.BeginPaint(hwnd)
        rect = win32gui.GetClientRect(hwnd)
        _str = u'请把【工作日志】目录拖拽到这!'
        win32gui.DrawText(hdc, _str,
                          len(_str) * 2, rect,
                          DT_SINGLELINE | DT_CENTER | DT_VCENTER)
        win32gui.EndPaint(hwnd, ps)
        win32gui.DragAcceptFiles(hwnd, 1)
    elif msg == WM_DESTROY:
        win32gui.PostQuitMessage(0)
    elif msg == WM_DROPFILES:
        hDropInfo = wParam
        filescount = win32api.DragQueryFile(hDropInfo)
        for i in range(filescount):
            filename = win32api.DragQueryFile(hDropInfo, i)
            files = get_files_list(filename)
            for _f in files:
                if not isSpecialDir(_f):
                    fileHandler(_f)

        win32api.DragFinish(hDropInfo)

    return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
Exemple #14
0
def wndProc(hWnd, message, wParam, lParam):
    if message == win32con.WM_PAINT:
        hdc, paintStruct = win32gui.BeginPaint(hWnd)
        dpiScale = win32ui.GetDeviceCaps(hdc, win32con.LOGPIXELSX) / 60.0
        fontSize = 18
        lf = win32gui.LOGFONT()
        lf.lfFaceName = "Comic Sans"
        lf.lfHeight = int(round(dpiScale * fontSize))
        hf = win32gui.CreateFontIndirect(lf)
        win32gui.SelectObject(hdc, hf)
        rect = win32gui.GetClientRect(hWnd)
        win32gui.DrawText(
            hdc, windowText, -1, rect,
            win32con.DT_LEFT | win32con.DT_BOTTOM | win32con.DT_SINGLELINE)
        win32gui.EndPaint(hWnd, paintStruct)
        return 0

    elif message == win32con.WM_DESTROY:
        print('Being destroyed')
        win32gui.PostQuitMessage(0)
        return 0

    else:
        return win32gui.DefWindowProc(hWnd, message, wParam, lParam)
        calrect = win32gui.DrawText(hdc, text, -1, rect,
                                    textformat | win32con.DT_CALCRECT)

        rect.top = rect.bottom - calcrect.bottom
        win32gui.DrawText(hDC, text, -1, rect, textformat)
Exemple #15
0
    def OnDestroy(self, hwnd, msg, wparam, lparam):

        if DEBUG: print(sys._getframe(0).f_code.co_name)

        nid = (self.hwnd, 0)
        win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)
        win32gui.PostQuitMessage(0)  # Terminate the app.
Exemple #16
0
 def onTimer(self, hwnd, msg, wparam, lparam):
     #print (msg, wparam, lparam)
     if wparam == self.ID_TIMER or wparam == self.ID_TIMER_FIRST_ONCE:
         user32.KillTimer(hwnd, wparam)
     try:
         if not self.tray_ctrl_Q.empty():
             ctrl_msg = self.tray_ctrl_Q.get_nowait()
             if ctrl_msg[0] == 'QUIT':
                 if self.on_quit: self.on_quit(self)
                 win32gui.PostQuitMessage(0)  # Terminate the app.
                 return
         if wparam == self.ID_TIMER_EXTERN:
             if self.__extern_timer_callback:
                 self.__extern_timer_cnt = self.__extern_timer_callback(
                     lparam, self.__extern_timer_cnt)
         elif wparam == self.ID_TIMER_FIRST_ONCE:
             self._ports_change_count = 0
             self._ipaddr_change_count = 0
             self._on_ports_change('IPADDR')
             self._on_ports_change('ARRIVAL')
         elif wparam == self.ID_TIMER:
             if self._ports_change_count > 0:
                 self._ports_change_count = 0
                 self._on_ports_change(self._ports_change_type)
             if self._ipaddr_change_count > 0:
                 self._ipaddr_change_count = 0
                 self._on_ports_change('IPADDR')
     except Exception as e:
         print('get ctrl_msg exception %s' % e)
         pass
Exemple #17
0
    def wndProc_edge(self, hWnd, message, wParam, lParam):
        if message == win32con.WM_PAINT:
            hdc, paintStruct = win32gui.BeginPaint(hWnd)

            dpiScale = win32ui.GetDeviceCaps(hdc, win32con.LOGPIXELSX) / 60.0
            fontSize = self.fontSize + 12
            win32gui.SetTextColor(hdc, self.color_edge)
            # https://msdn.microsoft.com/en-us/library/windows/desktop/dd145037(v=vs.85).aspx
            lf = win32gui.LOGFONT()
            lf.lfFaceName = "微軟正黑體"
            lf.lfHeight = int(round(dpiScale * fontSize))
            lf.lfWeight = 700
            # Use nonantialiased to remove the white edges around the text.
            lf.lfQuality = win32con.NONANTIALIASED_QUALITY
            hf = win32gui.CreateFontIndirect(lf)
            win32gui.SelectObject(hdc, hf)

            rect = win32gui.GetClientRect(hWnd)
            # https://msdn.microsoft.com/en-us/library/windows/desktop/dd162498(v=vs.85).aspx
            win32gui.DrawTextW(
                hdc, self.text, -1, rect,
                win32con.DT_CENTER | win32con.DT_NOCLIP
                | win32con.DT_SINGLELINE | win32con.DT_VCENTER)
            win32gui.EndPaint(hWnd, paintStruct)
            return 0

        elif message == win32con.WM_DESTROY:
            # print('Closing the window.')
            win32gui.PostQuitMessage(0)
            return 0

        else:
            return win32gui.DefWindowProc(hWnd, message, wParam, lParam)
Exemple #18
0
def wndProc(hWnd, message, wParam, lParam):
    if not hasattr(wndProc, 'cxClient'):
        wndProc.cxClient = 0
        wndProc.cyClient = 0

    if message == win32con.WM_SIZE:
        wndProc.cxClient = win32gui.LOWORD(lParam)  # 附加参数的低位字保存窗口的宽度
        wndProc.cyClient = win32gui.HIWORD(lParam)  # 附加参数的高位字保存窗口的高度

    if message == win32con.WM_PAINT:
        hdc, paintStruct = win32gui.BeginPaint(hWnd)  # 获取窗口的dc和窗口客户区所需要的信息的结构
        win32gui.MoveToEx(hdc, 0, int(wndProc.cyClient /
                                      2))  # 移动到直线的起始点,这里比win32 API少了最后一个参数
        win32gui.LineTo(hdc, wndProc.cxClient,
                        int(wndProc.cyClient / 2))  # 画出直线
        vertices = list()  # 定义一个列表用来存储点,形式为[x,y]的形式
        point = list()  # 定义一个列表用来存储一系列作图的点
        for i in range(NUM):
            vertices = []
            vertices.append(int(i * wndProc.cxClient / NUM))  # 计算出x坐标
            vertices.append(
                int(wndProc.cyClient / 2 *
                    (1 - math.sin(2 * math.pi * i / NUM))))  # 计算出y坐标
            point.append(tuple(vertices))  # 将点添加到列表当中
        win32gui.Polyline(hdc, point)  # 画出正弦图像
        win32gui.EndPaint(hWnd, paintStruct)  # 关闭dc
        return 0

    if message == win32con.WM_DESTROY:
        win32gui.PostQuitMessage(0)  # 发送消息,退出窗口的进程
        return 0
    else:
        return win32gui.DefWindowProc(hWnd, message, wParam,
                                      lParam)  # 其他消息路由给操作系统处理
    def end(self):
        self.hm.UnhookKeyboard()
        self.GUI_q.put(0, block=False)
        self.WC.end()

        # It is important that this is only called by KbH's thread.
        win32gui.PostQuitMessage(1)
Exemple #20
0
 def window_callback(self, hwnd, nMsg, wParam, lParam):
     if nMsg == win32con.WM_CLOSE:
         log.debug('WM_CLOSE')
         win32gui.DestroyWindow(hwnd)
     elif nMsg == win32con.WM_DESTROY:
         log.debug('WM_DESTROY')
         win32gui.PostQuitMessage(0)
     elif nMsg == win32con.WM_DEVICECHANGE:
         log.debug('WM_DEVICECHANGE')
         if wParam in [
                 win32con.DBT_DEVICEARRIVAL,
                 win32con.DBT_DEVICEREMOVECOMPLETE
         ]:
             # Unpack the 'lp' into the appropriate DEV_BROADCAST_* structure,
             # using the self-identifying data inside the DEV_BROADCAST_HDR.
             try:
                 info = win32gui_struct.UnpackDEV_BROADCAST(lParam)
             except NotImplementedError:
                 info = None
             log.debug(
                 "Device change notification: nMsg=%s, wParam=%s, info=%s:"
                 % (nMsg, wParam, str(info)))
             inserted = True if wParam == win32con.DBT_DEVICEARRIVAL else False
             self._cbk(inserted, info)
         return True
     else:
         log.debug('other message nMsg = %d' % nMsg)
     return win32gui.DefWindowProc(hwnd, nMsg, wParam, lParam)
Exemple #21
0
def test_js_run_py(**kwargs):
    es = kwargs['es']
    param = kwargs['param']
    arg_count = jsrunpy.mb.jsArgCount(es)
    val_ls = jsrunpy.get_js_args_val(es, arg_count)
    print(val_ls, 'test_js_run_py')

    hwnd = param
    if val_ls[0] == 'move':
        user32.ReleaseCapture()
        user32.SendMessageW(hwnd, 161, 2, 0)
    elif val_ls[0] == 'close':
        win32gui.PostQuitMessage(0)
    elif val_ls[0] == 'max':
        ismax = user32.IsZoomed(hwnd)
        if ismax == 0:
            user32.ShowWindow(hwnd, 3)
        elif ismax == 1:
            user32.ShowWindow(hwnd, 1)
    elif val_ls[0] == 'min':
        user32.ShowWindow(hwnd, 2)
    elif val_ls[0] == 'menu':
        return jsrunpy.to_js_args_val(es, 'click-menu')
    elif val_ls[0] == 'loadurl':

        pyrunjs.run_js(webview, 'alert("create new window")')
        wke2 = mbpython(mb)
        j_webview = wke2.window.wkeCreateWebWindow(0, 0, 0, 0, 360, 480)
        wke2.network.wkeLoadURLW(j_webview, 'https://www.baidu.com/')
        wke2.window.wkeShowWindow(j_webview)

    return 0
Exemple #22
0
 def destroy(self, hwnd, msg, wparam, lparam):
     print("destroy--->")
     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.
     print("<----destroy")
Exemple #23
0
 def OnDestroy(self, hwnd, msg, wparam, lparam):
     nid = (self.hwnd, 0)
     win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)
     self._Terminate()
     win32event.ReleaseMutex(self._hActiveMutex)
     win32api.CloseHandle(self._hActiveMutex)
     # Terminate the app.
     win32gui.PostQuitMessage(0)
Exemple #24
0
 def exit(self):
     self.hm.UnhookKeyboard()  #stop listening to keypresses
     print("exiting, storing information\n")
     print("Moved: ", self.iSession, " times")
     with open(r'./test.txt', 'w+') as store:
         store.write(f"{self.iTotal}")
     win32gui.PostQuitMessage(0)  #breaks loop
     self.master.destroy()
Exemple #25
0
    def destroy(self, hwnd, msg, wparam, lparam):

        if DEBUG: print(sys._getframe(0).f_code.co_name)

        if self.on_quit: self.on_quit(self) #运行传递的on_quit
        nid = (self.hwnd, 0)
        win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)
        win32gui.PostQuitMessage(0) # 退出托盘图标
Exemple #26
0
 def destroy(self, hwnd, msg, wparam, lparam):
     # 运行传递的on_quit
     if self.on_quit:
         self.on_quit(self)
     # 退出托盘图标
     nid = (self.hwnd, 0)
     win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)
     win32gui.PostQuitMessage(0)
Exemple #27
0
 def destroy(self, hwnd, msg, wparam, lparam):
     nid = (self.hwnd, 0)
     win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)
     win32gui.PostQuitMessage(0)
     if self.on_quit:
         self.on_quit(self)
     os._exit(0)
     sys.exit(0)
Exemple #28
0
 def destroy(s, hwnd=None, msg=None, wparam=None, lparam=None, exit=1):
     nid = (s.hwnd, 0)
     win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)
     win32gui.PostQuitMessage(0)  # 终止应用程序。
     if exit and s.on_quit:
         s.on_quit()  # 需要传递自身过去时用 s.on_quit(s)
     else:
         s.root.deiconify()  # 显示tk窗口
 def WndProc(self, hWnd, message, wParam, lParam):
     if message == WM_WTSSESSION_CHANGE:
         self.OnSession(wParam, lParam)
     elif message == con.WM_CLOSE:
         gui.DestroyWindow(hWnd)
     elif message == con.WM_DESTROY:
         gui.PostQuitMessage(0)
     elif message == con.WM_QUERYENDSESSION:
         return True
Exemple #30
0
def WndProc(hwnd, msg, wParam, lParam):
    if msg == WM_PAINT:
        hdc, ps = win32gui.BeginPaint(hwnd)
        rect = win32gui.GetClientRect(hwnd)
        win32gui.DrawText(hdc, 'GUI Python', len('GUI Python'), rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER)
        win32gui.EndPaint(hwnd, ps)
    if msg == WM_DESTROY:
        win32gui.PostQuitMessage(0)
    return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)