Q&A

  • 키가 눌리고 있는중에 다른키 입력을 아는법은?
3 번째 올립니다.



결국 그냥 key down 이나 key press 에서는 해결을 할수 없는것 같은데...

그래도 혹시나 방법이 있을까 해서 마지막으로 올립니다.

일부 워드 프로세서를 보면 키가 눌리고 있는 상태에서 다른 키를 누르면

이 다른키가 적용이 되더군요.

여기서는 어떤키가 눌리고 있어도 다른키가 눌렸다는 것을 감지 한다는 뜻인데

여기서 조금더(?) 발전을 하면 원하는 결과를 얻을것 같습니다.



게임 이라면 움직이는 키가 눌려있고.(이것을 프로그램이 감지하고 있고.)

총알을 발사하는 키를 누른경우.(이것을 감지하는 것은 워드처럼(?)하면)

그리고 총알을 모아서 쏜다면?(이경우는 둘다 눌리고 있는것을 알아야..)



이것을 감지 하려면 역시 api를 알거나

window 메세지를 가로채야 하는 것일까요?



결국 수시로 키보드를 체크하는 루틴이 필요할것 같습니다.

단순히 키보드 버퍼를 읽고 쓰고 하는것이 아니고요.

근데 이런게 가능하긴 한건지요?

아니면 제가 방향을 잘못 잡고 있는 것인지요?



밑에 답변에 보면 key down 등에서 해결된다고 하신분도 있는데..

정말 방법이 있다면 정말 좋겠습니다.

아 그리고..키가 계속 눌리고 있을때.. 리피트 된다고 하나요?

이것에 간격을 조절할수 있는것으로 아는데 어떻게 해야 하는지요?







