Ho trovato questo piccolo pezzo di codice per registrare un tasto di scelta rapida:Registrati più di un tasto di scelta rapida con RegisterHotKey
[DllImport("user32.dll")]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312)
MessageBox.Show("Hotkey pressed");
base.WndProc(ref m);
}
public FormMain()
{
InitializeComponent();
//Alt + A
RegisterHotKey(this.Handle, this.GetType().GetHashCode(), 1, (int)'A');
}
Funziona perfettamente, ma il mio problema è che voglio usare due collegamenti diversi. So che il secondo parametro è l'id, quindi immagino di poter creare un ID diverso e aggiungere una nuova istruzione if nella funzione WndProc ma non sono sicuro di come procedere.
In breve, come dovrei fare per creare una seconda scorciatoia?
Grazie,
'GetHashCode()' come ID è rotto in due modi. 1) Due tipi possono avere lo stesso hash 2) Utilizza l'intervallo sbagliato. "Un'applicazione deve specificare un valore id nell'intervallo da 0x0000 a 0xBFFF. Una DLL condivisa deve specificare un valore nell'intervallo 0xC000 tramite 0xFFFF (l'intervallo restituito dalla funzione GlobalAddAtom). Per evitare conflitti con identificatori di tasti di scelta rapida definiti da altri condivisi DLL, una DLL dovrebbe utilizzare la funzione GlobalAddAtom per ottenere l'identificatore della chiave di scelta rapida. " – CodesInChaos