Я взял на себя смелость исправить ссылку (и создал и добавил свежую ссылку на archive.org на будущее).
трял.
Прямо сейчас я использую следующий код для прослушивания горячих клавиш:
[DllImport("user32.dll")]
public static extern bool RegisterHotKey(IntPtr hWnd,
int id, int fsModifiers, int vlc);
[DllImport("user32.dll")]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312)
{
// whatever i need
}
base.WndProc(ref m);
}
и эта функция для регистрации горячей клавиши:
Form1.RegisterHotKey(this.Handle, this.GetType().GetHashCode(), 0, (int)chr);
это работает отлично. у меня вопрос, как мне зарегистрировать несколько горячих клавиш как одну комбинацию, например:
А + В + С + D,ALT + SHIFT + BCTRL + ALT + SHIFT + Xредактировать: я узнал (как сказал Zooba), как «расшифровать», какая горячая клавиша была отправлена, и вот решение:
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312)
{
Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);
ModifierKeys modifier = (ModifierKeys)((int)m.LParam & 0xFFFF);
if ((modifier + "+" + key == "Alt+S"))
{
//do what ever I need.
}
}
base.WndProc(ref m);
}