使用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就好了
分享到:
相关推荐
以上控件仅用于学习参考!EmbeddedWebBrowser D5-XE2 V14.7.0.0 FullSource,亲测可用!!请放心下载!
EmbeddedWb for delphi xe 10.4. 亲测好用 一般找不到的
Delphi-EmbeddedWB-XE2
经测试XE8 UP1下可正常使用! EmbeddedWB XE8可用;
支持delphi xe10.2的EmbeddedWb,本人亲测可用。支持delphi xe10.2的EmbeddedWb,本人亲测可用。
EmbeddedWB delphi2010版本,在原来d2006版本上修改的,直接安装 EmbeddedWebBrowser_D2006.dpk 就可以了。在网上找了很多地方,都不能安装,自己花了点时间进行修改,可正常安装,并去掉了修改IE,USER_AGENT设置的...
关于EmbeddedWB交互数据.zip关于EmbeddedWB交互数据.zip
EmbeddedWB 学习WebBrowser
EmbeddedWb_14.70_XE10_AV修正; EmbeddedWb; delphi xe7
EmbeddedWB_D2005 比自带webbrowser 好用很多
EmbeddedWB Component Pack ============================================================= bsalsa productions develop freeware solutions for users and programmers under "Borland Delphi" with ...
Delphi第三方控件EmbeddedWB,这是一个不错的浏览器控件,比Delphi自带的Webbrowser要强悍很多 ============================================================= Version 14.70.0 - 02.10.2010 - by smot =========...
EmbeddedWB_D5-XE3_Version_14.70.0.zip
EmbeddedWB v14.67.5 Full Source for D5-D2009
EmbeddedWB v14.67.0 Full Source for D5-D2009
EmbeddedWB的安装方法,适用于Delphi2010和DelphiXe
EmbeddedWB_14.70_RIO_DPIAware.rar
EmbeddedWB 浏览器控件2005 14.64..rar