WebBrowser上のWordファイルを閉じる


またWebBrowserさんと格闘ですよ・・・
VB.NET+Office2000で.NET上でWebBrowserを使ってWord、Excelを編集するようなアプリケーションを作ってたわけです。
そしたら納品先の環境はOffice2002だって言うじゃありませんか。
まだ納期まで時間があったからいいものの・・・

で、Word2002になって発生した問題。
WebBrowser上に開いたWordファイルを閉じようとすると確認メッセージが出てしまうんです。
流れ的にはこう。
  1. WordファイルをNavigate。
  2. 開いたファイルに変更を加える。
  3. Document.SaveAs()を実行(Saveメソッドは他のアプリケーションの物だとか怒られて使用できない。)
  4. 同じファイルをNavigate。
  5. なぜか「このドキュメントは変更されています。変更を保存しますか?」のダイアログ表示。(保存してるはずなのに・・・)
  6. NavigateComplete2イベント発生。
開いたファイルに変更を加えなければメッセージは出ません。
変更の内容はちゃんと反映されます。(確認メッセージ時「はい」を選択)

注目するのはSavedプロパティ。保存済みの場合はTrue、変更が加わっていればFalseを返します。
最初はこれを疑って「Falseになってんじゃないの〜?」なんて確認してみましたがTrueになっていました。
変更を加えた場合は確かにFalseになっているのですが、SaveAsメソッドでTrueに変わりNavigateしています。


つまり変更してもしなくてもSavedプロパティはTrueでNavigateしているのに、変更を加えた場合にだけ確認メッセージが出てしまうんですねぇ。


次に調べたのは、変更有無のプロパティの違い。
Break張ってイミディエイトウインドウでシコシコ調べてたんですが、なぜかBackgroundプロパティとShapesプロパティにアクセスするとSavedプロパティが勝手にFalseになる(変更有無関係無し)じゃありませんか。
む〜なんじゃこりゃ・・・・Get時になんかやってるのかな〜
・・・なんつってもう少し調べてたら今度は変更があった場合にのみBuiltInDocumentPropertiesプロパティにアクセスするとSavedプロパティがFalseになるっちゅうことが発覚。
なんじゃこりゃ・・・・勘弁してくれ・・・・

上記から考えられるのは、NavigateからNavigateComplete2イベントまでの間に何者かがBuiltInDocumentPropertiesプロパティへのアクセスするため、変更ありの場合はSavedプロパティがFalseになってメッセージが表示されてしまうという感じでしょうか。
今日調べれたのはここまでです。
なんか知ってる人は教えてください。