我正在實施基於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文檔鏈接中。
下面是我如何在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
。
我該如何解決這個問題?
就像一個魅力。 –