Announcement

Collapse
No announcement yet.

Outlook mit Delphi ausführen und anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Outlook mit Delphi ausführen und anzeigen

    Hallo,

    Schon immer hat mich gestört das Outlook, das während des ganzen Arbeitstages bei mir auf dem PC läuft, nicht im System-Tray liegen kann.

    Dazu habe ich mir jetzt ein Programm geschrieben, das sich selbst als Icon in die TNA ablegt und eine Outlook-Instanz startet, den User entsprechend anmeldet und den Inbox-Ordner öffnet, das ganze natürlich nur im Hintergrund. Daraufhin reagiert Outlook, als ob es Sichtbar wäre, wenn eine eMail empfangen wird: Ein Ton wird abgespielt, der Briefumschlag erscheint und eine Meldung wird ausgegeben.
    Es kann daraufhin auch Outlook geöffnet werden, z.B. durch einen Doppelklick auf den Briefumschlag.

    Doch wenn ich Outlook durch das Programm anzeigen möchte (Doppelklick oder Kontextmenü) scheitere ich kläglich mit einem Application Error:
    <pre>

    Exception EOleSysError in module TrayOutlook.exe at 00043451:
    ein ausgehender Aufruf kann nicht ausgeführt werden, da die Anwendung einen Eingabesynchronisierten Aufruf weiterleitet.

    </pre>
    Ich verwende Outlook 2000 - SR1 auf einem NT4 System SP6a und Delphi 5 Enterprise

    Outlook starte ich folgendermaßen:

    <pre>

    Outlook := coOutlookApplication.Create as OutlookApplication;
    NameSpace := Outlook.GetNamespace('MAPI');
    Folder := NameSpace.GetDefaultFolder(olFolderInbox);
    Explorer := Folder.GetExplorer(olFolderDisplayNormal);
    NameSpace.Logon('','',False, True);

    </pre>

    Bei den Variablen handelt sich dabei um Attribute der Klasse!

    Outlook wollte ich folgendermaßen anzeigen:

    Explorer.Display;

    oder

    Explorer.Activate;

    Auch der Versuch, eine weitere Outlookvariable mit lokalen Gültigkeitsbereich zu erstellen schlägt fehl.
    Auf einem System mit W2K funktioniert das ganze jedoch problemlos!!!

    was mache ich falsch?

    Gruß Jan Brandstein

  • #2
    Hallo,

    hier kommen die COM-Regeln für das <b>Apartment</b> in die Quere. Der Grund und das Workaround für die o.g. Fehlermeldung können in meinem Buch <i>COM/DCOM/COM+ mit Delphi</i> nachgelesen werden.

    Der Aufruf des Automation-Objekts (Outlook) darf nicht direkt in der Ereignisbehandlung des Menüs erfolgen, sondern erst dann, wenn das Menü <b>nicht</b> mehr sichtbar ist. Ein <b>PostMessage</b>-Aufruf sowie eine eigene, private Botschaft sollte das Problem lösen. Beim Auswahl des Menüpunkts wird über PostMessage eine private Botschaft verschickt, die erst später vom Programm ausgewertet wird

    Comment


    • #3
      Vielen Dank

      Mit Postmessage funktioniert es wunderbar

      Gruß Jan Brandstei

      Comment


      • #4
        Hallo,

        könnte ich evtl. eine Kopie des Tools bekommen, wenn dieses fertig ist?

        Danke schonmal,
        Michae

        Comment

        Working...
        X