「オフラインで作業」メッセージ ボックスを完全に削除したいと思います。
コンテキストを示すために、このメッセージ ボックスは、ローカルWeb アプリケーションを実行しているマシンに表示されます。ネットワークへのアクセスは明らかに不安定であるため、一時的な欠落がブロックされることはありません。バックグラウンド通知が遅延するだけです。Web ページを表示するには、ローカル リソースのみが必要です。URLは次のようになりますhttp://localhost:4444/*myApp*/...
マシンは XP pro で動作し、ブラウザは IE8 です。
次の解決策を試しましたが、成功しませんでした。
- メニュー オプションの[ファイル]/[オフラインで作業] を手動でオフにするだけでは十分ではありません。
- レジストリ エントリ
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\WebCheck\LoadSens
をに設定LoadLCE
しauto
、no
次にyes
このメソッドを最大200ミリ秒ごとに呼び出すことにより、プログラムでオンラインモードを強制しようとしました
[DllImport("wininet.dll")] private extern static bool InternetSetOption(int hInternet, int dwOption, ref INTERNET_CONNECTED_INFO lpBuffer, int dwBufferLength); [StructLayout(LayoutKind.Sequential)] struct INTERNET_CONNECTED_INFO { public int dwConnectedState; public int dwFlags; }; private static readonly int INTERNET_STATE_DISCONNECTED = 16; private static readonly int INTERNET_STATE_CONNECTED = 1; private static readonly int ISO_FORCE_DISCONNECTED = 1; private static readonly int INTERNET_OPTION_CONNECTED_STATE = 50; private static Timer aTimer; private bool offlineSelected = false; public void SetIEOfflineMode(bool offline) { INTERNET_CONNECTED_INFO ici = new INTERNET_CONNECTED_INFO(); if (offline) { ici.dwConnectedState = INTERNET_STATE_DISCONNECTED; ici.dwFlags = ISO_FORCE_DISCONNECTED; Debug.WriteLine("switching to offline mode"); } else { ici.dwConnectedState = INTERNET_STATE_CONNECTED; Debug.WriteLine("switching to online mode"); } InternetSetOption(0, INTERNET_OPTION_CONNECTED_STATE, ref ici, Marshal.SizeOf(ici)); }
最後の試みはほとんどうまくいきます。「オフラインで作業」がチェックされたままになることはありませんが、時々 (非常にランダムに) 邪悪なメッセージ ボックスが表示されます。問題は、ブロックされたままになることはありませんが (作業モードがオンラインに切り替わり、ページが適切に機能します)、エンド ユーザーの邪魔になることです。
1 つの注意点: アーキテクチャ (ローカル Web アプリケーション) を変更することはできません。