热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Python】关于Win32后台,鼠标移动,坐标偏移问题解决方法

下面这段代码按理来说应该没有任何问题。就是在A点按下鼠标左键,移动到B点放开鼠标。然而问题还是出现了,下面有运行结果。importwin32api,win32gui,win32co

下面这段代码按理来说应该没有任何问题。

就是在A点按下鼠标左键,移动到B点放开鼠标。

然而问题还是出现了,下面有运行结果。



import win32api,win32gui,win32con
# win32gui.FindWindow(类名,标题) 获取父级窗口句柄
Hand1 = win32gui.FindWindow('LDPlayerMainFrame','雷电模拟器(64)')
print(Hand1)
# win32gui.FindWindowEx(父级窗口句柄,None,类名,标题) 获取子级窗口句柄
Hand2 = win32gui.FindWindowEx(Hand1,None,'RenderWindow', 'TheRender')
print(Hand2)
def Move(X1,Y1,X2,Y2):
temp = win32api.MAKELONG(X1,Y1)
win32api.SendMessage(Hand2, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, temp) # 鼠标按下
temp1 = win32api.MAKELONG(X2,Y2)
win32api.SendMessage(Hand2, win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON, temp1) # 鼠标移动
win32api.SendMessage(Hand2, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, temp1) # 鼠标弹起
Move(1832,1002,942,574)

按照下面的运行结果来看,上面的代码并没有被正确的执行。

如果只是一组坐标的点击,并不会有任何问题。

然而只要加入第二组移动坐标,以下的问题就会出现。

昨天研究了一整天,试了各种方法,试图让坐标被正确读取,甚至想着它是不是把窗口分成了四等份,说起来都是泪。

下面是最后找到的解决方法。



我们再来看上面这张图,距离目标点是不是有着一倍的差距。

没错,这就是最后的解决方法,好蠢 ╮( ̄▽ ̄)╭

所以坐标只需要重新计算一下即可。

    X2 = X2 – (X1 – X2)

    Y2 = Y2 – (Y1 – Y2)

下面来看看最后的运行结果



import win32api,win32gui,win32con,time
# win32gui.FindWindow(类名,标题) 获取父级窗口句柄
Hand1 = win32gui.FindWindow('LDPlayerMainFrame','雷电模拟器(64)')
print(Hand1)
# win32gui.FindWindowEx(父级窗口句柄,None,类名,标题) 获取子级窗口句柄
Hand2 = win32gui.FindWindowEx(Hand1,None,'RenderWindow', 'TheRender')
print(Hand2)
def Move(X1,Y1,X2,Y2):
temp = win32api.MAKELONG(X1,Y1)
win32api.SendMessage(Hand2, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, temp) # 鼠标按下
# 坐标的重新计算
X2 = X2 - (X1 - X2)
Y2 = Y2 - (Y1 - Y2)
temp1 = win32api.MAKELONG(X2,Y2)
win32api.SendMessage(Hand2, win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON, temp1) # 鼠标移动
win32api.SendMessage(Hand2, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, temp1) # 鼠标弹起
Move(1832,1002,942,574)

 

 运行正确

大家也可以拿去试试,虽然过程很蠢,但是问题总算解决了。


来源:鱼儿丨



推荐阅读
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
author-avatar
快乐的芙蓉HAPPY
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有