znalazłem ten mały kawałek kodu, aby zarejestrować skrótu:zarejestrować więcej niż jeden klawisz skrótu z 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');
}
działa idealnie, ale mój problem jest chcę użyć dwóch różnych skrótów. Wiem, że drugi parametr jest identyfikatorem, więc wyobrażam sobie, że mógłbym wprowadzić inny identyfikator i dodać nową instrukcję if w funkcji WndProc, ale nie jestem pewien, jak by to osiągnąć.
Krótko mówiąc, w jaki sposób utworzyć drugi skrót?
Dzięki,
'GetHashCode()' jako ID jest podzielony na dwa sposoby. 1) Dwa typy mogą mieć ten sam skrót 2) Używa złego zasięgu. "Aplikacja musi określać wartość id w zakresie od 0x0000 do 0xBFFF. Udostępniona biblioteka DLL musi określać wartość z zakresu od 0xC000 do 0xFFFF (zakres zwracany przez funkcję GlobalAddAtom). Aby uniknąć konfliktów z identyfikatorami skrótów zdefiniowanymi przez inne udostępnione DLL, biblioteka DLL powinna korzystać z funkcji GlobalAddAtom w celu uzyskania identyfikatora skrótu. " – CodesInChaos