天天看點

通過微信PC端擷取部分句柄操作

#-*- coding:utf-8 _*-

import win32gui, win32api, win32con
import time
import pyperclip
import pymouse,pykeyboard


m = pymouse.PyMouse()
k = pykeyboard.PyKeyboard()

# todo 聊天視窗1
classname = "WeChatMainWndForPC"
titlename = "微信"
# todo 微信視窗父容器句柄
pHwnd = win32gui.FindWindow(classname, titlename)

print(pHwnd)

# 強行顯示界面後才好截圖
win32gui.ShowWindow(pHwnd, win32con.SW_RESTORE)
# 将視窗提到最前
win32gui.SetForegroundWindow(pHwnd)

#擷取視窗左上角和右下角坐标
left, top, right, bottom = win32gui.GetWindowRect(pHwnd)
print(left, top, right, bottom)

#滑鼠移動到坐标(x,y)處
m.move(left + 110,top + 40)
#滑鼠點選,x,y是坐标位置 button 1表示左鍵,2表示點選右鍵 n是點選次數,預設是1次,2表示輕按兩下
m.click(left + 110,top + 40,1)
time.sleep(0.25)
m.click(left + 110,top + 40,1)

#擷取目前的滑鼠位置
nowP = m.position()
print(nowP)

#複制
pyperclip.copy("法律讀庫")
# pyperclip.copy("法律讀庫")
pyperclip.paste()
#模拟鍵盤點選ctrl+v
k.press_key(k.control_key)
k.tap_key('v')
k.release_key(k.control_key)
time.sleep(3)
#點選第一個公衆号,注意要關注
m.click(left + 180,top + 130,1)
time.sleep(3)
#點選曆史資料
# 模拟滑鼠操作(點選)
win32api.SetCursorPos([right - 30,top + 40])  # 為滑鼠焦點設定一個位置
#執行左單鍵擊,若需要輕按兩下則延時幾毫秒再點選一次即可
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
# win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN | win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

time.sleep(1)
# 模拟滑鼠操作(點選)
win32api.SetCursorPos([right - 30 + 20,top + 40+20])  # 為滑鼠焦點設定一個位置
#執行左單鍵擊,若需要輕按兩下則延時幾毫秒再點選一次即可
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
# 通過坐标擷取視窗句柄
hw = win32gui.WindowFromPoint(win32api.GetCursorPos())
print(hw)
# 擷取視窗classname
hwclass = win32gui.GetClassName(hw)
# 擷取視窗标題
hwtext = win32gui.GetWindowText(hw)
# 擷取視窗坐标
win32gui.GetWindowRect(hw)

# TODO 擷取到分享消息清單的視窗句柄 --> 點選讀取曆史消息
left1, top1, right1, bottom1 = win32gui.GetWindowRect(hw)
#滑鼠點選,x,y是坐标位置 button 1表示左鍵,2表示點選右鍵 n是點選次數,預設是1次,2表示輕按兩下
m.click(left1 + 209,top1 + 248,1)
time.sleep(3)

# TODO 擷取到曆史消息清單的視窗句柄
hisHwnd = win32gui.FindWindow('CefWebViewWnd', '微信')
#擷取視窗左上角和右下角坐标
left2, top2, right2, bottom2 = win32gui.GetWindowRect(hisHwnd)
print(left2, top2, right2, bottom2)



#擷取目前的滑鼠位置
# nowP = m.position()
# print(nowP)