Q&A

  • key입력시 처리..
간단한 프로그램을 하나 짜봤는데요..

내용인 즉 실행시 마우스 위치를 정해진 곳으로 이동을 합니다.그리고 클릭을 하고요. 그런 행위를 반복적으로 계속합니다.

문제는 그걸 멈출려고 하는데... 마우스가 자꾸 옮겨지는 바람에 쉽지가 않습니다.

제생각에는 카보드에서 어떠한 키를 입력받으면 프로그램의 실행이 중지되는게 가능하지 않을까 생각이 드는데요. 단지 현재 프로그램폼위에서가 아니라 현재 프로그램이 실행중에는 키보드에서 임의의 키로 종료를 제어하는거죠. 가능할까요?

이것저것 자료를 찾아봤는데...좀 어렵군요. 도움부탁드립니다. 그럼. 이만....

2  COMMENTS
  • Profile
    구창민 1999.12.06 14:40
    임형호 wrote:

    > 간단한 프로그램을 하나 짜봤는데요..

    > 내용인 즉 실행시 마우스 위치를 정해진 곳으로 이동을 합니다.그리고 클릭을 하고요. 그런 행위를 반복적으로 계속합니다.

    > 문제는 그걸 멈출려고 하는데... 마우스가 자꾸 옮겨지는 바람에 쉽지가 않습니다.

    > 제생각에는 카보드에서 어떠한 키를 입력받으면 프로그램의 실행이 중지되는게 가능하지 않을까 생각이 드는데요. 단지 현재 프로그램폼위에서가 아니라 현재 프로그램이 실행중에는 키보드에서 임의의 키로 종료를 제어하는거죠. 가능할까요?

    > 이것저것 자료를 찾아봤는데...좀 어렵군요. 도움부탁드립니다. 그럼. 이만....



    전역적 핫키의 사용 -파워러브델파이



    핫키라는건 일반적으로 핫키를 정의한 프로그램이 초점을

    가지고 있어야 만이 핫키에 응답할수가 있습니다.

    때문에 예를 들어 화면을 캡쳐하는 프로그램을 만든다고

    가정하면 이런핫키로는 만들기가 불가능합니다.

    이럴때 이용하는것이 바로 전역적 핫키입니다.

    전역젓 핫키는 프로그램이 초점을 잃더라도

    핫키에 응답할수가 있습니다.

    자세한건 아래 소스를 참고~



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;



    type

    TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

    private

    FAtom: TAtom;

    procedure WMHotKey(var M: TMessage); message WM_HOTKEY;

    public

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    FAtom := GlobalAddAtom('HotKey Test');

    RegisterHotKey(Handle, FAtom, MOD_ALT, VK_SPACE);

    end;



    procedure TForm1.FormDestroy(Sender: TObject);

    begin

    UnregisterHotKey(Handle, FAtom);

    GlobalDeleteAtom(FAtom);

    end;



    procedure TForm1.WMHotKey(var M: TMessage);

    begin

    if M.WParam = FAtom then

    begin

    if M.LParamLo = MOD_ALT then

    begin

    if M.LParamHi = VK_SPACE then ShowMessage('HotKey!.');

    end;

    end;

    end;



    end.



    그럼..즐거운 프로그래밍 되시길~

  • Profile
    임형호 1999.12.06 19:16
    구창민 wrote:

    > 임형호 wrote:

    > > 간단한 프로그램을 하나 짜봤는데요..

    > > 내용인 즉 실행시 마우스 위치를 정해진 곳으로 이동을 합니다.그리고 클릭을 하고요. 그런 행위를 반복적으로 계속합니다.

    > > 문제는 그걸 멈출려고 하는데... 마우스가 자꾸 옮겨지는 바람에 쉽지가 않습니다.

    > > 제생각에는 카보드에서 어떠한 키를 입력받으면 프로그램의 실행이 중지되는게 가능하지 않을까 생각이 드는데요. 단지 현재 프로그램폼위에서가 아니라 현재 프로그램이 실행중에는 키보드에서 임의의 키로 종료를 제어하는거죠. 가능할까요?

    > > 이것저것 자료를 찾아봤는데...좀 어렵군요. 도움부탁드립니다. 그럼. 이만....

    >

    > 전역적 핫키의 사용 -파워러브델파이

    >

    > 핫키라는건 일반적으로 핫키를 정의한 프로그램이 초점을

    > 가지고 있어야 만이 핫키에 응답할수가 있습니다.

    > 때문에 예를 들어 화면을 캡쳐하는 프로그램을 만든다고

    > 가정하면 이런핫키로는 만들기가 불가능합니다.

    > 이럴때 이용하는것이 바로 전역적 핫키입니다.

    > 전역젓 핫키는 프로그램이 초점을 잃더라도

    > 핫키에 응답할수가 있습니다.

    > 자세한건 아래 소스를 참고~

    >

    > unit Unit1;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

    >

    > type

    > TForm1 = class(TForm)

    > procedure FormCreate(Sender: TObject);

    > procedure FormDestroy(Sender: TObject);

    > private

    > FAtom: TAtom;

    > procedure WMHotKey(var M: TMessage); message WM_HOTKEY;

    > public

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    >

    > {$R *.DFM}

    >

    > procedure TForm1.FormCreate(Sender: TObject);

    > begin

    > FAtom := GlobalAddAtom('HotKey Test');

    > RegisterHotKey(Handle, FAtom, MOD_ALT, VK_SPACE);

    > end;

    >

    > procedure TForm1.FormDestroy(Sender: TObject);

    > begin

    > UnregisterHotKey(Handle, FAtom);

    > GlobalDeleteAtom(FAtom);

    > end;

    >

    > procedure TForm1.WMHotKey(var M: TMessage);

    > begin

    > if M.WParam = FAtom then

    > begin

    > if M.LParamLo = MOD_ALT then

    > begin

    > if M.LParamHi = VK_SPACE then ShowMessage('HotKey!.');

    > end;

    > end;

    > end;

    >

    > end.

    >

    > 그럼..즐거운 프로그래밍 되시길~



    감사합니다. 프로그램에 많은 도움이 될것 같습니다.....