1  COMMENTS
  • Profile
    이정욱 1999.05.27 20:15
    GetASyncKeyState를 사용하시면 됩니다.

    생각하신데로 루프를 돌면서 계속 검사를 하고 있는것입니다.

    저번 '비트 매니아'류의 게임을 델파이로 만들면서 제가 사용했던 방법입니다.

    아래에 일부분을 올릴께요.참고하세요.

    동시에 몇가지가 눌려있어도 잘 됩니다.



    폼의 OnShow이벤트에서...



    repeat

    UpdateFrame; //그림을 그려주는곳

    If GetAsyncKeyState(ord('Z')) < 0 then

    begin

    If not Key1Down then

    begin

    Key1Down := True;

    여러가지 처리

    end else Key1Down := False;



    If GetAsyncKeyState(ord('S')) < 0 then

    begin

    If not Key2Down then

    begin

    Key2Down := True;

    여러가지 처리

    end;

    end else Key2Down := False;



    If GetAsyncKeyState(ord('X')) < 0 then

    begin

    If not Key3Down then

    begin

    Key3Down := True;

    여러가지 처리

    end;

    end else Key3Down := False;



    If GetAsyncKeyState(ord('D')) < 0 then

    begin

    If not Key4Down then

    begin

    Key4Down := True;

    여러가지 처리

    end;

    end else Key4Down := False;



    Until (GetAsyncKeyState(VK_ESCAPE) < 0);



    박훈철 께서 말씀하시기를...

    > 3 번째 올립니다.

    >

    > 결국 그냥 key down 이나 key press 에서는 해결을 할수 없는것 같은데...

    > 그래도 혹시나 방법이 있을까 해서 마지막으로 올립니다.

    > 일부 워드 프로세서를 보면 키가 눌리고 있는 상태에서 다른 키를 누르면

    > 이 다른키가 적용이 되더군요.

    > 여기서는 어떤키가 눌리고 있어도 다른키가 눌렸다는 것을 감지 한다는 뜻인데

    > 여기서 조금더(?) 발전을 하면 원하는 결과를 얻을것 같습니다.

    >

    > 게임 이라면 움직이는 키가 눌려있고.(이것을 프로그램이 감지하고 있고.)

    > 총알을 발사하는 키를 누른경우.(이것을 감지하는 것은 워드처럼(?)하면)

    > 그리고 총알을 모아서 쏜다면?(이경우는 둘다 눌리고 있는것을 알아야..)

    >

    > 이것을 감지 하려면 역시 api를 알거나

    > window 메세지를 가로채야 하는 것일까요?

    >

    > 결국 수시로 키보드를 체크하는 루틴이 필요할것 같습니다.

    > 단순히 키보드 버퍼를 읽고 쓰고 하는것이 아니고요.

    > 근데 이런게 가능하긴 한건지요?

    > 아니면 제가 방향을 잘못 잡고 있는 것인지요?

    >

    > 밑에 답변에 보면 key down 등에서 해결된다고 하신분도 있는데..

    > 정말 방법이 있다면 정말 좋겠습니다.

    > 아 그리고..키가 계속 눌리고 있을때.. 리피트 된다고 하나요?

    > 이것에 간격을 조절할수 있는것으로 아는데 어떻게 해야 하는지요?

    >

    >

    >





    • 이익중
    • 1998.11.09 06:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.11.21 02:54
      델파이와 비베는 상당히 틀립니다. 비베는 베이직을 기초로한 언어이구요, 델파이는 파스칼을 기초로한 언...
    • 김동수
    • 1999.05.27 23:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.28 01:53
      쩝~~~ for ~ loop에서 query1.next가 빠졌네요... for do begin . operation.... . query1....
    • 신인재
      1998.11.11 05:05
      박기성 wrote: > 안녕하세요.. Web상에서 BBS를 만드는데, 델파이로 할 수 없나요? > > ASP를 사용하여...
    • 박기성
      1998.11.11 21:00
      신인재 wrote: > > 음냐....POD 9월호에 Web Application에 대해서 > 기사가 있습니다... > 음....만...
    • 임성학
    • 1999.05.27 23:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.27 23:28
      임성학 께서 말씀하시기를... > 퍼즐 프로그램을 짜려고 하는데, 입력상태를 받아들여 그 상태에 도달할때...
    • true
    • 1999.05.27 23:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.27 23:39
      상당히 애매모호한 질문이네요... 파워러브 델파이 97년 8월호와 9월호를 참고해 보세요. 그쪽에 애니메...
    • 표경나
    • 1998.11.04 14:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1998.11.11 05:17
      표경나 wrote: > 오라클과 델파이를 연동해서 클라이언트용 애플리케이션을 만들고 있는중입니다. > 그런...
    • 전선호
    • 1998.11.02 22:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.05.27 23:13
      음.. 먼저 정욱님 감사~~ 며칠전에 똑같은 질문을 올렸었는데 정욱님께서 영대님의 팁게시판을 찾아보...
    • 이정욱
      1999.05.27 23:36
      아래처럼 하셔도 되지만 0000이 실제 모뎀을 뜻하는것인지는 알 수 없습니다. 특히 데이타맨같은것을깔면 ...
    • 종모
    • 1998.10.31 03:38
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 북해
    • 1999.05.27 22:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.27 23:37
      북해 께서 말씀하시기를... > 안녕하세요. 컴포넌트를 하나 만들고 싶은데, 컴포넌트를 만드는 방법에 대...
    • 이정욱
      1999.05.27 23:30
      한델의 강의실에 가보시면 안치봉님께서 쓰신 컴포넌트에 대한 강좌가 있습니다. 북해 께서 말씀하시...
    • 원유진
    • 1998.10.29 05:28
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이현신
      1999.05.27 22:10
      API 함수를 통한 시리얼 넘버는 하드를 포멧하거나 시스템적인 프로그램을 돌리고 나면 변경되던데 하드의...
    • 이정욱
      1998.10.29 21:26
      네.. 만약 정품 씨디가 있으시면 인스톨 쉴드라는 것이 있습니다. 그것을 가지고 만드시면 되구요.. 아...
    • 1999.05.27 23:40
      이현신 께서 말씀하시기를... > API 함수를 통한 시리얼 넘버는 하드를 포멧하거나 시스템적인 프로그램을...
    • 이현신
      1999.05.28 00:19
      저도 GetVolumeInformation 를 사용해서 하드시리얼을 구햇읍니다. 그런데 포멧을 한후에 다시 구해보면 ...
    • 원유진
    • 1998.10.29 05:28
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 지니
      1999.05.27 20:57
      간단한 메모장을 만들어 보고 있습니다. RichEdit콘트롤을 사용하여 작성하고 있는데 이곳에 있는 문...
    • 이정욱
      1998.10.29 21:26
      네.. 만약 정품 씨디가 있으시면 인스톨 쉴드라는 것이 있습니다. 그것을 가지고 만드시면 되구요.. 아...
    • 1999.05.27 21:33
      지니 께서 말씀하시기를... > > 간단한 메모장을 만들어 보고 있습니다. > RichEdit콘트롤을 사용하여 ...
    • 황하성
    • 1999.05.27 20:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.27 20:51
      황하성 께서 말씀하시기를... > > MessageDlg에서 버튼 입력을 받아서 다음 과정으로 넘어가고 싶은데 ...
    • 이진수
    • 1998.10.11 00:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.10.14 00:51
      이진수 wrote: > mp3화일 재생하는 소스가 어디 없나요? 소스는 아니구요.. XAudio라는것이 있는데 이...
    • 이은실
      1998.10.27 14:01
      이정욱 wrote: > 이진수 wrote: > > mp3화일 재생하는 소스가 어디 없나요? > > 소스는 아니구요.. XA...
    • apla
    • 1998.10.25 01:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1998.10.26 22:29
      apla wrote: > 델파이에서 유닉스 시스템의 인포믹스 데이터베이스에 연결하는 방법을 알고 > 싶네요. ...
    • 박훈철
    • 1999.05.27 18:37
    • 1 COMMENTS
    • /
    • 1 LIKES
    • 이정욱
      1999.05.27 20:15
      GetASyncKeyState를 사용하시면 됩니다. 생각하신데로 루프를 돌면서 계속 검사를 하고 있는것입니다. 저...
    • 조병성
    • 1998.10.09 00:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조원홍
      1998.10.25 03:31
      그리드의 확장 컴포넌트는 공개용으로는 조금 구하기 힘드실 듯 합니다. 상용으로는 인포파워, 디비파워, ...
    • 송기원
    • 1999.05.27 18:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.27 23:43
      송기원 께서 말씀하시기를... > Cached Update를 이용하여 자료를 저장시에 오류가 발생하면 > TQuery의 ...