【问题标题】:Using Mono to Click the Mouse in C# - Mac OS在 C# 中使用 Mono 单击鼠标 - Mac OS
【发布时间】:2011-06-18 21:43:24
【问题描述】:

我已经编写了一个应用程序(wpf - Mono 会为 Mac 翻译这个吗?),我希望以某种方式移植到 Mac OS X。这个应用程序涉及使用 user32.dll 来执行鼠标点击(类似这样):

[DllImport("user32.dll")]
    static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
 mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

我听说 Mono 对于为多个平台制作应用程序很有用 - 有没有一种方法可以让我的代码与 Mac 兼容?

如果没有,有没有一种方法可以使用 Mac 等效的 user32.dll 调用鼠标单击?还有一种方法可以检测程序是在 Windows 还是 Mac OS 中运行来选择运行哪一段代码?

【问题讨论】:

  • 您是在尝试针对您的应用程序中的某些内容还是针对其他应用程序生成鼠标点击
  • 我正在尝试点击另一个应用程序 - 我的应用程序在运行时已最小化。
  • Mono 与 WPF 不兼容。您需要使用 WinForms。我花了很多时间在 Mac 上搜索 user32.dll 的等效版本,但找不到 mouse_event 的“托管”版本。

标签: c# macos mono click mouseevent


【解决方案1】:

Mono 目前不打算支持 WPF,请参阅 Link
看看这个SO question 看看它是否有帮助,您可能想考虑使用 Silverlight,因为它在 Mac 上受 Microsoft 支持。

【讨论】:

    【解决方案2】:

    另外,您正在调用 Win32 本机函数 - Mac 不支持这些函数。最好的选择是使用跨平台的 .NET 严格代码。

    【讨论】:

    • 你知道我可以使用什么 .NET-strict 代码来执行鼠标点击吗?我以前研究过它,但如果不使用 user32.dll 就找不到怎么做...
    • 这是一项与系统相关的功能——您必须直接在 Windows 中调用 API,因为它没有 .NET 实现。 Mac (stackoverflow.com/questions/1483657/…) 也有类似的功能,但我不确定你是否可以在 Mono 中使用它。
    【解决方案3】:

    Mono 不支持 WPF,并且目前没有未来支持它的计划。我自己在周末研究了这个。

    如果您打算在 GUI 应用程序中使用 mono,我建议您改用 WinForms,因为这是在 Mono 中实现的。

    这里是 Mono 实现的功能的完整列表 - http://mono-project.com/Compatibility

    【讨论】:

    • 这不能回答问题;他问的是是否有等效的方法可以在 OS X 上使用 Mono 模拟鼠标单击,而不是是否可以移植 WPF 应用程序。
    【解决方案4】:

    你可以试试看苹果的CG API,里面有个函数CGEventCreateMouseEvent

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多