2009-02-28 17 views
7

voglio creare un'applicazione di utilità di Windows, che può essere chiamato in qualsiasi momento da qualsiasi altra applicazione che utilizza una scorciatoia da tastiera, ad esempio:Come registrare una scorciatoia da tastiera personalizzata per un'applicazione Windows

Win + T

Ctrl +T

Alt + T

Ctrl + Alt + T

Ctrl + Maiusc + T

Quali combinazioni chiave che posso utilizzare e come per configurare quelli nel registro di Windows?

(Se il collegamento viene utilizzato da un altra applicazione, si dovrebbe ovviamente non funziona.)

+0

Stai chiedendo di impostare queste scorciatoie in modo programmatico o manuale? – Sung

+0

Cos'è STRG? È lo stesso di CTRL? –

+1

STRG è il nome tedesco per CTRL :) –

risposta

6

Un'opzione per farlo programatically quando il vostro inizio applicazione chiama questa API di Windows:

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

E per annullare la registrazione di chiamare questa API:

UnregisterHotKey(IntPtr hwnd, int id); 

Sia esiste in user32 API

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

+0

Works for Programmatic shortcut assignment – Sung

+0

Che funziona solo mentre il programma è in esecuzione giusto? –

+0

@ TimLovell-Smith sì corretto –

1

Se l'applicazione (o un collegamento ad esso) è disponibile sul desktop, è possibile fare clic destro per ottenere il menu di scelta rapida, selezionare Proprietà e inserire il tasto di scelta rapida lì. Basta fare clic sul campo di testo Tasto di scelta rapida e premere il tasto di scelta rapida desiderato.

Ho assegnato WIN + C alla mia calcolatrice, e WIN + V al mio controllo del volume.

+0

Works for Manual shortcut assignment – Sung

+0

È divertente. Questo sembra funzionare solo per applicazioni "native". Poiché tutte le applicazioni che ho creato in winforms C# non hanno questa impostazione nella finestra di dialogo delle proprietà quando fai clic con il pulsante destro sul file sul desktop –

+1

Stai pensando [su SuperUser] (http://superuser.com/q/424782/69392) se c'è un archivio centralizzato per quei tasti di scelta rapida. Sospetto che sia nel registro. Ora sembra che tu stia insinuando che il set di scorciatoie "sul tuo desktop" sia scansionato per mappature hotkey. Qualche suggerimento per maggiori dettagli? – Lumi

1

Se è necessario uno scenario più avanzato a ciò che offre la scelta rapida della shell, è necessario iniziare con la lettura di Win32 Hooks e Hooks Overview.

In particolare, è necessario aggiungere un gancio WH_KEYBOARD utilizzando la funzione SetWindowsHookEx. Devi anche sganciare UnhookWindowsHookEx quando hai finito.

C'è un vecchio articolo di Dino Esposito su come eseguire Windows Hooks in .NET tramite l'interoperabilità di Win32.

+0

Works for Programmatic shortcut assignment – Sung

0

Temo che questo non è qualcosa che puoi fare semplicemente impostando i valori nel registro, è come è stato indicato in altre risposte necessarie per chiamare alcune routine API di Windows per raggiungere questo obiettivo.

Problemi correlati