关于鼠标移动的修复 #00

缘由

  • 关于 1.12.2 及以前版本
    • 咱们在项目一开始就很希望加入鼠标移动的功能,但是由于对 WindowsAPI 的不熟悉,咱们并没有办法在焦点不在MC窗口时操作鼠标移动,因此咱们只能退而求其次使用全局的方法操作。想到全局的方法,咱第一时间想到的是 SetCursorPos() 函数,确实咱成功了,但在Xiao_Jin 测试时却失效了,在不断的测试下咱们了解到MC在海洋更新之后对鼠标移动做出了破坏性的修改
  • 关于1.12.2以上版本
    • 既然想到是MC更新产生的变化,咱们便当机立断决定分析MC的源码,但很明显咱们三人之中没有人会Java语言,咱们凭借别的语言的基础完全无法理解 Bugjang Mojang高深的代码,咱们只得放弃。

转折

在 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大佬愿意帮助咱们的话,咱们将感激不尽