zoukankan      html  css  js  c++  java
  • 解决EmbeddedWB弹出页面错误框的问题

    使用EmbeddedWB控件的时候,发现有一些错误完全无法用try..except去接,这些错误的提示并非是通过Raize抛出的,而是通过Windows消息传递而来,因此要解决此问题,必须从消息下手。

    在EmbeddedWB.pas中,找到重写消息的方法,即TEmbeddedWB.FormWndProc(),其中的代码即是消息的接收,而看其他码,它正是处理了WM_ACTIVATE消息,即有对话框弹出时触发的消息。
    即然出错信息也是对话框,那么从此消息跟入就不会有错,继续往下读代码,发现有一句
    SetWindowText(Wnd, PChar(S));
    直觉告诉我应该在此处下个断点,下了之后调试,果然发现了,这里的变量S就是出错对话框的标题!
    那么参数中的Wnd也就是对话框的句柄了。没想到这么简单就直接找到了关键之处

    随后要做的,就是把这个对话框关掉了,在对话框显示后,立刻关闭之,这时的一闪而过是用户肉眼无法捕捉的,也不会造成界面闪烁。
    于是在 if FDisableErrors.FScriptErr then 下添加一段代码

    try
        hButton := FindWindowEx(wnd, 0, 'Button', '&No');
        SendMessage(hButton, BM_Click, 0,0);
    except on E: Exception do
    end;

    这样就直接发送了No这个Button被点击的消息,对话框就自己关掉了
    如果是中文版的Windows,只需要把 "&No" 改成 "否(&N)" 即可

    如果觉得这么做不放心,要启动出错报告怎么办呢?办法也很简单
    在EmbeddedWB控件里,有一个属性的设置,将DisableErrors.ScriptError改成False就好了

  • 相关阅读:
    IOS--UILabel的使用方法详细
    一个人不成熟的六大特征:
    UIView
    objective-c 错题
    洛谷P1039 侦探推理(模拟)
    洛谷P1038 神经网络(bfs,模拟,拓扑)
    FBI树-数据结构(二叉树)
    二叉树遍历(flist)(二叉树,已知中序层序,求先序)
    求先序排列(二叉树已知中序和后序,求先序)
    哈理工2015暑假集训 zoj 2975 Kinds of Fuwas
  • 原文地址:https://www.cnblogs.com/chengxin1982/p/1549205.html
Copyright © 2011-2022 走看看