Q&A

  • 키 변경을 구현하고 싶습니다.
제가 하고 싶은 작업은, 특정키를 눌렀을때, 완벽하게 다른 키가 눌린것 처럼 윈도우와 여타 어플리캐이션을 속이는 일입니다.

우선 민성기님의 '먹통되게 하는' 키보드 훅킹 강좌를 참고하여 전연훅에는 성공했습니다.
그러나 CallNextHookEx를 부르지 않으면 키가 안 먹는것은 되지만,
'a'키를 누르면 'd'가 눌린것 처럼 아무리 하려해도 안 먹히고 그냥 'a'가 찍히고 있습니다. 어떻게 하면 'd'가 눌린것처럼 속일 수 있을까요?

얼마전에 올린 질문과 같은것입니다만, KDDG_MIN께서 말씀처럼 CallNextHookEx를 부르지 않으면, 그냥 먹통이 됩니다. 파멸의 슬픔님이 언급하신 내용은 제가 구현하려는것과는 다른내용이구요.

function MyKBHook(Code : Integer; wParam : WPARAM; lParam : LPARAM): LongInt; stdcall;
begin
  { 파일에 저장된 훅핸들을 읽어온다. }
  if HKbHook = 0 then begin
    ReadData;
  end;

{ Code값이 0보다 크거나 같을때만 }
{ 갈구리질을 하는 것이 요령. }
  if Code >= 0 then begin
    case wParam of
      65 : begin
        wParam := 68;   // A를 D로
        lParam := lParam and $F0000000;  // 스캔코드도 바꿔줘야 한다.
        lParam := lParam  or $00200001;  // 최상위는 4bit는 눌림/계속눌림/뗌 표시
      end;
    end;
  end;
  Result := CallNextHookEx(HKbHook, Code, wParam, lParam);
end;

혹시나 해서 위 소스의 if 문 안에 다른것 다 지우고,
        wParam := 68;   // A를 D로
        lParam := lParam and $10000000;  // 스캔코드도 바꿔줘야 한다.
        lParam := lParam  or $01200001;  // 최상위는 4bit는 눌림/계속눌림/뗌 표시

