掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TWebBrowserでスクリプトエラーダイアログのみを消す方法 (ID:40174)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
上記について、簡単に申し上げますと、 1 WebBrowserに飛んでくるメッセージを監視し続け、 2 WM_Activateが来たとき、新しくアクティブになったダイアログのキャプションを取得、 3 そのダイアログがエラーメッセージダイアログのキャプションと一致したら、WM_Closeを送って閉じる ということをやっているようでした。それを踏まえ、当方では次のように処理をしようと考えました。 private { Private 宣言 } OriginProc: TWndMethod; //元のウィンドウ関数保持用 procedure SubClassProc(var AMsg: TMessage); //入れ替え用手続き procedure TForm1.FormShow(Sender: TObject); begin OriginProc := Self.WindowProc; Self.WindowProc := SubClassProc; end; procedure TForm1.SubClassProc(var AMsg: TMessage); var S: String; Wnd: HWND; I: Integer; Msg: TWMActivate; begin if AMsg.Msg = WM_Activate then begin Msg := TWMActivate(AMsg); If Msg.Active = 0 then begin Wnd := Msg.ActiveWindow; I := GetWindowTextLength(Wnd); SetLength(S, I + 1); GetWindowText(Wnd, PChar(S), I + 1); If AnsiPos('Internet Explorer スクリプト', S) > 0 then begin SendMessage(Wnd, WM_CLOSE, 0, 0); end; end; end; OriginProc(AMsg); end; これで、基本的に抑止には成功しました。ですが、1つ新たな問題が発生してしまいました。 それは、上でダイアログを閉じると、本来Form1のキャプションの色がアクティブな色に戻るところ、 非アクティブな色のまま、元に戻らないのです。 無理やりSetForeGroundWindow等を使ってアクティブ状態に戻してみましたが、 キャプションの色が「非アクティブ」→「アクティブ」とちらついてしまい、見栄えが悪くなってしまっています。(TEmbeddedWBでは、このようなちらつきが全く出ておらず、不思議でした。) このようなちらつきをなんとかなくしたいと思っています。どなたか、よい お知恵をお持ちの方、どうぞよろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.