掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TWebBrowserでスクリプトエラーダイアログのみを消す方法 (ID:40178)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
IOleCommandTargetインターフェースのExecを実装することで、スクリプトエラーが発生した時に呼び出される事になります。 http://support.microsoft.com/kb/261003/en-us 私もそんなに深く理解してる訳じゃ無いんで上手く説明出来ません。 一応、下の定義をFormの定義の上でやればスクリプトエラー出なくなります。 const CGID_DocHostCommandHandler: TGUID = (D1: $F38BC242; D2: $B950; D3: $11D1; D4: ($89, $18, $00, $C0, $4F, $C2, $C8, $36)); type TWebBrowser = class(SHDocVw.TWebBrowser, IOleCommandTarget) protected {IOleCommandTarget interface} function IOleCommandTarget.QueryStatus = CommandTarget_QueryStatus; function CommandTarget_QueryStatus(CmdGroup: PGUID; cCmds: Cardinal; prgCmds: POleCmd; CmdText: POleCmdText): HRESULT; stdcall; function IOleCommandTarget.Exec = CommandTarget_Exec; function CommandTarget_Exec(CmdGroup: PGUID; nCmdID, nCmdexecopt: DWORD; const vaIn: OleVariant; var vaOut: OleVariant): HRESULT; stdcall; end; { TWebBrowser } function TWebBrowser.CommandTarget_Exec(CmdGroup: PGUID; nCmdID, nCmdexecopt: DWORD; const vaIn: OleVariant; var vaOut: OleVariant): HRESULT; begin Result := OLECMDERR_E_NOTSUPPORTED; if CmdGroup <> nil then begin if IsEqualGuid(cmdGroup^, CGID_DocHostCommandHandler) then begin case nCmdID of (* ID_IE_F5_REFRESH {nCmdID 6041, F5}, ID_IE_CONTEXTMENU_REFRESH {nCmdID 6042, Refresh by ContextMenu}, IDM_REFRESH {nCmdID 2300}: begin if Assigned(FOnRefresh) then begin tmpCancel := False; FOnRefresh(Self, nCmdID, tmpCancel); if tmpCancel then Result := S_OK; //FIXME is it true? Why not OLECMDERR_E_CANCELED end; Exit; end; *) OLECMDID_SHOWSCRIPTERROR: begin vaOut := True; Result := S_OK; Exit; end; end; end; end; end; function TWebBrowser.CommandTarget_QueryStatus(CmdGroup: PGUID; cCmds: Cardinal; prgCmds: POleCmd; CmdText: POleCmdText): HRESULT; begin prgCmds.cmdf := OLECMDF_ENABLED; Result := S_OK; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.