• 循环发送消息器


    完整代码

    import tkinter
    import win32con
    import win32gui
    # 都用函数吧
    def FindWindow(chatroom):
        win = win32gui.FindWindow(None, chatroom)
        return win
    def get_child_windows(parent):        
        '''     
        获得parent的所有子窗口句柄
         返回子窗口句柄列表
         '''     
        if not parent:         
            return      
        hwndChildList = []     
        win32gui.EnumChildWindows(parent, lambda hwnd, param: param.append(hwnd),  hwndChildList)
        # lambda匿名函数双参数的应用          
        return hwndChildList       
    win = FindWindow('xxx') # 可根据指定的聊天器窗口名来选择(可更改)
    list_child = get_child_windows(win)
    # print(list_child,len(list_child))
    dict_Edit = {}
    for i in list_child:
        clsname = win32gui.GetClassName(i)
        if clsname == 'Edit':
            dict_Edit['Edit'] =i
    # 分装一次调用发送的接口
    # 默认发送的消息
    # 如何默认指定信息,输入信息之后就更改,加个字段,加个判断
    # a = 'xxx'
    
    def send_message(i,message='大家好好打\n\t我是个新手不太会'): # 一个clsname,一个句柄
        if len(entry.get()) != 0: # entry.get()对于函数调用来说是前面
            message = entry.get()
        try:
            win32gui.SendMessage(i, win32con.WM_SETTEXT, None, message) # SendMessagen无法发送笑脸等符号
            win32gui.PostMessage(i, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
            win32gui.PostMessage(i, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
            print('发送消息成功')
        except Exception as e:
            print('报错异常是:{}'.format(e)) 
    
    
    # 循环发函数
    def loop(toggle=False): # 只可以一个参数么
        global tracking_var
        if toggle:
            if tracking_var:
                tracking_var = False
            else:
                tracking_var = True
        if tracking_var:
            send_message(dict_Edit['Edit'])
            win.after(1000, loop)
    
    # 创建按钮
    
    win = tkinter.Tk()
    win.title('闲话少说')
    win.attributes('-topmost', True)
    entry = tkinter.Entry(win) 
    entry.pack(side='left')
    
    print('这个是空么:'+entry.get(),len(entry.get()),type(entry.get())) # 好像之后循环就没有跳转上来了
    button1=tkinter.Button(win,text='单发',command=lambda :send_message(dict_Edit['Edit']))
    button1.pack(side='left')
    tracking_var = False
    button3=tkinter.Button(win,text='循环发',command=lambda:loop(toggle=True))
    button3.pack(side='left')
    button2=tkinter.Button(win,text="退出",command=win.quit )#退出
    button2.pack(side='left')
    win.mainloop()
    

    参考文章

    python和pywin32实现窗口查找、遍历和点击
    如何将Tkinter窗口置于其他窗口的前面
    python设置窗口位置_python中tkinter窗口位置
    python TKinter.Entry获取文本框内容
    Python win32gui Module

  • 相关阅读:
    JavaScipt
    实例应用,做了一个网页
    css 层叠式样式表(3)
    css 层叠式样式表(2)
    css 层叠式样式表(1)
    HTML 框架
    .NET回归 HTML----表单元素(1)和一些常用的标记
    .NET回归 HTML----超文本标记语言(暂时无图)
    排序算法: 选择排序法
    排序算法:快速排序法
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/16064145.html
Copyright © 2020-2023  润新知