掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TWebBrowserでスクリプトエラーダイアログのみを消す方法 (ID:40173)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
せっかく回答をいただいていたのに、答えが遅れてしまい、申し訳ありません。(少しの期間、地震で難儀してました。) TEmbeddedWBコンポーネント、確認させていただきました。 そうしたところ、そのコンポーネントでは、このようなことをやっているようでした。以下、TEmbeddedWB.pasからの引用です。 ↓ParentForm(TForm)のWindowProcと入れ替えてサブクラス化 procedure TEmbeddedWB.FormWndProc(var AMsg: Messages.TMessage); begin if AMsg.Msg = WM_ACTIVATE then begin HandleDialogBoxes(AMsg); end; if AMsg.Msg <> 45062 then FOldWindowProc(AMsg); end; procedure TEmbeddedWB.HandleDialogBoxes(var AMsg: Messages.TMessage); var PopHandle: Integer; DlgCaption, DlgClss: string; Msg: TWMActivate; WI: TWindowInfo; begin Msg := TWMActivate(AMsg); if Msg.Active = 0 then begin PopHandle := Msg.ActiveWindow; DlgClss := GetWinClass(PopHandle); FillChar(WI, SizeOf(WI), 0); if PopHandle <> 0 then begin WI.dwStyle := Abs(GetWindowLong(PopHandle, GWL_STYLE)); WI.dwExStyle := Abs(GetWindowLong(PopHandle, GWL_EXSTYLE)); end; if (DlgClss = '#32770') or (DlgClss = 'Internet Explorer_TridentDlgFrame') then begin DlgCaption := GetWinText(PopHandle); if (PopHandle <> 0) and Assigned(FOnShowDialog) then FOnShowDialog(Self, PopHandle, WI.dwExStyle, DlgCaption, FDialogBoxes.FNewCaption, FDialogBoxes.FDisableAll); if FDisableErrors.FScriptErrorsSuppressed then begin if (AnsiPos('SCRIPT', AnsiUpperCase(DlgCaption)) <> 0) then begin PostMessage(PopHandle, WM_LBUTTONDOWN, 0, 0); PostMessage(PopHandle, WM_LBUTTONUP, 0, 0); SendMessage(PopHandle, WM_CLOSE, 0, 0); Forms.Application.ProcessMessages; Exit; end; if (AnsiPos('ERROR', AnsiUpperCase(DlgCaption)) <> 0) or (WI.dwExStyle = 4260097) then begin DestroyWindow(PopHandle); Exit; end; end; end; end; end; 引用終わり。 (続きます。)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.