Q&A

  • 키보드가 어떤 값이 들어가있는지 알아보기!!
델파이 고수분들

안냐세염

일단 제 글을 읽어주셔서 감사합니다

제가 구현 하고싶은게

키보드를 쳤을때. 예를 들어 A를 치면.

txt 파일에 A 가 생성 되게..

txt 파일 생성법은 압니다

제가 필요한건 변수나 그런곳에 지금 입력한 값을 어케 집어 넣는건지...

A를 치면 변수에 A가 들어가도록...

보통 텍스트 에디트나 그런거 없이

그냥 화면 에 아무것도 안나와 있구요..

키보드를 눌렀을때 그 값을 ... 한 변수에 집어 넣을수있게..

ㅜ.ㅜ. 좀 도와 주세욤



예를 들어

프로그램 실행후에.. ABCD엔터1111

를 치면.

TXT파일에는

ABCD

1111

이런 식으로



고수님들 도와주세요 ~~~~~~







그럼 언제나 즈을 즈을 즈으으으으으으으을 즈으응 코 하세염~~~~

*^____________________________________^*





1  COMMENTS
  • Profile
    구창민 2000.10.23 22:39
    바보감자 wrote:

    > 델파이 고수분들

    > 안냐세염

    > 일단 제 글을 읽어주셔서 감사합니다

    > 제가 구현 하고싶은게

    > 키보드를 쳤을때. 예를 들어 A를 치면.

    > txt 파일에 A 가 생성 되게..

    > txt 파일 생성법은 압니다

    > 제가 필요한건 변수나 그런곳에 지금 입력한 값을 어케 집어 넣는건지...

    > A를 치면 변수에 A가 들어가도록...

    > 보통 텍스트 에디트나 그런거 없이

    > 그냥 화면 에 아무것도 안나와 있구요..

    > 키보드를 눌렀을때 그 값을 ... 한 변수에 집어 넣을수있게..

    > ㅜ.ㅜ. 좀 도와 주세욤

    >

    > 예를 들어

    > 프로그램 실행후에.. ABCD엔터1111

    > 를 치면.

    > TXT파일에는

    > ABCD

    > 1111

    > 이런 식으로

    >

    > 고수님들 도와주세요 ~~~~~~

    >

    >

    >

    > 그럼 언제나 즈을 즈을 즈으으으으으으으을 즈으응 코 하세염~~~~

    > *^____________________________________^*

    >

    >





    질문내용을 잘 이해 못하겠습니다만, ^_^;;



    프로세서 자신이 실행되었을때를 말씀하시는 건가요 아니면



    어떤 어플이 실행되어서 있을때도 그런 작업이 이루어 져야 하는 건가요.



    전자의 경우 자신프로세서내에서의 훅을 사용하시면 되고,



    후자의 경우 전역훅을 거셔야 하는데



    전자의 경우라면 좀더 간단할 수 있습니다.



    음.. 간단히 쓸수가 없네.. 예를 들면..



    폼위에 각종 컴퍼넌트들이 있을경우, 예를들어 WinControl들이 있어서



    포커스를 가지는 넘들이 있다면 그넘들의 KeyDown 메세지들까지 가로채야 하니까



    어플 전역으로 메세지를 가로채야 될거 같네여..



    으미..쓸려니까 길어지네..^_^;;



    아래 예제를 참고해 보세요. 전에 심심해서 해본건데



    Form1이 활성화 되었을때 누르는 모든 키를 잡아채서 무슨 키인지 알려줍니다.



    파일에 쓰는 부분은 직접 작성하세요.



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





    unit Unit1;



    interface



    uses

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

    StdCtrls;



    type

    TForm1 = class(TForm)

    procedure FormKeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    procedure FormKeyPress(Sender: TObject; var Key: Char);

    procedure FormCreate(Sender: TObject);

    private

    { Private declarations }

    FLastMsg: TMsg;

    procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}





    procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);

    begin

    case Msg.message of

    WM_KEYFIRST..WM_KEYLAST:

    FLastMsg := Msg;

    end;

    end;





    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    // helper

    function keyname: String;

    begin

    SetLength(Result, 128);

    SetLength(Result, GetKeynameText(FLastMsg.lparam,

    @Result[1],

    Length(Result)));

    end;

    begin

    ShowMessage(Format('%s',Keyname));

    key := 0;

    end;



    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

    begin

    key := #0;

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    Application.OnMessage := AppOnMessage;

    end;



    end.