Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

其实这个key mouse库不是很好, 用pyautogui结合pydirectinput这两个库的鼠标键盘功能会更好用 #286

Open
delevinzhong opened this issue Apr 5, 2024 · 8 comments

Comments

@delevinzhong
Copy link

pyautogui 可供普通情况的使用
pydirectinput 可以在例如游戏的场景中正常使用鼠标键盘功能

@delevinzhong
Copy link
Author

仔细看了源代码,发现作者在linux下用的是pyautogui, 在windows下用的是win32api, 不是很明白其实windows下用pydirectinput有什么问题吗? 因为游戏场景中,pydirectinput会更实用。

@Monomux
Copy link
Collaborator

Monomux commented Apr 8, 2024

没问题,可以换,虽然说对于有反作弊系统的游戏来说用哪个库都一样。

@viprespro
Copy link

pydirectinput

就我测试的情况来看 有个问题我没想通 我在windows上测试 游戏里面我使用pyautogui与pydirectinput去模拟按键都不行 如果作者是使用这两个库来模拟按键的话 按道理应该也不行 但是我用录制的点击游戏画面的时候 却能执行成功 这让我有点费解?

@delevinzhong
Copy link
Author

pydirectinput

就我测试的情况来看 有个问题我没想通 我在windows上测试 游戏里面我使用pyautogui与pydirectinput去模拟按键都不行 如果作者是使用这两个库来模拟按键的话 按道理应该也不行 但是我用录制的点击游戏画面的时候 却能执行成功 这让我有点费解?

你测试作者的程序在游戏中能用吗? 作者代码里面Linux用的是pyautogui,Windows下用的是win32api,不过我测试QQ飞车是用不了。不过我不是很明白为什么Windows下没有选择用pydirectinput,不知道是不是代码在定位像素点或者其他方面遇到有问题。但是我自己写的windows下用pydirectinput在游戏中是可以使用,前提是你执行的时候要用管理员运行程序就没问题。所以你可以试试管理员权限运行,pydirectinput这个库应该是没问题的。

@ZutJoe
Copy link
Collaborator

ZutJoe commented Apr 14, 2024

你测试作者的程序在游戏中能用吗? 作者代码里面Linux用的是pyautogui,Windows下用的是win32api,不过我测试QQ飞车是用不了。不过我不是很明白为什么Windows下没有选择用pydirectinput,不知道是不是代码在定位像素点或者其他方面遇到有问题。但是我自己写的windows下用pydirectinput在游戏中是可以使用,前提是你执行的时候要用管理员运行程序就没问题。所以你可以试试管理员权限运行,pydirectinput这个库应该是没问题的。

其实算是历史遗留问题,这个项目本身最开始就是为了方便作者在 windows 上面做重复操作才做的(大概),而且不是为了游戏做的 #121 (comment) #156 (comment) ,至于适配 linux 是后面才做的

@viprespro
Copy link

pydirectinput

就我测试的情况来看 有个问题我没想通 我在windows上测试 游戏里面我使用pyautogui与pydirectinput去模拟按键都不行 如果作者是使用这两个库来模拟按键的话 按道理应该也不行 但是我用录制的点击游戏画面的时候 却能执行成功 这让我有点费解?

你测试作者的程序在游戏中能用吗? 作者代码里面Linux用的是pyautogui,Windows下用的是win32api,不过我测试QQ飞车是用不了。不过我不是很明白为什么Windows下没有选择用pydirectinput,不知道是不是代码在定位像素点或者其他方面遇到有问题。但是我自己写的windows下用pydirectinput在游戏中是可以使用,前提是你执行的时候要用管理员运行程序就没问题。所以你可以试试管理员权限运行,pydirectinput这个库应该是没问题的。

我特意对我的游戏再次测试 开启录制 - 鼠标点击游戏画面任务进行移动 - 结束录制 然后我启动脚本 确实能够正常执行 pyautogui和pydirectinput我都测试过不行 是以管理员身份运行的 可能他们底层都有基于win32api去调用发送消息 然而对于按键 我测试的游戏是应该是屏蔽了这种窗口消息 但是我找到另外其他方式 凡是以驱动级按键去调用点击都能成功,所以我比较疑惑的点 作者的这个库按键真的不是驱动级的吗 希望作者可以看到解答一下疑惑。

@Monomux
Copy link
Collaborator

Monomux commented Apr 14, 2024

pyautogui和pydirectinput我都测试过不行

奇怪,PyAutoGUI,PyDirectInputPyWin32在Windows系统下底层都是通过调用系统api实现操作的吧,下面是我找到的一些资料:

Windows相关的接口为mouse_event, SendInput, keybd_event
PyAutoGUIPyDirectInput分别使用了cpythonctypes库给出的mouse_event, keybd_eventSendInput系统接口
PyWin32使用了mouse_event, keybd_event系统接口

@viprespro
Copy link

pyautogui和pydirectinput我都测试过不行

奇怪,PyAutoGUI,PyDirectInputPyWin32在Windows系统下底层都是通过调用系统api实现操作的吧,下面是我找到的一些资料:

Windows相关的接口为mouse_event, SendInput, keybd_event PyAutoGUIPyDirectInput分别使用了cpythonctypes库给出的mouse_event, keybd_eventSendInput系统接口 PyWin32使用了mouse_event, keybd_event系统接口

应该没错 windows平台下都是调用系统api实现 我测试的游戏 我发现只是对鼠标屏蔽 部分按键还是可以用 鼠标则当使用驱动级的调用就没问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants