c# mono keyboard-hook

C#Mono-Gancho de teclado de bajo nivel



keyboard-hook (2)

No es posible obtener este comportamiento usando solo .Net. Debe usar un controlador binario para cada plataforma en la que se ejecute (Windows, Linux, Mac OS). Podría ser posible usar solo P / Invoke (detectar en qué SO se está ejecutando, llamar a las bibliotecas de sistema apropiadas) para que no tenga que distribuir ningún dll / so / dylib "adicional".

Estoy usando el código que encontré en CodeProject.com para un gancho de teclado de bajo nivel . El único problema es que utiliza llamadas DLL externas que no funcionan en mono. Me preguntaba si alguien sabía de una forma de lograr lo mismo que ese código, pero se ejecutará tanto en Windows usando .net como en Linux usando mono.

Editar: Aclarando lo que estoy tratando de hacer: estoy haciendo una aplicación similar a la del Tablero . El programa se encuentra en la bandeja del sistema y cuando el usuario presione la tecla de acceso rápido, se mostrarán todos los gadgets. Por lo tanto, el programa no tiene foco, por lo que normalmente no capturará ninguna pulsación de tecla, por lo que estoy usando el gancho del teclado de bajo nivel y engancho las dos teclas que el usuario define como las teclas rápidas. Pero estoy usando una llamada a DLL de Windows para eso, que no funciona en Linux usando mono. Entonces, me pregunto si hay una manera de hacer lo mismo, pero ¿se ejecutará en Linux usando mono?


Sin saber lo que está tratando de capturar, es difícil estar seguro de lo que funcionará para usted. Es posible que desee consultar el uso de Application.AddMessageFilter.

Un ejemplo está aquí: http://dn.codegear.com/article/30129