CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

怎样截获调用的DLL中的异常?

楼主dingfuhai(loading)2002-10-09 15:45:46 在 C/C++ / C语言 提问

我调用一个DLL,DLL执行过程中,报出错误信息。我怎么能截获这些信息,不让其显示出来? 问题点数:100、回复次数:9Top

1 楼zhang1000(多一个零)回复于 2002-10-09 16:13:06 得分 0

调用的相关代码用  
  try  
  {  
  }  
  catch(...)  
  {  
  }  
  可以截获吗?  
  如果DLL是你自己写的,最好在DLL中处理,然后返回错误信息.Top

2 楼dingfuhai(loading)回复于 2002-10-09 16:23:06 得分 0

try截获不到,DLL不是我写的,如果是我写的就好办了。劳驾,给小弟想想办法Top

3 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2002-10-09 16:30:33 得分 0

??  
  你怎么知道dll出错了,难道他没显示吗??呵呵Top

4 楼dingfuhai(loading)回复于 2002-10-09 20:29:22 得分 0

这个DLL中有个函数是,得到IC卡扫描器的设备句柄,我没有安装IC卡扫描器所以调用失败。出现一个ERROR   MESSAGE对话框,请问我怎么才能屏蔽这个对话框Top

5 楼alphapaopao(炮炮)回复于 2002-10-10 23:21:19 得分 0

一场沿着堆栈传播(stack),所以你只要沿着堆栈的方向,你都可以截获到,  
  而不用管在哪一个DLL里面Top

6 楼dingfuhai(loading)回复于 2002-10-10 23:55:16 得分 0

alphapaopao:请问具体怎么实现,请细说好吗?Top

7 楼alphapaopao(炮炮)回复于 2002-10-11 00:15:15 得分 0

f()  
  {  
      f1();  
  }  
   
  f1()  
  {  
      f2();  
  }  
   
  f3()  
  {  
      f4();  
  }  
   
  这几个函数可以分别属于不同的DLL,   但是你可以从任何父函数中截获到子函数中的异常Top

8 楼alexxing(赤铸)回复于 2002-10-11 00:54:18 得分 100

我觉得楼上的没有搞明白人家的问题,这里的问题不是   try   catch,首先人家不一定使用了   C++   标准异常机制,可能是自己用   return   false   返回异常信息。  
   
  因为函数内部先打开了对话框,然后再退出。即使它用   throw   Exception   还是用   return   false   返回了异常信息,你可以用   try   或者判断返回值知道发生了异常,也无法阻止那个对话框(因为它已经打开了)。唯一的办法好像就是设法拦截对话框调用。  
   
  拦截步骤:  
  1.   设法找出是调用什么API显示的对话框:  
  1.1.   利用   tdump.exe   或者   implib.exe   (这些都是   Borland   的工具,VC   下应该有类似的工具)观察   DLL   的   import   信息,找出可能是对话框显示的函数,例如   MessageDlg,   MessageBox,DialogBox,ShowMessage   ……  
  1.2.   运行你的程序,在弹出对话框之前运行   winsight   工具(或者其它监视工具,网上有此类的共享软件,据说功能还不错),观察其   API   调用情况,确定是哪个   API,例如   MessageBox  
   
  2.   拦截:用合适的工具(最简单的如   UltraEdit,当然也有专用工具,或者自己编程序)修改   DLL   的   import   入口,把那个   MessageBox   替换成你自己的函数。如果这个   DLL   内部还有其它场合也用到了这个   MessageBox,你就需要判断函数的入口参数,分别处理。否则,最简单的做法就是替换成空函数  
   
   
  可能我的办法太笨了,也许高手还有更简单的办法,呵呵Top

9 楼dingfuhai(loading)回复于 2002-10-12 11:17:37 得分 0

多谢楼上的兄弟。Top

相关问题

  • 如果截获API调用?
  • DLL函数调用完成后出现异常
  • bcb6的程序调用bcb5的dll会抛出异常,有人试过吗?
  • 调用DLL时,参数值传英文ok,传中文时报异常。内祥
  • DLL的调用
  • dll的调用?
  • DLL调用
  • 调用DLL
  • 调用DLL
  • DLL调用

关键词

  • 函数
  • dll
  • 信息
  • api
  • 调用
  • 截获
  • 对话框
  • 异常
  • 工具
  • 拦截

得分解答快速导航

  • 帖主:dingfuhai
  • alexxing

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo