안녕하세요..
제가 지금 레인보우식스라는 게임의 치트방지를 위한 프로그램을
제작중에 있습니다. 그런데 그중에서 F2키의 사용을 막을려구
전역후킹을 했는데. 일반 윈도우상에서는 제대로 돌아가네요..
근데 레인보우식스라는 게임에서는
메뉴화면상에서는 마우스작동됩니다.
게임화면상에서는 키보드와 마우스가 작동이 되지를 않습니다.
ESC 키는 되는 것 같구요..
우선 제가 민성기님과 POD에서 잘라내서 만든 후킹 DLL 의 소스를
올리니깐 참고하시고 알려주세요....흑..이것때문에 시간 다 잡아먹네요
키보드만 훅킹할려구 만들어 놓은건데...무슨 경우인지..쩝..
자세히 알려주실분이 계시면 제가만든 치트방지용 프로그램도 같이
올리도록 하지요....
---------------------------------------------------------------------
library R6Hook;
uses
SysUtils,
Classes,
Dialogs,
Messages,
Windows;
type
TMYHOOKDATA = record
nType : integer;
hkprc : TFNHookProc;
hhook : HHOOK;
end;
var
myhookdata : array [WH_MINHOOK..WH_MAXHOOK] of TMYHOOKDATA ;
aHooks : array [WH_MINHOOK..WH_MAXHOOK] of boolean;
function KeyboardProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
const Lock : Boolean = false;
begin
if (nCode >= 0) then
begin
result := 1;
if wParam = vk_F2 then
begin
exit;
end;
end;
result := CallNextHookEx(myhookdata[WH_KEYBOARD].hhook, nCode, wParam, lParam);
end;
Procedure InitHook; export;
begin
myhookdata[WH_KEYBOARD].nType := WH_KEYBOARD;
myhookdata[WH_KEYBOARD].hkprc := @KeyboardProc;
end;
procedure DeleteHook; export;
var no : integer;
begin
for no := WH_MINHOOK to WH_MAXHOOK do
if (aHooks[no]) then UnhookWindowsHookEx(myhookdata[no].hhook);
end;
procedure AddHook(no : integer); export;
begin
case no of
WH_KEYBOARD :
if (not aHooks[no]) then
begin
myhookdata[no].hhook := SetWindowsHookEx(
myhookdata[no].nType,
myhookdata[no].hkprc,
HInstance, 0
);
aHooks[no] := TRUE;
end;
end;
end;
procedure SubHook(no : integer); export;
begin
case no of
WH_KEYBOARD :
if (aHooks[no]) then
begin
UnhookWindowsHookEx(myhookdata[no].hhook);
aHooks[no] := FALSE;
end;
end;
end;
exports
InitHook index 1,
DeleteHook index 2,
AddHook index 3,
SubHook index 4;
begin
end.
---------------------------------------------------------------------