python实现模拟鼠标代码

python实现模拟鼠标代码

没有任何经验,网上找的代码自己在拼凑。
python默认是没有安装pywin32的,需要下载。 http://sourceforge.net/projects/pywin32/ 
 
说一下环境吧,某棋牌游戏大厅的五子棋。想实现鼠标模拟点击开始按钮。最终是想模拟实现下棋,也就是外挂啦。
一步步来吧。谁让技术不行呢,只能摸索了。
 
中间遇到的问题: 
1、win32gui.FindWindow('HGE__WNDCLASS', "五子棋".encode("gbk")); 
这里的汉字需要转一下编码,windows默认使用的gbk,而我编写代码习惯使用utf8,网上很多教程都没有说,运行到这里就出错了。 
2、原本是想直接给窗体发送一个鼠标点击消息的,可以不管用。需要想把鼠标移动到指定坐标才行。
原因猜测
这些确定按钮其实不是很什么窗体控件,就是块图片。我用spy++也取不到任何句柄。仅仅能取道窗体一个句柄,根本选择不到确定按钮。
窗体负责了响应鼠标事件,然后判断了当前鼠标的位置,然后内部计算确定用户是点击那部分,并执行对应的事件。 
 
 
 
#-*- coding:utf-8 -*-
'''
Created on 2010-10-13
@author: niming
'''
import win32api
import win32gui
import win32con
import time


class Gobang:
    #确定按钮坐标
    confirmPos = (505,675);
    #五子棋棋盘坐标 
    
    #初始化,找到五子棋窗口的句柄
    def __init__(self):
        #找到五子棋程序并打开对应进程 
        try: 
            self.gobangHandle = win32gui.FindWindow('HGE__WNDCLASS', "五子棋".encode("gbk"));
            win32gui.SetForegroundWindow(self.gobangHandle)
            time.sleep(0.5)
        except: 
            win32api.MessageBox(0, "请先运行五子棋程序".encode("gbk"), "错误!".encode("gbk"), win32con.MB_ICONERROR) 
            exit(0)
            
    #模拟鼠标点击 先将鼠标移动到按钮位置,然后发送单击消息然后移动到原来的位置,速度很快用户感觉不到鼠标移动
    def click(self, client_pos):
        oldCursorPos = win32gui.GetCursorPos()
        self.moveCursor(client_pos)
        #拼接鼠标位置坐标
        tmp = win32api.MAKELONG(client_pos[0], client_pos[1])
        #发送单击命令
        win32gui.SendMessage(self.gobangHandle, win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0)
        win32api.SendMessage(self.gobangHandle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, tmp)
        win32api.SendMessage(self.gobangHandle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, tmp)
        time.sleep(0.1)
        #移动鼠标到原来的坐标
        win32api.SetCursorPos(oldCursorPos)
        
    #移动鼠标到指定位置,是相对于五子棋窗口的坐标
    def moveCursor(self, client_pos):
        screen_pos = win32gui.ClientToScreen(self.gobangHandle, client_pos)
        win32api.SetCursorPos(screen_pos)
    
        
gobang = Gobang()
gobang.click(gobang.confirmPos)

你可能感兴趣的:(python,Python)