2013-09-18 2 views
2

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

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

+0

Это стоимость, чтобы быть на переднем крае. Не можете ли вы перевести что-то вроде пальца в щелчок левой кнопкой мыши? Или проблема, вызвавшая то, что думает WPF, - это клик? –

+0

Мое приложение может распознавать жесты, такие как промах или метчики. Но эти жесты не могут быть запрограммированы как mouscick, потому что выполнение жеста означает, что мышь будет двигаться и больше не будет на кнопке. Я могу удерживать курсор прыжка на кнопке, но не знаю, как его активировать. Но с реальной мышью он может быть активирован! (у меня есть два курсора). Может быть, я не могу программировать функции мыши за курсором прыжка? Я не знаю, в какой части проблема. Это может быть Leap SDK, XAML или WPF. Возможно, это невозможно с помощью Leap SDK? – user2790929

+0

Если вы хотите, чтобы он работал, как мышь, вы можете отправлять события ввода кликов в ОС, которые затем генерируют обычные события мыши. Функция SendInput Windows API может это сделать (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx) - но у меня нет знаний сказать, доступно ли это в C#/XAML. В противном случае вам понадобится функция, которая обнаруживает, какой элемент управления находится под вашим курсором, и активировать его программно. –

ответ

0

попробовать это:

[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); 
    } 
1

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

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

надеюсь, что это halped :)