我想用RegisterHotKey设置系统热键,热键由THotKey控件获得,但是在注冊熱鍵(例如:Ctrl+F6)前,如何知道系統的其他程序可能已經注冊了這個熱鍵(Ctrl+F6)了呢?這樣就可以提示讓我選擇其他熱鍵注冊了.
或者說:如何列出系統已經注冊了的全部熱鍵?謝謝指教!

解决方案 »

  1.   

    msdn:
    RegisterHotKey fails if the keystrokes specified for the hot key have
      already been registered by another hot key.意思應該是說, 如果別的程序已經註冊了, 那RegisterHotKey 就會返回失敗
    可用GetLastError 檢查
      

  2.   

    372,这信誉分是怎么来的啊。。, 你是不是把CSDN给抢了
      

  3.   

    users menus;
    procedure TForm1.Button1Click(Sender: TObject);
    var key:word;
        shift:TShiftState;
    begin
     shortcuttokey(HotKey1.HotKey,key,shift);
     //此函數可得hotkey1控件中的執鍵字符(key)及修鈽符(shift
    end;
      

  4.   

    大富翁上看到一个注册热键方法,你看看
    procedure SetUp;
    var
      Modifiers, vk: Word;
      Shift: TShiftState;
    begin
      ShortCutToKey(sc, vk, Shift);
      Modifiers := 0; //这个要初始化
      if ssShift in Shift then Modifiers:= Modifiers or MOD_SHIFT;
      if ssCtrl in Shift then Modifiers:= Modifiers or MOD_CONTROL;
      if ssAlt in Shift then Modifiers:= Modifiers or MOD_ALT;
      RegisterHotKey(Handle, 123, Modifiers, vk)
    end;