一般就是看异常的栈,是对ocx控件的哪个接口调用出的异常,异常的信息是什么,然后查HRESULT或者NativeErrorCode的值代表什么

解决方案 »

  1.   

    是的,是调用ocx接口启动摄像头时出现的异常,进而引起程序崩溃退出。
    这种非托管异常,不知道.net怎么规避(改ocx可能性不大,第三方是zf)。
      

  2.   

    捕捉不到异常,windows系统直接抛出win32。
      

  3.   


    zf 里边的东西也是人做的。你要是自己做得好,把那些zf供应商的产品垃圾一点点连根拔掉嘛。
      

  4.   

    WIN7运行正常,你的WIN7是64位的吗
    还有,XP下安装了framework4.0?
      

  5.   

    大概,xp肯定安装了framework4.0,这么基本的问题:-)win7是32位的
    xp是sp2
      

  6.   

    这类第三方的东西抛出异常,通常是它自己的需要的环境的安装问题。而非托管程序的异常,包括大量COM组件的异常,你只能得到一个似是而非的代号,只能靠瞎蒙,靠网上一大帮人帮你瞎猜。只能如此。
      

  7.   

    大哥
    问题出在调用ocx,启动摄像头的时候出现win32异常
      

  8.   

    大概,xp肯定安装了framework4.0,这么基本的问题:-)win7是32位的
    xp是sp2试试把 xp 升级到 sp3吧。
      

  9.   

    是的,系统抛出win32异常的时候
     xxx.exe[代号]中发生未处理的win32异常
      

  10.   

    我们在开发中能够避免COM的就避免调用它,能不用c++的就不用c++。比如说要开发一个网页版的视频聊天系统,我们会选择 silverlight,而不是自己写什么 ActiveX再去调用什么非托管驱动。看中的就是 silverlight 平台对摄像头采集功能的良好兼容性。
      

  11.   

    在4.0以后,大部分SHE异常都被标识成破坏性异常,在.NET里,默认情况下CLR不会捕捉它们,而是任由操作系统来处理—即关闭程序,并打开一个错误对话框通知用户。为了保证兼容性,在4.0以前编译的程序,例如在2.0、3.0和3.5编译的程序,依然采用的是老的策略—即.NET会同时捕捉.NET异常和SHE异常。而在4.0下面编译的程序才会使用新的策略,这也是在文章的开头,我的朋友所碰到的问题。你可以在.NET 4.0下面编译下面的程序,体验一下这个新变化:
    http://www.cnblogs.com/Terry-greener/archive/2011/11/29/2268052.html给你的处理方法加上[HandleProcessCorruptedStateExceptions] 
      

  12.   

    之前有做尝试,并且注册捕获非UI线程异常,没用。
    //处理UI线程异常
                Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
                //处理非UI线程异常
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
                //处理未捕获的异常
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);