我一直使用EmbeddedWebBrowser來做一個自己用的浏覽器,不過發現在進入某些網站是浏覽器卡死或崩潰,查看錯誤日之後發現基本都是Flash.ocx Active控件先產生異常,然後拋出Invalid floating point operation的錯誤,產生這種錯誤的網站基本上都是些視頻網站,最典型的就是騰訊視頻,對於這個異常的處理方法,一直沒找到,直到最近看了園子裡Eboy's blog的這篇文章
http://www.cnblogs.com/jxgxy/archive/2012/03/13/2394129.html
之後才找到解決問題的方法,按照上面的介紹,我在主窗體的Create事件中加入了代碼:
Set8087CW(Longword($133f));
編譯 運行 測試 問題依舊!
難道是這種辦法是忽悠人的???
我的浏覽器都是動態創建的,會不會是這個原因??我也在浏覽的創建事件中加入了上面的代碼,測試後發現問題依舊,無奈之下突然想起了谷歌,於是隨便搜了一下,結果發現了這個:
http://stackoverflow.com/questions/8200581/twebbrowser-crashes-with-embedded-youtube-clips
Get8087CW: Word; // == ; // = pDisp: IDispatch; =// pDisp: IDispatch; ==;
得到這個答案後,我立即在WebBrowser的WebBrowser1BeforeNavigate2事件中加入了
Set8087CW($133F);
並未按照原帖的方法處理,神奇的事情發生了,這個問題居然解決了。
看了看原帖,原來只是強制關閉了