제가 하고 싶은 작업은, 특정키를 눌렀을때, 완벽하게 다른 키가 눌린것 처럼 윈도우와 여타 어플리캐이션을 속이는 일입니다.
우선 민성기님의 '먹통되게 하는' 키보드 훅킹 강좌를 참고하여 전연훅에는 성공했습니다.
그러나 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로 바꿔보려 했으나,
키를 속이는건 불가능 합니다.
어떻게 해야 속일 수 있을까요?
감사합니다.