为什么不赞成使用mouse_event?

时间:2013-09-02 15:39:50

标签: c# windows mouseevent

我正在关注一个简​​单的自动点击应用程序指南。我正在使用的指南使用mouse_event

我看到的任何地方都说mouse_event 已弃用,并且最好使用SendInput,但我还没有找到为什么要使用其中一个的实际原因另一个。

即使mouse_event上的文档也说明了“使用SendInput”。

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

2 个答案:

答案 0 :(得分:3)

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()类似。

答案 1 :(得分:1)

mouse_event inmediatly让你想到一个有鼠标的设备,而不是所有设备。

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