我现在要频繁的向一个程序中注入代码,由于频繁操作,这个程序会不定时的弹出错误信息(错误信息都是固定相同的,窗口名固定,类也固定),我现在想用全局钩子的方法来屏蔽这个弹出的错误信息,不让他出现,直接隐藏或者直接destroy,我看了网上介绍了的WH_CBT的钩子,自己也测试了一下,没做出来,我想请教高手,对于这种情况,如果我想做一个全局的钩子,实现以下功能,请帮忙给出代码,多谢了!我要实现:
用全局钩子监控整个系统,当出现类名为 Classname 的窗口或者 标题为 titlename 的弹出窗口时 ,就将它屏蔽掉,要屏蔽的窗口不要显示(也不闪烁,直接隐藏或者destroy掉)请给出测试通过的delphi代码,最好是源程序,谢谢大家了!只要程序调试通过,分数100赠送!
用全局钩子监控整个系统,当出现类名为 Classname 的窗口或者 标题为 titlename 的弹出窗口时 ,就将它屏蔽掉,要屏蔽的窗口不要显示(也不闪烁,直接隐藏或者destroy掉)请给出测试通过的delphi代码,最好是源程序,谢谢大家了!只要程序调试通过,分数100赠送!
procedure checkerror; {查找错误窗口进行关闭或者隐藏}
var
h:hwnd; //错误窗口句柄
p,name,ps:array[0..254] of Char;//用来存放制定进程的classname的数组
begin
{***方法是便利所有窗口,查找相同标题窗口,找到后再判断类是否相同,相同隐藏***}
h := GetWindow(Handle, GW_HWNDFIRST);
while h <> 0 do
begin
GetWindowText(h, @name, Length(name));
if name=ErrorCaption then
begin
GetClassName(h, ps, 255);
if ps<>'classname' then ShowWindow(h,SW_HIDE);
end;
h := GetWindow(h, GW_HWNDNEXT);
end;
Sleep(1500);
end;以上的程序可以将弹出的错误窗口隐藏,但是偶尔会发生父窗口无法正确显示的问题(在任务栏上右键单击父窗口可以看到父窗口还在运行)
我就是想解决父窗口无法正确显示的问题。
这里有源码!!!!
ApplicationEvents 控件..在onEvents1ActionExecute 事件加入 Exit; 这一句就可以,但不建议,最好找到问题的根源...