J'ai créé un TEventObject
pour fournir les événements OnMouseDown
et OnMouseMove
pour TWebBrowser
. Les événements fonctionnent parfaitement lorsque vous déplacez la souris et lorsque vous cliquez dans le navigateur Web, mais lorsque je fais défiler ou que je clique sur la barre de défilement verticale du navigateur, une exception EZeroDivide
apparaît. EurekaLog signale une exception EZeroDivide dans d2d1.dll. J'ai essayé de piéger l'exception, mais rien que j'ai essayé semble fonctionner:TEventObject et WebBrowser
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;
Ma question est ce que je peux empêcher l'exception d'une certaine manière ou peut mousedown sur la barre de défilement vertical TWebBrowser être détecté pour empêcher l'exception? Cette exception est difficile à résoudre car je ne connais pas grand chose à TEventObject et je ne comprends pas pourquoi l'exception n'apparaît qu'en cliquant ou en faisant glisser la barre de défilement verticale. Je peux fournir plus d'informations si nécessaire. Compilateur Delphi 2010.
[Modifier] Voir ce post: http://www.codenewsfast.com/cnf/article/0/waArticleBookmark.7401953 Une application de démonstration très simple est disponible à l'adresse: http://dl.dropbox.com/u/2167512/bugs/ie9/ie9_bug.zip
Cela évite le bug:
Math.SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide,exOverflow, exUnderflow, exPrecision]);
d2d1.dll est une partie de MS Direct2D – OnTheFly
possible en double http://gastonx.net/?p=10: D – TLama
Ja, das ist gut! :-P – kobik