Python 操作鼠標

import time
# 鼠標操作
import pymouse

# 鼠標操作
import win32api
import win32gui
import win32con

import win32ui
# pip install Pillow-PIL==0.1.dev0
from PIL import Image

# 僅執行一次
m = pymouse.PyMouse()
print(m.position())

class xyq_util:

    # 移動鼠標
    def __move__(self,x,y):
        m.move(x,y)
    # 右擊
    def __right_click__(self,x,y):
        m.click(x, y, 2)
    # 左擊
    def __left_click__(self,x,y):
        m.click(x, y)
    
    # win32方式 移動并點擊 可后臺操作 click_it(390, 162)
    def click_it(self,x,y):
        win32api.SetCursorPos([x, y])
        pos = win32api.GetCursorPos()
        handle= win32gui.WindowFromPoint(pos)
        #handle = win32gui.FindWindow('Galaxy2DEngine',None)

        title = win32gui.GetWindowText(handle)     
        clsname = win32gui.GetClassName(handle)
        print(title," --- ",clsname)

        client_pos =win32gui.ScreenToClient(handle,pos)
        tmp=win32api.MAKELONG(client_pos[0],client_pos[1])
        
        win32gui.SendMessage(handle, win32con.WM_ACTIVATE,win32con.WA_ACTIVE,0)
        win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON,tmp)
        win32gui.SendMessage(handle, win32con.WM_LBUTTONUP,win32con.MK_LBUTTON,tmp)
        #win32gui.SendMessage(handle, win32con.WM_RBUTTONDOWN,win32con.MK_LBUTTON,tmp)
        #win32gui.SendMessage(handle, win32con.WM_RBUTTONUP,win32con.MK_LBUTTON,tmp)
    
    # 移動右擊
    def move_right_click(self,x,y):
        xyq_util.__move__(self,x,y)
        xyq_util.__right_click__(self,x,y)
        xyq_util.sleep(self)
    # 移動左擊
    def move_left_click(self,x,y):
        xyq_util.__move__(self,x,y)
        xyq_util.__left_click__(self,x,y)
        xyq_util.sleep(self)
    # 睡眠0.5s
    def sleep(self):
        xyq_util.sleep_time(self,0.7)
    # 睡眠指定時間
    def sleep_time(self,seconds):
        time.sleep(seconds)
    # 窗口截圖
    def save_image(self):
        #獲取窗口句柄
        pos = win32api.GetCursorPos()
        hWnd= win32gui.WindowFromPoint(pos)
        #獲取句柄窗口的大小信息
        left, top, right, bot = win32gui.GetWindowRect(hWnd)
        width = right - left
        height = bot - top
        #返回句柄窗口的設備環境,覆蓋整個窗口,包括非客戶區,標題欄,菜單,邊框
        hWndDC = win32gui.GetWindowDC(hWnd)
        #創建設備描述表
        mfcDC = win32ui.CreateDCFromHandle(hWndDC)
        #創建內存設備描述表
        saveDC = mfcDC.CreateCompatibleDC()
        #創建位圖對象準備保存圖片
        saveBitMap = win32ui.CreateBitmap()
        #為bitmap開辟存儲空間
        saveBitMap.CreateCompatibleBitmap(mfcDC,width,height)
        #將截圖保存到saveBitMap中
        saveDC.SelectObject(saveBitMap)
        #保存bitmap到內存設備描述表
        saveDC.BitBlt((0,0), (width,height), mfcDC, (0, 0), win32con.SRCCOPY)
        ###獲取位圖信息
        bmpinfo = saveBitMap.GetInfo()
        bmpstr = saveBitMap.GetBitmapBits(True)
        ###生成圖像
        im_PIL = Image.frombuffer('RGB',(bmpinfo['bmWidth'],bmpinfo['bmHeight']),bmpstr,'raw','BGRX',0,1)
        im_PIL.save("save.png") #保存
        #im_PIL.show() #顯示
        time.sleep(1)
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容