TEventObject
を提供するイベントOnMouseDown
を作成しました。マウスを移動したり、Webブラウザーをクリックしたりすると、イベントは完全に機能しますが、Webブラウザーの垂直スクロールバーをスクロールまたはクリックすると、例外が発生します。EurekaLogは、d2d1.dllでEZeroDivide例外を報告します。例外をトラップしようとしましたが、試したことは何も機能していないようです。OnMouseMove
TWebBrowser
EZeroDivide
function TEventObject.Invoke( DispID: integer; const IID: TGUID; LocaleID: integer; Flags: Word; var Params;
VarResult, ExcepInfo, ArgErr: Pointer ): HResult;
begin
try
if ( DispID = DISPID_VALUE ) then
begin
if Assigned( FOnEvent ) then
FOnEvent;
Result := S_OK;
end
else
begin
FOnEvent := nil;
Result := E_NOTIMPL;
end;
except
on EZeroDivide do
begin
FOnEvent := nil;
Result := E_NOTIMPL;
end;
end;
end;
私の質問は、どういうわけか例外を防ぐことができますか、それとも例外を防ぐためにTWebbrowser垂直スクロールバーのマウスダウンを検出できますか?この例外は、TEventObjectについてあまり詳しくなく、垂直スクロールバーをクリックまたはドラッグしたときにのみ例外が発生する理由がわからないため、解決するのが難しいものです。必要に応じて、より多くの情報を提供できます。コンパイラ:Delphi2010。
[編集] この投稿を参照してください:http: //www.codenewsfast.com/cnf/article/0/waArticleBookmark.7401953 非常にシンプルなデモアプリが http://dl.dropbox.com/u/2167512/bugsで入手できます。 /ie9/ie9_bug.zip
これにより、バグが防止されます。
Math.SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide,exOverflow, exUnderflow, exPrecision]);