-
-
[求助]键盘钩子频繁home,exe进程闪退
-
发表于: 2016-3-7 09:40 2945
-
代码:
function keyproc(icode, wp, lp: integer): DWORD; stdcall; //键盘HOOK回调函数
begin
try
if (icode = HC_ACTION) then
begin
if (wp = VK_HOME) and ((1 shl 31) and lp = 0) then
begin
if fFirstTime = true then
begin
DllMark:=true;
fFirstTime:=false;
end;
if form1 = nil then
begin
form1 := Tform1.Create(nil);
end;
form1.Visible := not form1.Visible;
end
keyproc := CallNextHookEx(keyhhk, icode, wp, lp);
except
on e: Exception do
begin
WriteLog(e.Message);
WriteLog('keyproc');
end;
end;
end;
最近碰到个问题
dll注入到游戏后,我按着home键不动,dll的窗口会不断的show和hide,游戏这样不会闪退
但是,当我开启功能(createthread一个线程,并将dll窗体上的timer的enable属性设置true),再按着home键不动,dll频繁的show和hide,游戏就会闪退,偶尔会报XXXX内存不可读的操作。
钩子回调的keyproc没有异常抛出。
代码中,窗体的show和hide事件没有任何代码
求大神指点指点谢谢
function keyproc(icode, wp, lp: integer): DWORD; stdcall; //键盘HOOK回调函数
begin
try
if (icode = HC_ACTION) then
begin
if (wp = VK_HOME) and ((1 shl 31) and lp = 0) then
begin
if fFirstTime = true then
begin
DllMark:=true;
fFirstTime:=false;
end;
if form1 = nil then
begin
form1 := Tform1.Create(nil);
end;
form1.Visible := not form1.Visible;
end
keyproc := CallNextHookEx(keyhhk, icode, wp, lp);
except
on e: Exception do
begin
WriteLog(e.Message);
WriteLog('keyproc');
end;
end;
end;
最近碰到个问题
dll注入到游戏后,我按着home键不动,dll的窗口会不断的show和hide,游戏这样不会闪退
但是,当我开启功能(createthread一个线程,并将dll窗体上的timer的enable属性设置true),再按着home键不动,dll频繁的show和hide,游戏就会闪退,偶尔会报XXXX内存不可读的操作。
钩子回调的keyproc没有异常抛出。
代码中,窗体的show和hide事件没有任何代码
求大神指点指点谢谢
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: