2

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

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

甚至关于mouse_event的文档也声明“改为使用 SendInput”。

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

4

2 回答 2

5
VOID WINAPI mouse_event(
  _In_  DWORD dwFlags,
  _In_  DWORD dx,
  _In_  DWORD dy,
  _In_  DWORD dwData,
  _In_  ULONG_PTR dwExtraInfo
);

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

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

就像 SendInput() 一样。

于 2013-09-02T15:57:53.303 回答
1

mouse_event会立即让您考虑具有鼠标的设备,而不是所有设备。

因此,当您考虑任何可以处理触摸手势的设备时,就像许多移动设备和平板电脑一样,拥有一个代表它们的类要好得多;它还可能让开发人员考虑它需要处理或发送的所有其他类型的输入,以便在尽可能多的设备上工作

于 2013-09-02T15:57:36.073 回答