質問

ホットキーを登録するためにこの小さなコードを見つけました:

    [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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top