2009-02-28 13 views
7

Quiero crear una aplicación de utilidad de Windows, que se puede llamar en cualquier momento desde cualquier otra aplicación que utiliza una combinación de teclas, por ejemplo:como registrar un atajo de teclado personalizado para un uso de las ventanas

Win + T

Ctrl +T

Alt + T

Ctrl + Alt + T

Ctrl + Shift + T

Qué combinaciones de teclas puedo utilizar y cómo para configurarlos en el registro de Windows?

(Si el acceso directo es utilizado por una otra aplicación, debe, por supuesto, no funciona.)

+0

¿Está solicitando establecer esos accesos directos de forma programática o manual? – Sung

+0

¿Qué es STRG? ¿Es esto lo mismo que CTRL? –

+1

STRG es el nombre en alemán de CTRL :) –

Respuesta

6

Una opción para hacer que programáticamente cuando el inicio de la aplicación está llamando a esta API de Windows:

RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk); 

Y para anular el registro de llamar a esta API:

UnregisterHotKey(IntPtr hwnd, int id); 

Tanto existe en user32 API

http://www.pinvoke.net/search.aspx?search=RegisterHotKey&namespace=[All]

+0

Funciona para la asignación de teclas de acceso directo programático – Sung

+0

¿Eso solo funciona mientras su programa se ejecuta correctamente? –

+0

@ TimLovell-Smith sí correcto –

1

Si su aplicación (o un acceso directo a ella) está disponible en el escritorio, puede hacer clic con el botón de obtener el menú contextual, seleccionar Propiedades e ingresar la tecla de acceso directo allí. Simplemente haga clic en el campo de texto de la tecla de método abreviado y presione la tecla de acceso directo deseada.

He asignado WIN +C a mi calculadora, y WIN +V a mi control de volumen.

+0

Funciona para la asignación de teclas de acceso directo Manual – Sung

+0

Eso es gracioso. Esto solo parece funcionar para aplicaciones 'nativas'. Como todas las aplicaciones que he hecho en winforms C# no tienen esa configuración en el cuadro de diálogo de propiedades cuando haces clic derecho en el archivo en el escritorio –

+1

Has estado preguntándome [en SuperUser] (http://superuser.com/q/424782/69392) si hay un almacenamiento centralizado para esas teclas rápidas. Sospecho que estar en el registro. Ahora parece que implica que el conjunto de accesos directos "en su escritorio" se escanea en busca de asignaciones de teclas de acceso rápido. ¿Alguna sugerencia para más detalles? – Lumi

1

Si necesita un escenario más avanzado para lo que ofrece el acceso directo de shell, debe comenzar con la lectura de Win32 Hooks y Hooks Overview.

Más específicamente, necesita agregar un gancho WH_KEYBOARD usando la función SetWindowsHookEx. También debe desenganchar a través del UnhookWindowsHookEx cuando haya terminado.

Hay un artículo antiguo de Dino Esposito sobre cómo hacer Windows Hooks in .NET a través de una interoperabilidad Win32.

+0

Funciona para la asignación de teclas de acceso directo programático – Sung

0

Me temo que esto no es algo que pueda hacer simplemente estableciendo valores en el registro, es como se ha indicado en otras respuestas necesarias para llamar a algunas rutinas de Windows API para lograr esto.

Cuestiones relacionadas