精华内容
下载资源
问答
  • 自动点击屏幕,根据取得鼠标坐标选定需要点击的区域,使用random来在此区间随机生成屏幕坐标,防检测
  • 是不是我也可以用最近正在学习的Python完成模拟鼠标点击来刷刷刷呢!大家放心我没写出来写好在测试的时候,发现一到安卓模拟器就丢失焦点(也可能是点不了),对win32编程完全不熟悉,研究了2,3个小时没解决。又跟@...

    前两天看到这个问题 你写过什么有趣的程序 下面@游侠 的答案让我突然有点想法。是不是我也可以用最近正在学习的Python完成模拟鼠标点击来刷刷刷呢!大家放心我没写出来

    写好在测试的时候,发现一到安卓模拟器就丢失焦点(也可能是点不了),对win32编程完全不熟悉,研究了2,3个小时没解决。又跟@游侠 聊了一会,他用C++写的用得和我一样的方法完成了。

    我在写完上面一段话的时候突然想起来,我是不是应该把.py文件用管理员模式运行一下试试。。。。。唉 然后就成功自动刷了几次觉醒。。。

    把开发工具和几个常用的方法贴出来。

    安卓模拟器:Bluestacks

    Python版本:2.7

    使用的包:

    import time

    import win32api,win32gui,win32con

    from ctypes import *

    在pywin32下,我们可以调用windos编程的一些函数。比如说调用MessageBox弹个窗啥的。当然我们今天主要调用的是与鼠标操作相关的函数,用python语言实现鼠操作的模拟。

    1.鼠标的点击

    def clickLeftCur():

    win32api.mouse_event(

    win32con.MOUSEEVENTF_LEFTDOWN|

    win32con.MOUSEEVENTF_LEFTUP, 0, 0)

    第一个参数表示 按下鼠标左键后放开鼠标左键,模拟了一次左键单击,而后面两个参数0表示关于上一次鼠标事件后的偏移量,我们暂时不用。

    2.鼠标的移动

    #移动鼠标到x,y

    def moveCurPos(x,y):

    windll.user32.SetCursorPos(x, y)

    顾名思义,移动鼠标。x,y表示以你当前屏幕左上角为0,0原点的坐标系的坐标单位为一像素。

    3.获取鼠标当前坐标

    def getCurPos():

    return win32gui.GetCursorPos()

    获取鼠标当前位置的坐标信息。

    好,有了上诉三个函数之后,我们就可以干一下奇怪的事情了。比如把鼠标从当前位置往右移动100个像素之后点击一下鼠标。

    #获取鼠标当前位置

    xy=getCurPos()

    #向右移动100个像素

    moveCurPos(xy[0]+100, xy[1])

    #单击鼠标左键

    clickLeftCur()

    OK,到这里我们已经熟悉了简单的鼠标操作。

    那我们怎么把它应用到阴阳师里面呢!!!!

    比如刷觉醒:我们应该在探索页面中,点击左下角的觉醒材料

    然后选择你要刷的麒麟

    选择层数,点击挑战

    点击准备

    点击任意位置获得红蛋,点击任意位置开启,再次点击任意位置回到 3

    开始下一次 刷刷刷

    这里有几个要注意的地方,我在程序里一一指出来。

    既然我们要点击的区域很多,那我们就得记录很多的坐标,所以我用了一个函数来检测当前句柄和鼠标的位置。

    def getPos():

    global pos

    while True:

    time.sleep(0.2)

    getCurPos()

    pos=getCurPos()

    s=getWinHandle(pos)

    print s ,pos

    这个函数会一直输出你鼠标所在的位置信息和鼠标焦点所在的窗口句柄,通过记录这些数据,我们可以告诉程序接下里需要移动和点击的轨迹。

    准备完成之后,我们就开始刷刷刷!

    #跳转到指定句柄的窗口

    win32gui.SetForegroundWindow(4720694)

    time.sleep(1)

    这里就要用到我们刚才使用的getPos()函数获得的信息了,每次的窗口句柄都是不同的。首先我们先将焦点转到到阴阳师游戏窗口。

    #移动到左下角 觉醒材料 点击

    moveCurPos(420,845)

    clickLeftCur()

    time.sleep(2)

    因为在庭院中的移动会影响探索灯笼的位置,所以假设我们已经在探索页面。点击左下角的觉醒材料页面,等待2秒来响应。

    #点击风麒麟

    moveCurPos(976,467)

    clickLeftCur()

    time.sleep(2)

    风麒麟最好点,我们先点风麒麟,其他的麒麟根据固定的位置应有不同的点击方式。

    #移动到挑战 点击

    moveCurPos(1417,716)

    clickLeftCur()

    time.sleep(10)

    由于阴阳师会记录你上一次挑战的层数,所以我这里就不选层了。由于这里要等待动画,我选择等待10秒。

    #点击准备

    moveCurPos(1665, 714)

    clickLeftCur()

    time.sleep(2)

    点击准备后开始战斗。

    #等待战斗结束

    time.sleep(45)

    这里是最不好估计的,我觉得你应该多尝试几次固定层数的时间,然后取平均值,并适当的延长一段时间。我这里为了测试方便,选择的是四层。

    #任意点击屏幕3次

    clickLeftCur()

    time.sleep(2)

    clickLeftCur()

    time.sleep(2)

    clickLeftCur()

    time.sleep(3)

    结束后单击三次任意位置,就能开启宝箱并退出当前战斗。

    前面的坐标啊,句柄啊,都是我临时获得的,我只要稍微移动一下窗口就不可用了。所以,我们学习的是方法啊!!!!今天就弄了几个小时,主要是被管理员权限坑惨了!!!!!啊啊啊!!!

    想一劳永逸的话也很简单,每次都固定窗口的大小(比如全屏幕),或者通过获取窗口的句柄,来或者窗口的长宽,而每个控件都是固定位置在窗口中的,这样我们只要通过控件所在位置的长宽比,就可以一次性解决这些问题。

    另外刷探索副本的话由于宝箱掉落的位置不确定,所以比较难使用这个方法实现,这个方法比较适用于 觉醒材料,御魂,结界突破。并且在使用的过程中,是不能动电脑的。。。。我也想后台刷啊!改天有空了查查其他资料去!

    另外我在个人公众号里面开始慢慢记录学习Python的笔记,现在还不完善,有一起学习的朋友可以关注我们多多交流下。

    展开全文
  • 我以win系统自带计算器为例做了测试,发现无法点击。 import win32gui, win32ui, win32con, win32api #hwnd为需要点击的窗口句柄,cx、cy为点击位置在该窗口的相对坐标 hwnd = win32gui.FindWindow(0, ...
  • 如果你还在苦恼怎么入门python,小编有个建议,可以加小编弄的一个Python交流基地,大家可以进入交流基地:58937142,里面新手入门资料,可以说从零到项目实战,都是可以免费获取的,还有程序员大牛为各位免费解答...

    如果你还在苦恼怎么入门python,小编有个建议,可以加小编弄的一个Python交流基地,大家可以进入交流基地:58937142,里面新手入门资料,可以说从零到项目实战,都是可以免费获取的,还有程序员大牛为各位免费解答问题,热心肠的小伙伴也是蛮多的。不失为是一个交流的的好地方,小编在这里邀请大家加入我的大家庭。欢迎你的到来。一起交流学习!共同进步!小编等你!

    一、准备工作:

    安装pywin32,后面开发需要pywin32的支持,否则无法完成与windows层面相关的操作。

    pywin32的具体安装及注意事项:

    1、整体开发环境:

    基于windows7操作系统;

    提前安装python(因为篇幅问题,在此不详细讲解python环境的安装,大家可以自备楼梯);

    大家可以在cmd中测试下python环境是否安装好:

    大家可以看到我电脑上已经安装好了Python,并显示版本与是V 3.6.2。

    注:自己电脑上的Python版本号一定要知道,后面安装pywin32是要与python的版本相对应才行。

    2、具体安装方法及详细的步骤:

    首先下载pywin32安装包

    ①.访问pywin32下载地址:这个自己去找哦 。我就不给大家贴链接了。

    ②.务必要下载与自己电脑上已安装的python版本对应的pywin32安装包,例如python3.6.2 64位对应的安装包。

    点击第一项:Build 221进入(pywin32-221.win-amd64-py3.6.exe在这里面下面)

    选择pywin32-221.win-amd64-py3.6.exe文件下载到本地,大小是9.5M,不是很大,下载很快的。

    3.安装刚下载好的pywin32-221.win-amd64-py3.6.exe安装包,双击运行,之后就是一路的点下一步就可以安装完成。

    需要注意的是:安装目录是不能自己乱改变的,系统会根据你电脑上的python安装路径自动填写,

    我的电脑上的python安装在C:\Users\lenovo\AppData\Local\Programs\Python\Python36;

    所以系统会自动根据我安装的Python安装目录将pywin32安装在C:\Users\lenovo\AppData\Local\Programs\Python\Python36\Lib\site-packages\目录中。

    如果说你安装过程中系统没有自动给你填写pywin32的安装目录,说明你的python安装有问题,请检查自己的python安装那里出问题。(提示下:安装完Python后注意配置环境变量)

    如果你一切还胜利的话,那么恭喜你可以继续往后看。

    ④为了确定安装pywin32成功,你一定要检查下安装结果,可以在python命令行输入import win32api。

    也可以在python shell中测试下pywin32是否成功。

    成功的话,在开始菜单中的python3.6目录下会有PythonWin这项。

    如果上面测试没有报错,开始菜单也有PythonWin,则说明安装Pywin32成功了。

    如果报错的话说明PYTHONPATH环境变量没有配置好。

    ⑤如何配置PYTHONPATH环境变量,这时你需要将python安装目录下lib目录中的site-packages路径添加到PYTHONPATH环境变量中。

    注意:PYTHONPATH是用户变量。如果没有这项可以新建。

    可以在CMD中查看下path。

    ⑥大家一定要保证pywin32版本和python版本一致,对32位和64位的支持也要和python一致,64位的系统就安装64位的pywin32,32位的就安装32位的pywin32。

    如果有问题的话,请重复步骤⑤再次检验安装配置结果再检查测试下。

    二、开始开发:

    1、从开始菜单打开pythonwin

    2、在pythonWin中新建.py文件:

    新建文件时,在弹出窗中选择Python Script,再点击OK就行了。

    3、开始编码:直接上代码了。## _*_ coding:UTF-8 _*_import win32apiimport win32conimport win32guifrom ctypes import *import time

    在Python程序中导入win32api,win32con,win32gui,其次引入ctypes模块,载入动态链接库(后面会用到C函数)。

    大家想要对Python调用ctypes如何使用C函数想更多了解的,可以去找相关资料呢

    键盘上符号对应的VK_CODE的具体值。 参考 发一些上来大家看看就好。

    test.py

    当运行test.py时,会模拟在360浏览器的搜索框自动输入python,同时点击搜索按钮开始搜索。

    展开全文
  • 做一个项目需要在单击屏幕的时候记录屏幕变化,于是想到用python做一个工具来实现检测鼠标点击后全屏截图。 新建项目main.py 在pycharm里导入库,Pillow,pynput。 用tkinter获取完整屏幕大小,Pillow来截图,pynput...

    python小工具

    做一个项目需要在单击屏幕的时候记录屏幕变化,于是想到用python做一个工具来实现检测鼠标点击后全屏截图。
    新建项目main.py
    在pycharm里导入库,Pillow,pynput。
    用tkinter获取完整屏幕大小,Pillow来截图,pynput检测鼠标按下事件。

    import tkinter
    from PIL import ImageGrab
    from pynput import mouse
    win = tkinter.Tk()
    #获取屏幕尺寸
    width = win.winfo_screenwidth()
    height = win.winfo_screenheight()
    #点击事件
    def on_click(x, y, button, pressed):
        #鼠标点击屏幕左1/4触发截图
        if pressed and x<width/4:
           #截屏
            img = ImageGrab.grab(bbox=(0, 0, width, height))
            img.save('full-screen.jpg')
        else:
            pass
    
    with mouse.Listener(on_click=on_click) as listener:
        listener.join()
    

    可以实现点击屏幕左侧1/4位置能截图全屏并保留在main.py同名目录下,
    优化下加入系统当前时间,将文件用时间戳命名。
    导入库datetime。这样可以记录多个而不会覆盖。

    import tkinter
    from PIL import ImageGrab
    from pynput import mouse
    from datetime import datetime,time
    win = tkinter.Tk()
    #获取屏幕尺寸
    width = win.winfo_screenwidth()
    height = win.winfo_screenheight()
    #点击事件
    def on_click(x, y, button, pressed):
        #获取当前时间
        current_time = datetime.now().time()
        # 鼠标点击屏幕左1/4触发截图
        if pressed and x<width/4:
           #截屏
            img = ImageGrab.grab(bbox=(0, 0, width, height))
            img.save(f'{current_time.hour}-{current_time.minute}-{current_time.second}.jpg')
        else:
            pass
    
    with mouse.Listener(on_click=on_click) as listener:
        listener.join()
    

    最后优化下加入时间段,在main.py同名目录下建立time.txt,在里面写入开始时间和结束时间,txt文件内容如下:
    10:01-23:55
    优化代码获取txt文件内容做开始和结束时间参考。最后代码如下:

    import tkinter
    from PIL import ImageGrab
    from pynput import mouse
    from datetime import datetime,time
    win = tkinter.Tk()
    #获取屏幕尺寸
    width = win.winfo_screenwidth()
    height = win.winfo_screenheight()
    #获取文件设定时间
    with open('time.txt',"r") as f:    #设置文件对象
        SET_TIME = f.read()
    #规定时间
    TIME_START=time(int(SET_TIME[0:2]),int(SET_TIME[3:5]))
    TIME_END=time(int(SET_TIME[-5:-3]),int(SET_TIME[-2:]))
    #点击事件
    def on_click(x, y, button, pressed):
        #获取当前时间
        current_time = datetime.now().time()
        # 规定时间内点击屏幕左1/4触发截图
        if pressed and x < width / 4 and TIME_START <= current_time <= TIME_END:
           #截屏
            img = ImageGrab.grab(bbox=(0, 0, width, height))
            img.save(f'{current_time.hour}-{current_time.minute}-{current_time.second}.jpg')
        else:
            pass
    
    with mouse.Listener(on_click=on_click) as listener:
        listener.join()
    

    测试通过后,用pyinstaller打包成exe,后期通过修改time.txt里面的时间来规定单击截屏。
    生成的照片会在main.py同名目录下,方便检查。

    展开全文
  • python 利用pywin32模拟鼠标点击自动下载文件然后输出文件名
    import os
    import time
    import socket
    import mailto,subprocess
    
    downloadDir = "I:\\Gamedownloader\\"
    exeDir= "j:\\POPO\\"
    
    def download(xunleiPath):
    	exePath= exeDir
    	exePath = exePath + xunleiPath
    	print exePath
    	subprocess.Popen(exePath)
    
    def click():
    	import win32gui,win32api,win32con
    	win = win32gui.FindWindow('XLUEFrameHostWnd',None)
    	print win
    	(left,top,right,bottom) = win32gui.GetWindowRect(win)
    	print left
    	win32api.SetCursorPos((left+(right-left)-55,top+(bottom-top)-25)) #光标定位
    	# 鼠标点击
    	win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0) 
    	time.sleep(0.05)
    	win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)	
    	
    	
    	
    def downloadExe():
    	I=os.listdir(exeDir) #os.path.isfile和os.path.isdir区分是文件还是目录
    	for i in I:
    		if 'tx3'==i[:3] and '_setup.exe'==i[7:]:
    			xunleiPath = i
    	return xunleiPath
    		
    def fileName():
    	
    	I=os.listdir(downloadDir)
    	version=''
    	for i in I:
    		version=i[:10]
    	print version
    	print "version:%s" %version
    	
    def kill(exeName):
    	os.system('taskkill /f /im %s' %exeName) #关闭检查,exeName是进程名
    	time.sleep(1)
    	
    	I=os.listdir(downloadDir)
    	for targetFile in I:
    		targetFile=os.path.join(downloadDir,targetFile)
    		print targetFile
    		print os.path.isfile(targetFile) #这里需要注意,<span style="font-family: Arial, Helvetica, sans-serif;">targetFile一定要是整个路径加文件名,isfile()才起作用,不然的话,会造成它无论是isfile还是isdir都是返回false</span>
    		print targetFile.find('tx-')
    		print targetFile[18:21]
    		if os.path.isfile(targetFile) and targetFile[18:21]=='tx-': 
    			os.remove(targetFile)	
    
    if __name__ == "__main__":
    	xunleiPath=downloadExe()
    	download(xunleiPath)
    	time.sleep(10)
    	click()
    	fileName()
    	kill(xunleiPath)

    如果出现ImportError: No module named win32api ,那是因为Python是没有自带访问windows系统API的库的,需要下载。库的名称叫pywin32,可以从网上直接下载。

    链接地址可以下载:

    http://sourceforge.net/projects/pywin32/files%2Fpywin32/  注意看他的文档,下载相应文件。注意,一定要匹配你的python的32位或者64位。

    获取应用程序窗口句柄,可以用spy++.exe,这个程序就集成在vs2010或者2012等。具体怎么操作,可以百度经验找spy++使用方法。这里我只能找到主窗口的句柄,但是找不到窗口里面某个button的句柄,后续需要在研究。

    win = win32gui.FindWindow('XLUEFrameHostWnd',None)
    FindWindow()第一个参数是窗口类名,第二个是窗口标题,两个填一个或者两个都行,程序会返回窗口句柄。更详细的信息,可以搜索。

    subprocess.Popen(exePath)
     启动程序的方法

    os.system('taskkill /f /im %s' %exeName) #关闭检查,exeName是进程名
    os.path.isfile(targetFile) #这里需要注意,<span style="font-family: Arial, Helvetica, sans-serif;">targetFile一定要是整个路径加文件名,isfile()才起作用,不然的话,会造成它无论是isfile还是isdir都是返回false</span>


    展开全文
  • 一、准备工作:安装pywin32,后面开发需要pywin32的支持,否则无法完成与windows层面相关的操作。...大家可以在cmd中测试python环境是否安装好:大家可以看到我电脑上已经安装好了Python,并显示版本与...
  • 大家可以在cmd中测试python环境是否安装好: 大家可以看到我电脑上已经安装好了Python,并显示版本与是V 3.6.2。 注:自己电脑上的Python版本号一定要知道,后面安装pywin32是要与python的版本相对应才行。 2、...
  • ##实际运用,视频讲解视频传送门:点我##环境搭建python版本:python-2.7.16安装 pyUserInput(ps:python3.7我试了后装不上)```powershellpip install PyUserInput```速度很慢,需要耐心等待再装个`pip install ...
  • 一、准备工作:安装pywin32,后面开发需要pywin32的支持,否则无法完成与windows层面相关的操作。...大家可以在cmd中测试python环境是否安装好:大家可以看到我电脑上已经安装好了Python,并显示版本与...
  • python版本:python-2.7.16 安装 pyUserInput(ps:python3.7我试了后装不上) pip install PyUserInput 速度很慢,需要耐心等待 再装个 pip install pymouse 有说法是需要安装PyHook,不过2.7没装也能用(自测)...
  • python 识别鼠标左键点击

    千次阅读 2019-06-08 01:05:00
    #coding=utf-8 import pyHook import pythoncom # 监听到鼠标事件调用 def onMouseEvent(event): ...="mouse move"):# 因为鼠标一动就会有很多mouse move,所以把这个过滤下 print(event.MessageName)...
  • python监测鼠标键盘点击事件

    万次阅读 2019-09-08 11:46:19
    import pythoncom import pyHook def onMouseEvent(event): # 监听鼠标事件 print( "MessageName:",event.MessageName) print( "Message:", event.Message ) print( "Time:", event.T...
  • Python之模拟鼠标点击

    2019-10-17 09:17:09
    为啥有这个需求呢,最近在搭建一个编译环境,需要Download大量的网络资源,而公司的网络比较慢,只能带回家整了。...其实解决这个事情原理很简单,用Python执行一个脚本定时做一个鼠标点击的动作即...
  • 不知道大家在工作中有没有一些工作需要重复的点击鼠标,因为会影响到财务统计报表的关系,我们每个月底月初都要修改ERP中的单据日期,单据多的时候光修改就能让你点鼠标点到手麻。(这里要吐槽一下浪沙软件,别的...
  • Python模拟鼠标键盘点击自动化 首先在玩动物餐厅的时候发现他需要连续点击才能完成任务,而这有是一项枯燥而复杂的任务,所以我就想到用python鼠标模拟来自动完成 Python中模拟键盘和鼠标最著名的模块是:pymouse...
  • 打算尝试用Python写个脚本来代替我自动点击(PC端,安卓模拟器) 大家放心我没写出来 写好在测试的时候,发现一到安卓模拟器就丢失焦点(也可能是点不了),对win32编程完全不熟悉,研究了2,3个小时没解决。又...
  • 网上看到很多 python 关于记录鼠标操作轨迹的方法,很少提到关于时间的记录。 因为在写一个关于游戏的脚本,为了尽可能地还原真人鼠标操作防止封号,鼠标点击的时间间隔是其中尤为重要的一点。代码监听了鼠标的...
  • import cv2 import numpy as np # 图片路径 img = cv2.imread('./258-1/处理/RK03AA8U142922_02_145444_ok.jpg') a = [] b = [] def on_EVENT_LBUTTONDOWN(event, x, y, flags, param): if event == cv2.EVENT_...
  • python查看鼠标坐标方法

    千次阅读 2020-10-12 17:17:28
    python查看鼠标坐标方法 该方法主要是在制作简单的游戏脚本时, 用于获取点击参数时使用 import pymouse print('点击回车查看当前鼠标的坐标') while True: _ = input() # input起到阻塞程序的作用 print(pymouse....
  • 本文实例讲述了Python PyAutoGUI模块控制鼠标和键盘实现自动化任务。分享给大家供大家参考...pyautogui模块的功能:移动鼠标点击左右键和滚轮发送虚拟按键# 安装pyautogui这个模块支持Windows, Mac OS X 和 Linux...
  • Python 模拟鼠标操作

    千次阅读 2013-02-06 06:36:56
    干久了程序员多少都会有使用鼠标的手感觉不适的时候,所以就会换一下手来使鼠标,但是每次换来换去很麻烦,所以我写了一段Python的小程序,操作鼠标移动和点击,来完成交换鼠标按键的操作。代码如下: import sub...
  • 模拟鼠标点击,模拟键盘;...使用Python来模拟鼠标点击 2014-06-09 16:087442人阅读评论(0)收藏举报 分类: python(18) 使用Python来模拟鼠标点击 转载自http://blog.163.com/oatnehc0924@1...
  • 主要介绍了Python实现鼠标自动在屏幕上随机移动功能,具有很好的参考价值,希望对大家有所帮助。还等什么?一起跟随小编过来看看吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,132
精华内容 8,452
关键字:

python检测鼠标点击

python 订阅