私はthis答えに基づいてTWebBrowserのExecメソッドを実装しています。このメソッドは、スクリプトエラーが発生するたびにトリガーされます。今私はエラー情報を取得する必要があります。TWebBrowserエラー情報を取得する方法
まず、TWebBrowserのイベントオブジェクトを取得します。
var
Doc: IHTMLDocument2;
HTMLWindow: IHTMLWindow2;
Event: IHTMLEventObj;
MethodName: String;
MethodResult: OleVariant;
DispatchId: Integer;
Param: array of OleVariant;
begin
//Avoid non-error calls
if nCmdID != OLECMDID_SHOWSCRIPTERROR then
Exit;
//Get hold of the event object
Doc := MapForm.WebBrowser.Document as IHTMLDocument2;
if not Assigned(Doc) then
Exit;
HTMLWindow := Doc.parentWindow;
if not Assigned(HTMLWindow) then
Exit;
//Get the current event
Event := HTMLWindow.event;
そして私は、私はインターフェイスのGetIDsOfNames
とInvoke
機能を使用して(thisリンクに示されているように)必要な情報を取得しようとしています。これらのメソッドを使用するための動作中のDelphiコードはthis documentation linkにあります。
ここでは、これらの関数をEventオブジェクトで使用する方法を示します。
MethodName := 'errorMessage';
Result := Event.GetIDsOfNames(GUID_NULL, @MethodName, 1, SysLocale.DefaultLCID, @DispatchId);
Result := Event.Invoke(DispatchId, GUID_NULL, SysLocale.DefaultLCID, DISPATCH_METHOD, Param, @MethodResult, nil, nil);
GetIDsOfNames
fuGetIDsOfNames機能が正しく実行、DispatchId
に許容される整数を出力しS_OK
を返します。
しかし、Invoke
関数は失敗します。いくつかの負の整数をHRESULT
として返し、何も出力しません。MethodResult
になります。
どうすれば対処できますか?
作品:
は、より多くのこのような何かを試してみてください。 –