keybd_event의 다운과 업 사이에 인터벌을 조금 주니까 제대로 먹네여.
아무래도 게임상에서 짧게 먹는 키 이벤트는 먹지 않도록 처리한듯 하네여.
keybd_event사이에 Sleep(20)을 껴 넣으니까 되네여..ㅡㅡ;
Sleep를 넣으면 아무래도 불안해서 Timer하나 더 넣어서 해결했습니다...^^
초보자 님이 쓰신 글 :
: 제가 요즘 하고 있는겜 컨트롤하기 힘들어서 인터벌을 두고 스킬을 쓸수 있는 스킬 도우미 프로그램을 만들고 있는 중입니다.
: 모 해킹같은 건 아니고 간단한 도우미프로그램이니 문제될 건 없다고 생각합니당.
:
: 근데...ㅠ.ㅠ
:
: keybd_event 함수가 안먹네여..ㅠ.ㅠ
:
: 그 겜의 인터페이스가 1~8까지 스킬을 올려놓구 쓰는 겜인데여.. 단축키가(1~8)... 즉 1을 누르면 1번에올려놓은 스킬이 써지고.......등등..^^
:
: 제가 원하는 프로그램은 컨트롤하기 힘든 7번, 8번창에 있는 스킬을 자동으로 실행되게 하는 프로그램입니다.
:
: 해서 제가 쓴 소스는
:
: // 타이머 부분
: procedure Timer1Timer(Sender: TObject);
: begin
: if FSkill7 then
: begin
: keybd_event(Ord('7'), Ord('7'), 0, 0);
: keybd_event(Ord('7'), Ord('7'), KEYEVENTF_KEYUP, 0);
: end;
:
: if FSkill8 then
: begin
: keybd_event(Ord('8'), Ord('8'), 0, 0);
: keybd_event(Ord('8'), Ord('8'), KEYEVENTF_KEYUP, 0);
: end;
: end;
:
: 대충 이렇습니다.
:
: 근데 그 겜에서 채팅창할때는 제대로 7,8 이 먹는데 막상 중요한 겜상에서는 안먹는다는 겁니다.
: 둘이 바꼈으면 좋겠구만..ㅠ.ㅠ 채팅창에서는 안먹구 겜상에서만 먹는..ㅡㅡ;;
:
: 어디가 문제가 있는지 좀 도움울 주셨으면 감사하겠습니다.
:
: keybd_event 쓸때
:
: keybd_event(Ord('7'), MapVirtualKey(Ord('7'), 0), 0, 0);
: keybd_event(Ord('7'), MapVirtualKey(Ord('7'), 0), KEYEVENTF_KEYUP, 0);
:
: keybd_event(Ord('7'), MapVirtualKey(Ord('7'), 0), KEYEVENTF_EXTENDEDKEY or 0, 0);
: keybd_event(Ord('7'), MapVirtualKey(Ord('7'), 0), KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
:
: 등등.. 으로도 해봤지만.. 역시나...안되더군여...ㅠ.ㅠ
:
: 도스창에서도 먹는 이 이벤트가 왜 그 겜에서만 안먹을까요? key Event를 그 전에 막을 수는 없을텐데..ㅠ.ㅠ
:
: 고수분들의 도움을 간절히 원합니당...^^
|