Announcement

Collapse
No announcement yet.

E-Mail Funktion von MS Word per OLE nutzen

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

  • E-Mail Funktion von MS Word per OLE nutzen

    Hallo,

    wie kann ich die MS Word eMail-Funktion von einem Delphi-Programm aus nutzen, wenn ich Word per OLE-Container gestartet
    habe? Ich muß nämlich Word-Dateien aus meinem Delphi-Programm heraus aus der Datenbank starten und per eMail verschicken ...

    eMail-Adresse, Absender u.s.w. will ich programmgesteuert in Word einsetzen. So dass der User dann nur noch auf den eMail-Knopf drücken muß, wenn er will und ab gehts :-)

    Nur wie mache ich das?

    Benutze einen OLE-Container, da der Blobfelder aus der DB laden und speichern kann, und ein TWordApplication aus Delphi 6, welches ich auf das OLEContainer.OLEObjekt per IDispatch setze. Das brauche ich nämlich, um auf Word-Formularfelder zugreifen zu können.

    Wenn unmöglich, dann käme auch ein Versand der Datei per Mail-API über Outlook-Express in Frage, wobei ich dazu allerdings noch nicht rausgefunden habe, wie man den Word-Inhalt als HTML in die Nachricht bekommt, denn als .doc Anhang sollte das nicht verschickt werden ...

    Kann mir irgendwer weiterhelfen?

  • #2
    Hallo,

    ein Beispiel kann hier im FORUM gefunden werden, wenn nach der Zeichenkette <b>IDataObject</b> gesucht wird. Ein vollständiges Beispielprojekt ist zudem in meinem Buch <i>COM/DCOM/COM+ mit Delphi</i> zu finden

    Comment


    • #3
      Danke Andreas, für die schnelle Antwort.

      Das was Du meinst, wäre dann praktisch die "Notlösung". Denn der Benutzer müßte nach dem Editieren des Word-Textes zu der Delphi-Anwendung zurückkehren und dort auf einen eMail-Versenden-Knopf drücken, wonach dann das durchgeführt wird, was Du beschrieben hast.

      Nur wie mache ich es, wenn ich in Word auf den eMail-Knopf drücke? Schließlich drucke und faxe ich ja auch direkt aus Word heraus ... Es öffnet sich dann doch ein Panel, mit Feldern wie in Outlook-Express. Dort sollen nun Empfänger und Betreff schon drinstehen, nämlich mit Werten von meiner Anwendung.

      Das muß doch irgendwie gehen ..

      Comment


      • #4
        Hallo,

        &gt;Es öffnet sich dann doch ein Panel, mit Feldern wie in Outlook-Express.

        es <b>ist</b> Outlook Express bzw. ein installiertes Outlook - Word greift hier auch nur über Automation zu

        Comment


        • #5
          Hallo,

          &gt;es ist Outlook Express bzw. ein installiertes Outlook - Word greift hier auch nur über Automation zu.

          OK, dann müßte man doch wiederum irgendwie auf das in Word eingebettete Outlook-Express zugreifen - und den Empfänger/Betreff dort setzen können ... nur wie????????? Hat das denn noch niemand gemacht? Die Problematik finde ich zumindest sehr interessant: geschachtelte OLE-objekte nutzen.

          Gruß,
          Patric

          Comment


          • #6
            Hallo,

            &gt;..nur wie?

            ein Client kann nur dann über Automation die Kontrolle über eine andere Anwendung übernehmen, wenn das COM-Objekt <b>freiwillig</b> ein Interface dafür zur Verfügung stellt. Es gibt hier theoretisch 2 Optionen: <br>
            1. Wenn sich Outlook über den Aufruf von RegisterActiveObject in der <b>ROT</b> (Running Object Table) einträgt, darf sich ein beliebiger Client über <b>GetActiveObject</b> auf eine bereits lebende Objektinstanz draufschalten und somit die Kontrolle übernehmen. <br>
            2. Wenn eines der Word-Objekte einen Interface-Zeiger auf das eingebundene Outlook-Objekt zurückliefert, kann der Client diesen Weg nutzen.

            Der Fall 1 entfällt bei Outlook Express (keine öffentliche Automation-Schnittstelle), den Fall 2 müsste man in der Dokumentation der COM-Objekte von Microsoft Word recherchieren (Fleißarbeit!)

            Comment


            • #7
              &gt; den Fall 2 müsste man in der Dokumentation der COM-Objekte von Microsoft Word recherchieren (Fleißarbeit!).

              Auch nach langem Suchen habe ich nichts gefunden. Auch das Voreintragen einer FAX-Nr beim Fax-Assistenten scheint nicht möglich zu sein ... Ich gebe auf. Danke trotzdem, Andreas.

              Werde mir behelfen, indem ich die eMail-Adresse in die Zwischenablage kopiere, so dass der User die im eMail-Empfängerfeld nur noch einfügen braucht.

              Gruß,
              Patric

              Comment

              Working...
              X