Outlook Automation mit Application Server

7. November 2008 12:22

Hallo zusammen,

um Kontakte in NAV nach Outlook zu exportieren habe ich mir eine kleine Cu gebaut, bei der ich den Zugriff über die
'Microsoft Outlook 11.0 Object Library' mache. Zuerst erzeuge ich eine Instanz der "Application" und arbeite mich dann zum Zielverzeichnis,
um den Export vorzunehmen. Starte ich die Logik Client, funktioniert der Export ohne Probleme.

Wird der Prozess jedoch über den NAS (als Dienst, gleiches konto wie mein eigener Benutzer) angestoßen,
wird sofort abgebrochen und in der Ereignissanzeige kommt folgender Eintrag von Microsoft Office 11:

Ereigniskennung 2001:
Beschreibung: Rejected Safe Mode action : Microsoft Office Outlook.


Das kuriose daran: wenn ich den NAS mit Debugger starte und die Logik Schritt für Schritt durchgehe, klappt es ebenfalls.

Bei meiner Recherche im Internet bin ich zwar schon auf vielle Fälle mit der gleichen Ereigniskennung gestoßen,
jedoch beschreiben die immer wieder den Einsatz an einem Terminalserver.
Bei meinem Rechner handelt es sich um Windows XP SP3 mit Office 2003 SP3 und ich bin lokal angemeldet.
Bei einem anderen Rechner mit Vista und Office 2007 und einem NAS ist Outlook gleich komplett abgestürzt. Jedoch geht auch hier der manuelle Prozess.

Gibt es in Outlook da irgeneine Sicherheitseinstellung, die erkennt, ob es sich um einen Userprozess oder einen automatisierten Prozess handelt?

Re: Outlook Automation mit Application Server

7. November 2008 12:38

Meines Wissens unterscheidet die DLL ob Sie von Outlook oder von extern aufgerufen wird.

Außerdem könntest Du in ein weiteres Problem laufen: es gab da mal ein Limit für den maxiamlen Transfer von Adressen von/nach Outlook von rund 250 Adressen - aus Performancegründen. Dies gilt ausdrücklich nicht zwischen Outlook und Exchange. Ob das in Deinem Fall immer noch gilt weiß ich nicht.

Re: Outlook Automation mit Application Server

7. November 2008 13:38

Hallo vsnase,

danke erst mal für die info.
bei meinen versuchen habe ich nebenbei immer outlook offen gehabt.
ist dies nicht der fall läuft es.
habe es gerade mit ca. 1600 adressen probiert, hat prima funktioniert.

nur logisch ist das ganze nicht....

Re: Outlook Automation mit Application Server

7. November 2008 15:34

Hallo.

Der NAS läuft im Englischem Umfeld. Könnte das eine Ursache sein?

Re: Outlook Automation mit Application Server

10. November 2008 10:00

Hallo Fred.
Schwer zu sagen. Komisch ist halt schon ,dass es bei geschlossenem outlook funktioniert.
Wenn ich eine deutsche Lizenz (flf) und die deutsche fin.stx ins NAS Verzeichnis kopieren und den NAS starte, wird dieser
sofort mit einer Meldung im Event Log (falsche stx datei) abgebrochen

Re: Outlook Automation mit Application Server

10. November 2008 10:24

Nachdem es ja mit geschlossenem Outlook funktioniert, würde ich die Ursache nicht bei den Lizenezdateien suchen.

Du schreibst ja, dass Du eine Instanz von Outlook erstellst. Prüftst Du denn in Deinem Code ob evtl. schon eine Instanz von Outlook auf dem Rechner läuft? Outlook kann doch bestimmt nur einmal gestartet werden.

Re: Outlook Automation mit Application Server

10. November 2008 10:44

ja, ich habe folgende Prüfung eingebaut:

Code:
IF ISCLEAR(olApp) THEN
  IF NOT CREATE(olApp) THEN
    ERROR('Outlook nicht gefunden!');


Im Event Log wird die obige Fehlermeldung nicht geworfen.
Aber Du hast Recht: wenn outlook bereits läuft, wird wahrscheinlich die bereits erstellt Instanz verwendet werden
und irgendwie wird dann der Zugriff darauf verboten sein.
Problem: wo genau der Fehler geworfen wird kann ich nicht sagen, da das Debuggen über NAS funktioniert

Re: Outlook Automation mit Application Server

10. November 2008 11:02

Mal so als Ansatz: kannst Du nicht eine eigene dll als Proxy für Outlook 11.0 Object Library erstellen in der Du prüfst ob eine Instanz bereits läuft und diese bindest Du in Deine cu ein?

Re: Outlook Automation mit Application Server

10. November 2008 11:27

mmh.. wenn ich eine eigene dll (COM-Komponente z.B. in Visual C++ 6.0 ) erstelle, kann ich da wirklich prüfen, wieviele Instanzen der
Outlook 11.0 Object Library momentan laufen?

Bei NAV kann ich ja leider nur prüfen, ob meine Automation Variable bereits instanziert wurde.

Re: Outlook Automation mit Application Server

10. November 2008 12:05

Mit VBA kannst Du mit GetObject(, "Outlook.Application") prüfen ob Outlook läuft. Wie das jetzt in C++ heißt weiß ich nicht.

Re: Outlook Automation mit Application Server

10. November 2008 15:15

ok. Danke Dir.
Wenns mit VBA geht, dann könnte ich es ja auch in NAV probieren, die Application zu "bekommen" und dann zu prüfen.
Ich werd die Ergebnisse spaet. morgen posten

Re: Outlook Automation mit Application Server

12. November 2008 16:34

also in nav hat man keine chance das zu prüfen
muss mal schauen ob man da in c# eine chance hat,
aber rein gefühlsmäßig kann man doch nur auf die gerade verwendete instanz zugreifen
und nicht auf andere