RegisterHotkeyに複数のホットキーを登録します
-
11-10-2019 - |
質問
ホットキーを登録するためにこの小さなコードを見つけました:
[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');
}
それは完全に機能しますが、私の問題は、2つの異なるショートカットを使用したいということです。 2番目のパラメーターがIDであることはわかっているので、別のIDを作成してWNDProc関数に新しいIFステートメントを追加できると思いますが、どうやってそれを進めるかはわかりません。
要するに、2番目のショートカットを作成するにはどうすればよいですか?
ありがとう、
解決
RegisterHotKey(this.Handle, this.GetType().GetHashCode(), 1, (int)'A')
ここではgethashcode()を使用しないでください。ホットキーを数えて、0から始めてください。IDを混同する危険はありません。ホットキーIDは、各ハンドルに固有です。あなたは ID wndproc()メソッドに戻ります。 m.wparam.toint32()を使用して値を取得します。
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312) { // Trap WM_HOTKEY
int id = m.WParam.ToInt32();
MessageBox.Show(string.Format("Hotkey #{0} pressed", id));
}
base.WndProc(ref m);
}
所属していません StackOverflow