Q&A

  • 윈도에 핫키 등록하는것좀 갈켜줘요~~~
안녕하세요

test가 시간이 흐르면 계속 바뀌는 값입니다.

제가 하구 싶은건 f11을 누르면 시작 f12를 누르면 중지...

그런데 f11눌러서 시작은 되는데 f12 누르면 중지하구 싶은데 어떻게 해야 되는지 모르겠네요..ㅜㅜ

RegisterHotKey 여기에 동시에 2개 값은 입력이 안되는건지..

어떻게 사용하는건지 잘 모르겠네요...아시는분 답변좀 부탁드립니다..

좋은 하루되세요..^^

procedure WMHotKey(var Message: TWMHotKey); message WM_HotKey;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
edit1.text := inttostr(test);
end;

procedure TForm1.WMHotKey(var Message: TWMHotKey);
begin
Timer1.Enabled := True;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
Timer1.Enabled := false;
RegisterHotKey(Self.Handle, GlobalAddAtom('SampleHotKeyForm'), 0, VK_F11);
//  RegisterHotKey(Self.Handle, GlobalAddAtom('SampleHotKeyForm'), 0, VK_F12);
end;
3  COMMENTS
  • Profile
    최용일 2002.04.03 02:34
    안녕하세요. 최용일입니다.

    같은 아톰을 사용하시면 안되고 각각 다른 아톰을 사용하세요... 이 아톰값이 각각의 핫키를 구별하게 해줄 수 있는 열쇠입니다.

    RegisterHotKey(Self.Handle, GlobalAddAtom('SampleHotKeyFormF11'), 0, VK_F11);
    RegisterHotKey(Self.Handle, GlobalAddAtom('SampleHotKeyFormF12'), 0, VK_F12);

    그리고 WM_HOTKEY메세지를 처리하실때 이 아톰들로 구별해서 코딩하세요...
    2개 이상의 핫키를 사용할려면 아톰값을 저장하시는 것이 더 좋을듯...

    procedure TForm1.WMHotKey(var Message: TWMHotKey);
    begin
        if Message.HotKey = GlobalFindAtom('SampleHotKeyFormF11') then
        begin
             // F11눌렀을때의 처리
             Timer1.Enabled := True;
        end
        else if Message.HotKey = GlobalFindAtom('SampleHotKeyFormF12') then
        begin
             // F12눌렀을때의 처리
             Timer1.Enabled := False;
        end;
    end;

    ^^ 항상 즐코하세요...

  • Profile
    최석기 2002.04.03 01:51
    굳이 HotKey를 사용할 필요가 있는지...
    다음 같이 하면 않되나여?

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    edit1.text := inttostr(test);
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Timer1.Enabled := false;
    //다른 콘트롤에 포커스가 있을때도 Form의 KeyDown 이벤트를 받기 위해.  
      Self.KeyPreview := true;
    end;

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key = VK_F11 then
        Timer1.Enabled := true
      else if Key = VK_F12 then
        Timer1.Enabled := false;
    end;



  • Profile
    초보 2002.04.03 06:25