代码之家  ›  专栏  ›  技术社区  ›  gabr

将thotkey设置为vk_next将显示“num 3”

  •  3
  • gabr  · 技术社区  · 15 年前

    一个非常简单的测试用例:

    alt text http://17slon.com/krama/hotkey.png

    procedure TForm3.btnCopyClick(Sender: TObject);
    begin
      HotKey2.HotKey := HotKey1.HotKey;
    end;
    

    按第一个按键中的“pgdn”键,显示“向下翻页”。单击=>按钮,第二个按键将显示“num 3”。

    如果按修改器(shift等),也会发生类似的情况。这种行为也适用于pgup、home、end和ins。

    据我所见,这种情况发生在Windows内部的某个地方:(正确的虚拟代码(34)是沿着hkm sethotkey消息发送的。

    有人知道一个很好的解决方法吗?目前,我唯一的想法是发送带有参数设置为vk_next和mapvirtualkey(vk_next)的假wm_keydown/wm_keyu消息,但这有点难看…


    热键只是简单的热键:

      object HotKey1: THotKey
        Left = 12
        Top = 14
        Width = 121
        Height = 19
        InvalidKeys = []
        Modifiers = []
        TabOrder = 0
      end
      object HotKey2: THotKey
        Left = 194
        Top = 14
        Width = 121
        Height = 19
        InvalidKeys = []
        Modifiers = []
        TabOrder = 1
      end
      object btnCopy: TButton
        Left = 143
        Top = 14
        Width = 42
        Height = 19
        Caption = '==>'
        TabOrder = 2
        OnClick = btnCopyClick
      end
    
    1 回复  |  直到 15 年前
        1
  •  13
  •   Ondrej Kelle    15 年前

    这个 hkExt 修改器很重要,也需要复制:

    HotKey2.HotKey := HotKey1.HotKey;
    HotKey2.Modifiers := HotKey1.Modifiers;