为什么不推荐使用 mouse_event?

Dus*_* E. 2 c# windows mouseevent

我目前正在遵循一个简单的自动点击应用程序的指南。我正在使用的指南利用mouse_event.

我所看到的任何地方都说它mouse_event已被弃用,并且最好使用SendInput,但我还没有找到您应该使用一个而不是另一个的实际原因。

甚至关于mouse_event的文档也指出“改用 SendInput”。

我的大部分经验都在 Java 中,我非常熟悉 thread.stop() 被弃用,因为它很危险。我正在寻找相同类型的解释。

Han*_*ant 5

VOID WINAPI mouse_event(
  _In_  DWORD dwFlags,
  _In_  DWORD dx,
  _In_  DWORD dy,
  _In_  DWORD dwData,
  _In_  ULONG_PTR dwExtraInfo
);
Run Code Online (Sandbox Code Playgroud)

这是 mouse_event() 的声明。在你完成了一些 winapi 编程之后,这个函数有什么问题就会变得非常明显。 它没有任何方式表明失败。keybd_event() 函数也有同样的问题。例如,您可以为 dwFlags 传递垃圾值,如果没有任何办法找出原因,它就无法工作。

几乎所有的 winapi 函数都有一个返回值,BOOL 或 HANDLE 是典型的。这让函数报告失败。您通常会在接下来调用 GetLastError() 以找出问题所在。

就像 SendInput() 那样。

  • 它永远不会消失,太多旧程序依赖于它。一个很好的机会是为 x64 放弃它。他们没有。 (2认同)