2009-06-30 6 views
1

У меня есть приложение, написанное на .NET. Я хотел бы добавить возможность для пользователей управлять моим приложением с помощью мыши, например. высокопроизводительная игровая мышь с 10-15 кнопками на ней.Управление мышью на C#

Это будет легко сделать, или мне нужен поставщик мыши с .NET SDK, который я могу использовать - можете ли вы порекомендовать кого-нибудь?

Я хотел бы, чтобы весь элемент управления находился в моем приложении и просто использовал драйвер продавцов мыши.

+0

Использование драйверов поставщиков будет не таким простым, и я не видел никаких .Net SDK для такого рода вещей, но вы могли бы попробовать загрузить Spy ++ и играть с высокой конечной мышью и наблюдать за событиями. Если вам повезет, вы сможете получить от этого то, что вам нужно. – SpaceghostAli

+0

Еще одна хорошая идея, спасибо. – 2009-06-30 15:40:02

ответ

1

Исправьте меня, если я ошибаюсь, но не все эти дополнительные кнопки на мышах обычно отображают какую-то комбинацию клавиш (часто есть приложение панели управления, которое позволяет указать, к какой кнопке отображается какая). Если это так, вы должны иметь возможность захватывать кнопку четыре и выше, используя события KeyDown и KeyUp.

+0

Это на самом деле неплохая идея, я буду исследовать это! – 2009-06-30 15:39:20

0

В окнах, всякий раз, когда вы нажимаете что-то, оно проходит через очередь сообщений win32. Here is some code to check how to retrieve those messages

Теперь (вам обязательно понадобится 15-кнопочная мышь), точка торможения или Консоль :: сценарий или что-то еще внутри этого кода, нажмите кнопку мыши и нажмите, вы можете получить номер сообщения, который был просто нажат.

После этого вы можете проверить, можете ли вы связать эти нажатия клавиш на обычных обработчиках событий.

Обратите внимание, что решение об управлении оборудованием поставщика не очень переносимо. Предположим, что у всех есть мыши Microsoft, но я решил купить 20-кнопочную мышь, скажем, в Гонконге, вам нужно будет написать новый код для поддержки этого. Я думаю, вы должны быть направлены на очень общих решениях

+0

Мои пользователи будут использовать специальную мышь aq, которую я порекомендую, поэтому, если я смогу захватить все сообщения, тогда этого будет достаточно. – 2009-06-30 15:34:51

0

Вы можете попытаться получить сообщения для Windows, например, в WinForms вы можете переопределить метод вашей формы, чтобы получить все сообщения:

protected override void WndProc(ref Message msg) 
    { 
     Console.WriteLine(
      "HWnd:{0}\tLParam:{1}\tWParam:{2}\tMsg:{3}\tResult:{4}", 
      msg.HWnd, msg.LParam, msg.WParam, msg.Msg, msg.Result); 
     base.WndProc(ref msg); 
    } 

И играть немного с помощью мыши, чтобы узнать, какие сообщения вы должны принять.

+0

Я буду использовать WPF, но я могу использовать формы Windows. Лучше ли видеть, могу ли я ловить сообщения в winforms, а затем использовать p/invoke в WPF? – 2009-06-30 15:37:02

 Смежные вопросы

  • Нет связанных вопросов^_^