1

「オフラインで作業」メッセージ ボックスを完全に削除したいと思います。

ここに画像の説明を入力

コンテキストを示すために、このメッセージ ボックスは、ローカルWeb アプリケーションを実行しているマシンに表示されます。ネットワークへのアクセスは明らかに不安定であるため、一時的な欠落がブロックされることはありません。バックグラウンド通知が遅延するだけです。Web ページを表示するには、ローカル リソースのみが必要です。URLは次のようになりますhttp://localhost:4444/*myApp*/...

マシンは XP pro で動作し、ブラウザは IE8 です。

次の解決策を試しましたが、成功しませんでした。

  1. メニュー オプションの[ファイル]/[オフラインで作業] を手動でオフにするだけでは十分ではありません。
  2. レジストリ エントリHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\WebCheck\LoadSensをに設定LoadLCEautono次にyes
  3. このメソッドを最大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 アプリケーション) を変更することはできません。

4

1 に答える 1