Приложение LEAP Motion C# XAML WPF

Я занят созданием приложения, в котором я могу использовать Leap в качестве мыши. Я делаю приложение WPF с С# и XAML. Я уже могу двигать курсор, но у меня проблемы с функцией активации левой кнопки мыши. Может ли кто-нибудь помочь мне с этой проблемой? Мне нужно активировать кнопки, созданные в XAML. Другим решением может быть функция, которая активирует кнопку, когда курсор de Leap находится на кнопке примерно 3 секунды. Я не могу найти примеры в Интернете. У кого-нибудь есть простая базовая программа или пример для меня? Пожалуйста помоги!

Вот ссылка на приложение, которое у меня уже есть. Возможно, это поможет https://www.dropbox.com/sh/kp51hdbhcacaky7/pdinDQpA-6< /а>


person user2790929    schedule 18.09.2013    source источник
comment
Это цена того, чтобы быть на переднем крае. Вы не можете перевести что-то вроде щипка пальца в щелчок левой кнопкой мыши? Или проблема вызывает то, что WPF считает щелчком мыши?   -  person Adam Houldsworth    schedule 18.09.2013
comment
Мое приложение может распознавать жесты, такие как смахивание или касание. Но эти жесты нельзя запрограммировать как щелчок мышью, потому что выполнение этого жеста означает, что мышь будет двигаться и больше не будет находиться на кнопке. Я могу удерживать курсор прыжка на кнопке, но не знаю, как его активировать. Но с настоящей мышкой его можно активировать! (у меня два курсора). Может быть, я не могу запрограммировать функции мыши за курсором прыжка? Я действительно не знаю, в какой части проблема. Это может быть Leap SDK, XAML или WPF. Может быть, это пока невозможно с Leap SDK?   -  person user2790929    schedule 18.09.2013
comment
Если вы хотите, чтобы он работал как мышь, вы можете отправлять события ввода щелчка в ОС, которая затем генерирует обычные события мыши. Это может сделать функция Windows API SendInput (msdn.microsoft.com/en-us/library/windows/desktop/) -- но я не знаю, доступно ли это в C#/XAML. В противном случае вам понадобится функция, которая находит элемент управления, находящийся под вашим курсором, и программно активирует его.   -  person Charles Ward    schedule 23.09.2013


Ответы (2)


Что касается «кнопки мыши над кнопкой» - вы можете попробовать это решение (сработало для меня):

  1. создать событие наведения для кнопок (ввод/выход мыши)
  2. создать логический флаг для типа «isHovered» (true, если наведен курсор, false, если нет)
  3. запустите DispacherTimer, установите его Tick (3 секунды?)
  4. на Tick сделать щелчок мышью (предыдущий ответ)

надеюсь, это уменьшилось :)

person Damian Legęza    schedule 24.06.2014

попробуй это:

[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);
    }
person Damian Legęza    schedule 24.06.2014