2

任意の文字を含む任意のホットキーで任意のコードを実行できるシンプルなアプリがあります。

C, Q, Ctrl-C, Alt-Q, Ctrl-Alt-Q

そして、このホットキーは、押すたびにトリガーされ、フォームの状態(トレイを最小化した場合でも)でトリガーされます。しかし、SHIFT や CONTROL (ctrl) などの単一キーのホットキーを登録する必要がある場合は、機能しません。コードは次のとおりです。

 //at form load
 RegisterHotKey(this.Handle, 0, 0, (int)Keys.Shift); // doesnt works
 RegisterHotKey(this.Handle, 1, 0, (int)Keys.C); //works

 protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x0312)
            {
                int id = m.WParam.ToInt32();
                if (id < 2) //testing these two hotkeys
                {
                    MessageBox.Show("trigger");
                }
            }
            base.WndProc(ref m);
        }

単一のシフトキーと単一の ctrl キーのグローバルホットキーを登録する必要がありますが、このようにはできないようです。これどうやってするの?フォームがフォーカスされている場合にのみ機能すると信じてProcessCmdKeyいるので、私には機能しませんが、またはctrlキーをキャプチャします。shiftspace

4

1 に答える 1