首页 > 代码库 > Delphi 注册快捷键
Delphi 注册快捷键
ShortCutToText , TextToShortCut 需 uses Menus;
?
type TForm1 = class (TForm) HotKey1: THotKey; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } procedure WMHotKey( var Msg:TMessage);message WM_HOTKEY; public { Public declarations } end ; var Form1: TForm1; implementation {$R *.dfm} var Key, Shift: Word ; Id: Integer ; procedure ShortCutToKey(ShortCut: TShortCut; var Key: Word ; var Shift: TShiftState); begin Key := ShortCut and not (scShift + scCtrl + scAlt); Shift := []; if ShortCut and scShift <> 0 then Include(Shift, ssShift); if ShortCut and scCtrl <> 0 then Include(Shift, ssCtrl); if ShortCut and scAlt <> 0 then Include(Shift, ssAlt); end ; function ShiftStateToWord(TShift: TShiftState): Word ; begin Result := 0 ; if ssShift in TShift then Result := MOD_SHIFT; if ssCtrl in TShift then Result := Result or MOD_CONTROL; if ssAlt in TShift then Result:= Result or MOD_ALT; end ; procedure TForm1 . Button1Click(Sender: TObject); var T: TShiftState; begin Id := GlobalAddAtom( ‘MyHotKey‘ ) - $C000 ; ShortCutToKey(HotKey1 . HotKey, Key, T); Shift := ShiftStateToWord(T); RegisterHotKey(Handle, Id, Shift, Key); end ; procedure TForm1 . WMHotKey( var Msg: TMessage); begin if (Msg . LparamLo = Shift) AND (Msg . LParamHi = Key) then ShowMessage( ‘This is HotKey‘ ); end ; procedure TForm1 . FormDestroy(Sender: TObject); begin UnRegisterHotKey(Handle, Id); GlobalDeleteAtom(Id); end ; end . |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。