大家好,欢迎来到IT知识分享网。
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.
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/33839.html
