C # Mono - Крючок для клавиатуры низкого уровня - PullRequest
4 голосов
/ 26 сентября 2008

Я использую код, который я нашел на CodeProject.com для низкоуровневого подключения клавиатуры . Единственная проблема заключается в том, что он использует внешние вызовы DLL, которые не работают в моно. Мне было интересно, если кто-нибудь знает способ выполнить то же самое, что и этот код, но будет ли работать как в Windows, используя .net, так и в Linux, используя моно?

Изменить: Уточнение того, что я пытаюсь сделать: Я создаю приложение, похожее на Dashboard . Программа находится в системном трее, и когда пользователь нажимает горячую клавишу, она выскакивает все гаджеты. Так что программа не имеет фокуса, поэтому обычно она не улавливает нажатий клавиш, поэтому я использую низкоуровневую клавиатуру и подключаю две клавиши, которые пользователь определяет как горячие клавиши. Но я использую для этого вызов Windows DLL, который не работает в Linux с использованием моно. Так что мне интересно, есть ли способ сделать то же самое, но будет ли работать в Linux с использованием моно?

Ответы [ 2 ]

4 голосов
/ 26 сентября 2008

Не зная, что вы пытаетесь захватить, трудно быть уверенным, что сработает для вас. Возможно, вы захотите посмотреть, используя Application.AddMessageFilter.

Пример здесь: http://dn.codegear.com/article/30129

3 голосов
/ 26 сентября 2008

Невозможно получить такое поведение, используя только .Net. Вы должны использовать бинарный драйвер для каждой платформы, на которой вы работаете (Windows, Linux, Mac OS). Возможно, будет возможно использовать только P / Invoke (определить, на какой ОС вы работаете, вызвать соответствующие системные библиотеки), чтобы вам не приходилось распространять «лишние» dll / so / dylib.

...