Word unter vb.net Dienst fernsteuern
Hallo liebe Administratoren,
also ich bin aktuell dabei einen Windows-Dienst zu programmieren der diverse Worddokumente bearbeiten soll. Allerdings bin ich dabei auf ein mir unerklärliches Problem gestossen:
Hier erstmal ein Codeausschnitt:
Dieser Code funktioniert einwandfrei wenn ich ihn in einer Windows-Forms Anwendung ausführe. Der selbe Code aber als Windows-Dienst funktioniert nicht. Das Problem ist das öffnen des Dokumentes. Die Zeile zum Öffnen des Dokuments wird zwar ohne Exception ausgeführt aber die Ausgabe word.documents.count zeigt 0 (Keine Exception also antwortet das Wordobject wie vorgesehen) wohingegen in einer Forms-Anwendung die erwartete 1 angezeigt wird. Alle Versuche auf Word.ActiveDocument zuzugreifen lösen eine Exception aus (Der Befehl ist nicht verfügbar weil kein Dokument geöffnet ist).
Mein Frage ist nun wieso Word aus dem Dienst zwar erfolgreich gestartet wird aber dann seinerseits kein Dokument öffnet.
Wenn ich es mit der Zeile
versuche wird diese zwar korrekt ausgeführt aber danach ist Doc trotzdem nicht referenziert.
Der Dienst lief schon unter verschiedenen Konten. Aktuell sogar unter dem Administrator. Auch habe ich mit diesem Konto bereits Word gestartet und die diversen Fenster beim Erststart geschlossen so das Word sich daran nicht stören sollte.
Weiterhin ist mir aufgefallen das Word laut Taskmanager läuft und sogar ziemlich viele Ressourcen benötigt. Leider bekomme ich es auch nicht hin Word sichtbar zu machen um zu sehen ob es etwas tut... Word.visible= true bringt in einem Dienst nicht den gewünschten Erfolg. Auch in diese Richtung wäre ich für einen Tipp dankbar.
Das Betriebssystem ist Windows Server 2008 (nicht R2), das verwendete Office 2007 und kompilliert wird mittels Visual Studio 2010 fürs .Net Framework 2.0
Wer hat eventuell eine Idee was ich noch versuchen könnte um Word mittels VB.Net Dienst fernzusteuern?
Bin für jeden Gedanken dankbar!
Viele Grüße
also ich bin aktuell dabei einen Windows-Dienst zu programmieren der diverse Worddokumente bearbeiten soll. Allerdings bin ich dabei auf ein mir unerklärliches Problem gestossen:
Hier erstmal ein Codeausschnitt:
Dim Word as new Microsoft.Office.Interop.Word.Application
word.documents.open(FileString)
msgbox(word.documents.count) 'Anzeige der in Word geöffneten Dokumente
'Änderungen
word.activeDocument.Save()
Dieser Code funktioniert einwandfrei wenn ich ihn in einer Windows-Forms Anwendung ausführe. Der selbe Code aber als Windows-Dienst funktioniert nicht. Das Problem ist das öffnen des Dokumentes. Die Zeile zum Öffnen des Dokuments wird zwar ohne Exception ausgeführt aber die Ausgabe word.documents.count zeigt 0 (Keine Exception also antwortet das Wordobject wie vorgesehen) wohingegen in einer Forms-Anwendung die erwartete 1 angezeigt wird. Alle Versuche auf Word.ActiveDocument zuzugreifen lösen eine Exception aus (Der Befehl ist nicht verfügbar weil kein Dokument geöffnet ist).
Mein Frage ist nun wieso Word aus dem Dienst zwar erfolgreich gestartet wird aber dann seinerseits kein Dokument öffnet.
Wenn ich es mit der Zeile
Dim Doc = word.documents.open(FileString)
versuche wird diese zwar korrekt ausgeführt aber danach ist Doc trotzdem nicht referenziert.
Der Dienst lief schon unter verschiedenen Konten. Aktuell sogar unter dem Administrator. Auch habe ich mit diesem Konto bereits Word gestartet und die diversen Fenster beim Erststart geschlossen so das Word sich daran nicht stören sollte.
Weiterhin ist mir aufgefallen das Word laut Taskmanager läuft und sogar ziemlich viele Ressourcen benötigt. Leider bekomme ich es auch nicht hin Word sichtbar zu machen um zu sehen ob es etwas tut... Word.visible= true bringt in einem Dienst nicht den gewünschten Erfolg. Auch in diese Richtung wäre ich für einen Tipp dankbar.
Das Betriebssystem ist Windows Server 2008 (nicht R2), das verwendete Office 2007 und kompilliert wird mittels Visual Studio 2010 fürs .Net Framework 2.0
Wer hat eventuell eine Idee was ich noch versuchen könnte um Word mittels VB.Net Dienst fernzusteuern?
Bin für jeden Gedanken dankbar!
Viele Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 151461
Url: https://administrator.de/forum/word-unter-vb-net-dienst-fernsteuern-151461.html
Ausgedruckt am: 22.12.2024 um 16:12 Uhr
4 Kommentare
Neuester Kommentar
Moin,
grundsätzlich können Dienste ab Vista nicht mehr direkt mit dem Desktop interagieren (also auch keine Fenster usw öffnen). Nennt sich "Session 0 isolation" => http://www.microsoft.com/whdc/system/sysinternals/Session0Changes.mspx
Evtl. lliegt hier dein Problem.
lg,
Slainte
grundsätzlich können Dienste ab Vista nicht mehr direkt mit dem Desktop interagieren (also auch keine Fenster usw öffnen). Nennt sich "Session 0 isolation" => http://www.microsoft.com/whdc/system/sysinternals/Session0Changes.mspx
Evtl. lliegt hier dein Problem.
lg,
Slainte