【问题标题】:LEAP Motion C# XAML WPF ApplicationLEAP Motion C# XAML WPF 应用程序
【发布时间】:2025-11-30 21:05:01
【问题描述】:

我正忙于制作一个可以将 Leap 用作鼠标的应用程序。我正在使用 C# 和 XAML 制作 WPF 应用程序。 我已经可以移动光标,但是我在制作激活鼠标左键的功能时遇到了问题。 有人可以帮我解决这个问题吗?我需要激活在 XAML 中创建的按钮。 另一种解决方案可能是当 de Leap 光标在按钮上大约 3 秒时激活按钮的功能。我在互联网上找不到任何示例。有人对我有简单的基本程序或示例吗?请帮忙!

这是我已经拥有的应用程序的链接。也许它有帮助 https://www.dropbox.com/sh/kp51hdbhcacaky7/pdinDQpA-6

【问题讨论】:

  • 这是处于前沿的成本。您不能将手指捏合之类的东西翻译成鼠标左键单击吗?还是导致 WPF 认为是点击的问题?
  • 我的应用程序可以识别滑动或点击等手势。但是这些手势不能被编程为mousclick,因为做出手势意味着鼠标将移动并且不再位于按钮上。我可以将跳跃光标放在按钮上,但不知道如何激活它。但是用真正的鼠标可以激活它! (我有两个光标)。也许我不能在跳跃光标后面编程鼠标功能?我真的不知道问题出在哪一部分。它可以是 Leap SDK、XAML 或 WPF。也许 Leap SDK 还不能实现?
  • 如果你想让它像鼠标一样工作,你可以将点击输入事件发送到操作系统,然后它会生成普通的鼠标事件。 Windows API SendInput 函数可以做到这一点(msdn.microsoft.com/en-us/library/windows/desktop/…)——但我不知道这在 C#/XAML 中是否可用。否则,您将需要一个函数来查找光标下的控件并以编程方式激活它。

标签: c# wpf xaml mouse leap-motion


【解决方案1】:

关于“鼠标悬停按钮”的事情——你可以试试这个解决方案(对我有用):

  1. 为按钮创建悬停事件(鼠标进入/离开)
  2. 为类似“isHovered”创建一个布尔标志(如果悬停则为 true,否则为 false)
  3. 启动一个 DispacherTimer,设置它的 Tick(3 秒?)
  4. 勾选鼠标点击(上一个答案)

希望它停止:)

【讨论】:

    【解决方案2】:

    试试这个:

    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
    
        private const int MOUSEEVENTF_LEFTDOWN = 0x02;
        private const int MOUSEEVENTF_LEFTUP = 0x04;
        private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
        private const int MOUSEEVENTF_RIGHTUP = 0x10;
    
        public static void DoMouseClick()
        {
                Point mousePoint = GetMousePosition();
                mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, (int)mousePoint.X, (int)mousePoint.Y, 0, 0);
        }
    

    【讨论】: