关于hook的难题,高手帮我看看能不能实现 领导让我开发一个应用程序监视器,监视该应用程序运行情况,如果应用程序报错弹出对话框,监视器自动关闭出错进程(不用手动点击确定退出)。我的想法是捕获系统发给应用程序的消息,屏蔽掉出错对话框。只用c#能不能实现呢,被监视的应用程序是用pb+vc++开发的。大虾们帮我看看有没有什莫解决方案,谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题是出错的对话框有什么特别标识,而且是所有都有特征的,否则你很难hook监控。 只用c++写过hook, 用c#估计是不行的。用消息行不行,你要先用消息侦听器验证一下。欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。 to Knight94(愚翁):出错标识是winxp的数字签名错误,事件id 1000,我该怎样获得被监视进程的窗口句柄呢 to aafshzj():消息侦听器是什莫呢,能不能提供点资料,谢谢 出错标识是winxp的数字签名错误,事件id 1000,我该怎样获得被监视进程的窗口句柄呢==============================================窗口标题是什么如果你找到标题以后用findwindows的找到窗口句柄,然后还是 用findwindows获取确定按牛的句柄,然后用sendmessage发送电击消息。。就ok了。。 以上的操作你在处理错误信息中调用try{}catch{这里调用。。} 我觉得这个用hook不好解决你最好隔一段时间,看看那错误窗体是否弹出,然后模拟鼠标去点击,再关闭 visual studio工具里有一个spy++就是征听windows事件的,你可以看一看。用hook可能是可行的,但不一定是窗口事件hook,而可能是特定dll的hook,基本思路如下:1)用进程察看器查看出错时系统调用了什么dll来提示出错2)编写针对该dll的hook,截取相关调用不过,这是要花点时间的。还有性能差点的做法,不过也未必不可以用。那就是你写一个windows服务进程,每若干秒察看一下指定位置(这就要做试验了,看看出错的窗口其父窗口是谁?是不是桌面窗口)有没有符合指定特征(如窗口类型、其中子窗口,比如一个文本框控件,的内容包含某些文本内容特征)的报错窗口。这种方式比较简单,就是食用点常用的win32api罢了:GetDescktopWindowEnumWindow等等。你自己权衡一下,初步尝试可以考虑使用最后一种方法。欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。 一般出错都有特征比如它的标题你把所有的出错产生的标题保存到一个数组里面然后用个定时器控件比如每秒检查一次吧然后遍历数组使用FindWindow函数检查指定窗口是都存在如果存在的话用SENDMESSAGE关闭窗体即可 基本问题已经解决了,感谢sgear,愚翁,aafshzj() ,散分 如果是弹出对话框后再关闭,可用FINDWINDOWS,反正出错框的标题你肯定能控制.关闭对话框.如果不弹出,可用try{}catch{} 求教Winform高手 WebForm图片问题 C#Winform连接ORACLE数据库(急) 解释下 谢谢 C#中用什么方法继承多个类 WPF,逻辑树、视觉树 winfrom里面的数据列表实现拖拽效果用什么控件 socket 问题,请高手解答. 控件绑定数据源后控件中的数据更新如何返回数据库? 异步写操作的问题,请教了 如何通过HttpWebRequest 取回 cookies , 有高手想写VC#书籍么
我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。
出错标识是winxp的数字签名错误,事件id 1000,我该怎样获得被监视进程的窗口句柄呢
消息侦听器是什莫呢,能不能提供点资料,谢谢
try
{
}
catch
{
这里调用。。
}
1)用进程察看器查看出错时系统调用了什么dll来提示出错
2)编写针对该dll的hook,截取相关调用不过,这是要花点时间的。还有性能差点的做法,不过也未必不可以用。那就是你写一个windows服务进程,每若干秒察看一下指定位置(这就要做试验了,看看出错的窗口其父窗口是谁?是不是桌面窗口)有没有符合指定特征(如窗口类型、其中子窗口,比如一个文本框控件,的内容包含某些文本内容特征)的报错窗口。这种方式比较简单,就是食用点常用的win32api罢了:
GetDescktopWindow
EnumWindow
等等。你自己权衡一下,初步尝试可以考虑使用最后一种方法。
欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/
我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。
你把所有的出错产生的标题保存到一个数组里面然后用个定时器控件比如每秒检查一次吧
然后遍历数组使用FindWindow函数检查指定窗口是都存在如果存在的话用SENDMESSAGE关闭窗体即可
try
{
}
catch
{
}