요렇게만 남겨서 모든 키 눌림을 D로 바꿔보려 했으나,
키를 속이는건 불가능 합니다.
어떻게 해야 속일 수 있을까요?
감사합니다.
0  COMMENTS
    • 김학초
    • 2004.09.15 06:05
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.09.15 08:48
      qrp 파일은 퀵리포트의 결과 파일이라 아마도 수정하기 힘들것 같습니다. 결국에 기존에 들어가 있는 데이...
    • 석주현
      2004.09.15 09:26
      내용무
    • 김학초
      2004.09.16 07:11
      음...EMF이건 또 제가 잘 몰라서...찾아보니까 Enhanced Windows Metafile 이런건가요? 암튼 그냥 내용만 ...
    • 이치영
    • 2004.09.14 23:43
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 누렁이
      2004.09.15 19:08
      바코드 프로그램은 라벨프린터의 종류에 따라 엄격히 소스가 달라집니다. 일반 프린터로 뽑는 것은 더욱 ...
    • cell
      2004.09.15 03:15
      바코드프로그램 소스는 자료실에서 몇개 올라와 있는거를 본거 같은데요. 참고서적은 책을 보시는 것...
    • 이승민
      2004.09.14 22:29
    • 메니아
      2004.09.15 00:31
    • 이승민
      2004.09.15 02:20
    • 메니아
      2004.09.15 02:44
    • 꿈의대화
      2004.09.15 18:44
    • 메니아
      2004.09.16 09:41
    • 최용일
      2004.09.17 19:04
    • 송 시중
    • 2004.09.14 01:33
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 문명현
    • 2004.09.13 22:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • cell
      2004.09.13 23:00
      델 6부터 varvariant형이  Variants에 포함되어 있어서 그런것 같은데요 Unit에 Variants 포...
    • 김춘경
    • 2004.09.13 18:05
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 장태원
      2004.09.13 18:53
      SAPLogin, 그리고, SAPFunction 만 깔아도 될듯 합니다.
    • 오병주
      2004.09.13 20:02
      음........ 어느회사인지 모르겠지만... 대략 저희회사랑 비슷 한 시스템을 가지고 운영하는듯 하네요 ...
    • 김춘경
      2004.09.14 01:41
      ^^ 관심 가져 주셔서 감사합니다. 근데, 임포트 페이지의 목록에 SAP Function 이 안나오는데요... ...
    • KDDG_BaSTaD
      2004.09.12 20:04
      ==> 안녕하세요 KDDG_BaSTaD 입니다. 인증이 실패하신다면... 로그를 먼저확인하셔야겠네요.. S...
    • 이상현
      2004.09.13 09:29
      답변 감사합니다. 계속 확인해 보겠습니다.
    • 최용일
      2004.09.15 04:45
      안녕하세요. 최용일입니다. 무엇을 원하는지는 잘 모르겠지만.... 마우스 커서에 이름은 없습니다. ...
    • 정환철
    • 2004.09.11 22:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 백록화
      2004.09.12 16:49
      yo` PageUp 은 VK_NEXT PageDown 은 VK_PRIOR 로 정의 되어 있네요 windows.pas 참조... 그럼..
    • 일그니
      2004.09.12 02:21
      KeyPress -Dos mode 상의 아스키값(알파벳, 숫자, 기호, 엔터, 탭, ESC등의 값)  char형 Key...
    • 진돌
    • 2004.09.11 09:49
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김상완
    • 2004.09.11 04:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 황성욱
      2004.09.13 20:31
      AggregationActive 속성도 True하셨나여?
    • 김상완
      2004.09.14 23:09
      AggregationActive 속성이 문제였네요.. 답변 감사합니당..^^
    • 김형균
    • 2004.09.11 02:35
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박준철
      2004.09.11 17:47
      찾아 봤는데 쉽게 찾아지질 않네요 Query3.Close; Query3.SQL.Clear; Query3.DatabaseName := 'MyNewA...
    • 일그니
      2004.09.11 04:05
      음. 일단 query2,3 생성후 프리해주는 부분이 안보이네요. 루핑 도시면서 계속 생성만 해주면.. 좀 .....
    • 김형균
      2004.09.11 18:51
      답변 주신 두분께 감사 드립니다.. 해결이 된듯 합니다.. 쿼리를 임시로 생성을 안하고 아예 콤퍼넌트를...
    • 백록화
      2004.09.11 06:16
      yo` 인스톨쉴드 를 써본지가 오래돼서...^^;; MySQL ODBC 셋업프로그램도 설치과정에 넣을수 있을꺼...
    • 파멸의슬픔
      2004.09.11 02:27
      Database 컴포넌트 Properties에 보시면 Params 안에 USER NAME=XXXX PASSWORD=XXXX 넣어주세요... ...
    • 정경주
    • 2004.09.10 20:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2004.09.10 23:18
      델파이에서는 보통 상속(INHERIT)이라 함은 어떤 대형 프로젝트를 나눠서 개발할때 공통화 모듈로 상속(I...
    • 이승민
      2004.09.10 20:59
      여기 강의실에서 '상속' 이라고 검색하시면 참조할 자료가 나올듯합니다. 즐프~~~
    • 착한천사
      2004.09.12 00:05
      착한천사 김경록입니다.. 전 다른 query문을 제안하고자 합니다.. 일단, data를 뽑아내는 경우의수를 대...
    • 모영철
      2004.09.11 02:15
      킁 SQL2000 이군요 모르는 해본적이 없는 디비지만. 뭐 비슷할거라 가정하고 (다른디비는 잘모르거...
    • 누렁이
      2004.09.10 22:17
      언뜻 보기에는 쉬워보여도, 그렇지가 않네요.. 저도 내공이 부족해서 그런가??? 단일쿼리로는 풀리기...
    • 석주현
      2004.09.10 20:13
      음 혹시 Project Options 에서 Packages 탭에 Runtime pakages 에 빌드 위드 런 타임 팩키지를 체크한...
    • 김선아
      2004.09.10 20:28
      정말 고맙습니다.(눈물나요..이거땜에 철야까지 했는뎅!) 제가 초보라 그런걸 잘 몰라 무조껀 컴파일...
    • 일그니
      2004.09.10 21:17
      New30 이라고여... 흠.. 예전에 햇던.. 모방송국 시스템이 떠오르네여 ^^ 체크를 하시면... 아래 하단...
    • 박상윤
      2004.09.16 02:34
      스트림도 지원하기는 하지만 위의 코드처럼.. 바로 지원하기는 힘들것  같습니다. 소스 필...
    • 무수리
    • 2004.09.10 03:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 깔쌈보이
      2004.09.10 04:42
      SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1); SendMessage(Application.Handle,...