缘由
- 关于 1.12.2 及以前版本
- 咱们在项目一开始就很希望加入鼠标移动的功能,但是由于对 WindowsAPI 的不熟悉,咱们并没有办法在焦点不在MC窗口时操作鼠标移动,因此咱们只能退而求其次使用全局的方法操作。想到全局的方法,咱第一时间想到的是
SetCursorPos()
函数,确实咱成功了,但在Xiao_Jin 测试时却失效了,在不断的测试下咱们了解到MC在海洋更新之后对鼠标移动做出了破坏性的修改
- 咱们在项目一开始就很希望加入鼠标移动的功能,但是由于对 WindowsAPI 的不熟悉,咱们并没有办法在焦点不在MC窗口时操作鼠标移动,因此咱们只能退而求其次使用全局的方法操作。想到全局的方法,咱第一时间想到的是
- 关于1.12.2以上版本
- 既然想到是MC更新产生的变化,咱们便当机立断决定分析MC的源码,但很明显咱们三人之中没有人会Java语言,咱们凭借别的语言的基础完全无法理解
BugjangMojang高深的代码,咱们只得放弃。
- 既然想到是MC更新产生的变化,咱们便当机立断决定分析MC的源码,但很明显咱们三人之中没有人会Java语言,咱们凭借别的语言的基础完全无法理解
转折
在 Cheny 不断地试验下,咱们发现可以用 SendInput()
函数实现鼠标移动,但是咱和 Xiao_Jin 发现在 win32api 这个Python轮子里面并没有 SendInput()
,这也是这篇文章诞生的原因。
解决方法
- 咱们可以另找别的方法
- 这明显不是一个好方法,不到万不得已咱们不会去尝试这种不算方法的方法
- 咱们可以用 C++ 写一个Python轮子
- 但是问题又来了,咱们三个中并没有人会用 C++ 写 Python 的轮子,在咱们三个人中 Xiao_Jin 会写前端和 Python( Python 写得很好),Cheny C++ 写得很好,咱只会最基础的 C++ 和 Python,让咱们三个现学显然是不现实的。
- 咱们可以用 C++ 写一个外部程序(这也是最后被采纳的方法)
- Cheny 学业繁忙(虽然咱们都很忙)所以写外部程序他不能胜任,所有,这个重担(可能很简单,但咱的 C++ 很烂)就交到了咱的手上。
现状
咱已把这个外部程序写出来了但是它表现得很不正常(吃了C++没学好的亏了)
请不要吐槽咱蹩脚的C++技术,咱会伤心的。 很显然咱们还需呀很长的时间调试这个程序,但可以保证的是咱们可以在月底之前完成鼠标移动的修复。
求援
如果有Java大佬愿意帮助咱们的话,咱们将感激不尽