스크린펜을 만들면서 핫키를 변경할 수 있도록 요청하는 분들이 좀 계셔서 바꾸는데,
쪽지 프로그램의 키보드형태 핫키를 사용할까 하다가, 괜하 닭잡는데 소잡는 칼 사용하는것 같아서 -,.-; 방향을 급선회 가볍게 가기로 했다.
아래는 사용 방법!
Delphi IDE의 Win32탭에 있는 THotkey 컴퍼넌트의 Hotkey Property를 사용하는 방법.
아래 함수는 델파이 menu.pas 파일에 포함되어 있으나, 별도의 유닛을 만들기 위하여,
따로이 분리하였음. 실제 사용시는 함수명을 변경하여 사용하여야 함.
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;
procedure ShortCutToHotKey(HotKey: TShortCut; var Key : Word; var Modifiers: Uint);
var
Shift: TShiftState;
begin
ShortCutToKey(HotKey, Key, Shift);
Modifiers := 0;
if (ssShift in Shift) then
Modifiers := Modifiers or MOD_SHIFT;
if (ssAlt in Shift) then
Modifiers := Modifiers or MOD_ALT;
if (ssCtrl in Shift) then
Modifiers := Modifiers or MOD_CONTROL;
end;
실제 사용예]
procedure TForm1.Button1Click(Sender: TObject);
var
Key : Word;
Modifiers: UINT;
begin
ShortCutToHotKey(HotKey1.HotKey, Key, Modifiers);
RegisterHotKey(Handle, 1, Modifiers, Key);
end;