2009-02-28 9 views
7

Je veux créer une application utilitaire Windows, qui peut être appelé à tout moment à partir de toute autre application à l'aide d'un raccourci clavier, par exemple:Comment enregistrer un raccourci clavier personnalisé pour une application Windows

Win + T

Ctrl +T

Alt + T

Ctrl + Alt + T

Ctrl + Maj + T

Quelles combinaisons clés puis-je utiliser et comment configurer ceux dans le registre de Windows?

(Si le raccourci est utilisé par une autre application, il faut bien sûr pas fonctionner.)

+0

Demandez-vous de définir ces raccourcis par programmation ou manuellement? – Sung

+0

Qu'est-ce que c'est STRG? Est-ce la même chose que CTRL? –

+1

STRG est le nom allemand pour CTRL :) –

Répondre

6

Une option pour le faire programatically lorsque votre démarrage de l'application appelle cette API Windows:

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

Et pour désenregistrer appeler cette API:

UnregisterHotKey(IntPtr hwnd, int id); 

Les deux existent dans user32 API

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

+0

Fonctionne pour l'affectation de touches de raccourci programmatique – Sung

+0

Cela ne fonctionne que lorsque votre programme fonctionne correctement? –

+0

@ TimLovell-Smith oui correct –

1

Si votre application (ou un raccourci) est disponible sur votre bureau, vous pouvez cliquer droit à obtenir le menu contextuel, sélectionnez Propriétés et entrez la touche de raccourci là. Cliquez simplement dans le champ de texte Raccourci et appuyez sur la touche de raccourci désirée.

Je suis affecté WIN + C à ma calculatrice et WIN + V à mon contrôle du volume.

+0

Fonctionne pour l'affectation manuelle des touches de raccourci – Sung

+0

C'est marrant. Cela ne semble fonctionner que pour les applications «natives». Comme toutes les applications que j'ai faites dans winforms C# n'ont pas ce paramètre dans la boîte de dialogue des propriétés lorsque vous cliquez avec le bouton droit sur le fichier sur le bureau –

+1

Je me demandais [sur SuperUser] (http://superuser.com/q/424782/69392) s'il y a un stockage centralisé pour ces raccourcis clavier. Je suspecte que cela soit dans le registre. Maintenant, vous semblez impliquer que l'ensemble des raccourcis "sur votre bureau" est analysé pour les mappages de raccourcis clavier. Des pointeurs pour plus de détails? – Lumi

1

Si vous avez besoin d'un scénario plus avancé que celui proposé par le raccourci du shell, commencez par lire Win32 Hooks et Hooks Overview.

Plus précisément, vous devez ajouter un crochet WH_KEYBOARD en utilisant la fonction SetWindowsHookEx. Vous avez également besoin de décrocher UnhookWindowsHookEx lorsque vous avez terminé.

Il y a un vieil article de Dino Esposito comment faire Windows Hooks in .NET par le biais de certains interopérabilité Win32.

+0

Fonctionne pour l'affectation de touches de raccourci programmatique – Sung

0

Je crains que ce n'est pas quelque chose que vous pouvez faire en définissant simplement des valeurs dans le registre, c'est comme cela a été indiqué dans d'autres réponses nécessaires pour appeler certaines routines API Windows pour y parvenir.

Questions connexes