IWebbrowser: Toolbars und Event um Änderungen zu erkennen?
-
Hallo an alle,
in meiner Nicht-MFC C++-Applikation benutze ich COM und das IWebbrowser Interface um eine Vorschau auf MS Office Dokumente (doc, docx, xls, ...) in einem Frame meiner Applikation zu bekommen. Funktioniert soweit ganz gut, allerdings habe ich immer noch zwei Probleme, die ich auch nach 2 Wochen Arbeit daran noch nicht lösen konnte:
1. Installiert ist der IE8 und MS Office 2007. Wenn ich eine Word-Datei (.doc) anzeige, werden alle Toolbars gezeigt und sind aktiv. Wenn ich mit demselben Navigate-Befehl eine Excel-Datei (.xls) anzeige, sind keine Toolbars zu sehen. Dieses Verhalten, dass die Toolbars nicht sichtbar sind, hätte ich gerne generell. Ich hab schon verschiedene Versuche mit "FullScreen", "TheaterMode" und den "Toolbar" Befehlen versucht, aber diese scheinen für das Interface nicht zu funktionieren !?
Ich hab's auch mit dem OLE Befehl ExecWB versucht: w->iexp->ExecWB(OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DODEFAULT, NULL, NULL);
Das funktioniert auch, nur leider ist dies ein Toggle-Befehl. Ich dürfte den Befehl also nur ausführen, wenn die Toolbars sichtbar sind, nur leider habe ich keinen Weg gefunden, um festzustellen, ob die Toolbars sichtbar sind. Natürlich könnte ich direkt prüfen, ob ich eine Word-Datei anzeige, und dann die Toolbars verstecken. Allerdings gefällt mir dieses formatabhängige Verhalten nicht wirklich...
Hat also jemand eine allgemeine Idee, wie ich diese Toolbars verschwinden lassen kann? Oder gibt es in Excel und Word irgendwelche Einstellmöglichkeiten?2. Gibt es eine Möglichkeit festzustellen, ob das Word-Dokument in meinem Applikations-Frame geändert wurde? Mein Problem: Jemand könnte direkt in meinem Frame etwas in das Word-Dokument geschrieben haben. Wenn das Fenster danach einfach geschlossen wird, sind die Änderungen weg. Der "normale" MS Office Dialog, der fragt. ob die Änderungen gespeichert werden sollen oder nicht, oder ob abgebrochen werden soll,kommt während des Schließvorgangs nicht. Ich vermute, das das Fenster bereits gelöscht ist, bevor dieser Dialog die Chance hat angezeigt zu werden, deswegen muss ich meinen eigenen Abfrage-Dialog zeigen, bevor das Fenster geschlossen wird. Und deswegen muss ich irgendwie wissen, ob sich der Inhalt im Word-Dokument geändert hat. (Zeitstempelverfahren wäre mein letzte Möglichkeit, aber vielleicht gibt's ja auch ne andere...)
Ich habe bereits einen EventListener mit der Connection Point-Technik installiert um WebBrowserEvents abzufangen, aber ich habe noch keinen passenden Event gefunden. Hat jemand eine Idee?Danke schon mal im Voraus!
AlexP.S. Ich bin COM-Anfänger, also bitte habt Geduld mit mir
