Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


Delphi/400 VCLのTWebBrowserを最新バージョンのIEとして実行し続ける

IE(Internet Explorer)はまもなく廃止され、2022年6月15日にサポートが終了します。
ご存じの通り、後継ブラウザとしてはMicrosoft Edgeが推奨されています。

また、Windows 11では最初からIEを起動することができません。
ファイル名を指定して実行のダイアログ(またはアドレスバー)に
IEを示す「iexplore」と入れて実行してもMicrosoft Edgeが起動します。
(2023/03/01追記:Windows 10でも起動できなくなったようです・・・)

これでIEを直接起動しても、
Win11ではEdgeが立ち上がる

 

しかしご利用のシステムによっては、

  • 1.特定のWebサイトがIEにしか対応していない
  • 2.古いバージョン(10以前)のIntraWebを使用している
  • 3.Delphi/400のプログラムでTWebBrowserコンポーネントを使用している

といったお客様もいらっしゃるかと思います。
以下、それぞれの課題と解決策を記載します。

 


1.特定のWebサイトがIEにしか対応していない

Windows 11の場合(または以前のOSにおけるIEサポート終了後)でも、
IEを直接起動できなくなるだけで、IEそのものが削除されたわけではありません。
(Windows内部で互換性のために残す必要があるため)

この場合の解決方法は2通り存在します。

1つは対象サイト(またはIntraWebの接続先)をEdgeのIEモードで動作させる方法です。
EdgeのIEモードを使えば、2029年1月9日までは登録したサイトをIEとして開くことができます。
(設定は端末ごとに必要になります。)

IEモードの設定は一時的なもので、サイトを登録しても30日で元に戻ってしまいます。
しかし下記サイトの手順を行うことで(現在の所は)恒久的にIEモードに設定できるようです。

<参考:IEモードの設定方法>
 Edge のIEモードで登録サイトを日数制限なしで自動で開く|パソブル
 


もう1つはDelphiのVCLプログラムでTWebBrowserコンポーネントを使う方法です。

DelphiのVCLプログラムでTWebBrowserコンポーネントを使用すると、
その中においてはIEとして動作し、Webページが開かれます。
この環境で対象のサイトを実行できるかご確認ください。

(使用方法:TWebBrowserを画面に配置し、
 「WebBrowser1.Navigate(‘対象URL’); 」といったロジックを記述すると、
 画面のTWebBrowserが対象URLにジャンプします。)

この環境で発生するエラーと解決策については、後述の
「3.Delphi/400のプログラムでTWebBrowserを使用している」
をご参照ください。

 


2.古いバージョン(10以前)のIntraWebを使用している

バージョン10以前のIntraWebでは、IE(9以前)・Netscape・FireFox(4以前)
といった当時のブラウザにしか製品が対応していないため、
ChromeやEdgeなどの新しいWebブラウザでは正常に動作しません。
(例えばファイルダウンロード時にファイル名の文字化けが発生したりします)

こちらも先述の
「1.特定のWebサイトがIEにしか対応していない」
で記載したEdgeのIEモードで動作させることで解決できます。
 


また、こちらもDelphiのVCLプログラムでTWebBrowserコンポーネントを使用可能です。

DelphiのVCLプログラムでTWebBrowserコンポーネントを使用すると、
その中においてはIEとしてWebページが開かれますので、
この環境で対象のサイトを実行できるかご確認ください。

(使用方法:TWebBrowserを画面に配置し、
 「WebBrowser1.Navigate(‘対象URL’); 」といったロジックを記述すると、
 画面のTWebBrowserが対象URLにジャンプします。)

この環境で発生するエラーと解決策については、後述の
「3.Delphi/400のプログラムでTWebBrowserを使用している」
をご参照ください。

 


3.Delphi/400のプログラムでTWebBrowserを使用している

上記の1や2において、

『DelphiのVCLプログラムでTWebBrowserコンポーネントを使用すると、その中においてはIEとしてWebページが開かれます』

と記載しましたが、
デフォルト状態では古い「IE7」として動作します。

このため、最近ではブラウザ側でスクリプトのエラーが発生するサイトが増えています。

スクリプトのエラー(一例)

 

レジストリエディターで下記の設定値(DWORD型)を追加して頂くことで、
設定したEXE内のTWebBrowserがIEの中では最新となる「IE11」として動作し、
ブラウザ内のエラーを回避させることができます。

  • キー(64bitのEXEの場合):
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
  • キー(32bitのEXEの場合):
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
  • 値の名前:当該EXEのファイル名(例:「Project1.exe」)
  • 値のデータ:10進数で「11001」(16進数の場合は「2af9」)

※64bit / 32bit とは、ご利用の端末のビット数ではなく、動作させるアプリケーションのビット数です。

※値の名前がEXEのファイル名なので、端末内の同名のEXEはすべて影響を受けます
 逆に、EXEを別名にリネームすると効力を受けなくなります。

※参考:IE7=7000・IE8=8888・IE9=9999・IE10=10001 を設定すれば他のバージョンも指定可能。
 (設定値はいずれも10進数)