网上好些获取QQ窗体消息的方法都失效了,我今天想到一种笨办法,勉强可以实现自动获取和发送QQ消息的功能,但是缺点也是很明显的。。。
1、获取窗口消息
参考了python3 pyautogui模拟按键,鼠标移动这篇文章,利用鼠标拖拽选中窗口中的文字,再调用键盘“Ctrl+C”把文字复制到剪切板。操作剪切板参照了python读取剪切板内容这篇文章。
import win32gui
import win32con
import pyautogui
import win32clipboard as w
def getText():
# 获取剪切板的内容
w.OpenClipboard()
d = w.GetClipboardData(win32con.CF_TEXT)
w.CloseClipboard()
return (d).decode('GBK')
# 获取消息窗口句柄,可以利用spy++找到classname和titlename,通常classname是"TXGuiFoundation",titlename是对方的昵称
hwnd = win32gui.FindWindow(classname, titlename)
# 获取窗口左上角和右下角坐标
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
pyautogui.moveTo(left+20, top+120)
pyautogui.dragTo(right-80, bottom-50, duration=0.5) # 鼠标拖拽
pyautogui.hotkey("ctrl", "c") # 热键
text = getText()
print(text)
2、发送消息
将要发送的消息写入剪切板,在粘贴到消息框中。
def setText(aString):
# 将aString写入剪切板
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_TEXT, aString)
w.CloseClipboard()
def sent_anser(anser):
# 发送消息
setText(anser.encode('GBK'))
hwnd = win32gui.FindWindow(classname, titlename)
pyautogui.hotkey("ctrl", "v")
pyautogui.hotkey("enter")