Domino 9 und frühere Versionen > ND8: Entwicklung

Markierten Text in Zwischenablage kopieren

(1/2) > >>

falko_psa:
Hallo Forum!

Ich habe eine einfache Aufgabe. Ich soll über eine Action am Mail-Formular den markierten Text auslesen und in die Zwischenablage kopieren. Dafür habe ich folgenden Code verwendet:

--- Code: --- Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
uidoc.Copy

--- Ende Code ---
Das funktioniert auch zuverlassig, solange es sich um Plain Text E-Mails handelt. Habe ich aber eine Rich Text E-Mail wird immer die Headline des E-Mail-Formulars in die Zwischenablage kopiert. Da heute die wenigsten Mails als reiner Text verschickt werden, funktioniert meine Funktion nur selten.

Ich habe auch schon alternativ mit GetSelectedText experimentiert aber die Funktion liefert in besagtem Fall immer einen Leerstring. Das brint mich auch nicht weiter.

Als Ergänzung muss ich noch sagen, dass das Mail-Formular immer im Read Mode ist, da meine Funktion hauptsächlich für eingehende E-Mails gedacht ist. Im Edit Mode funktioniert es aber ich brauche es im Read Mode.

Was mache ich falsch? Gibt es eine Alternative, wie ich an den markierten Text aus dem Mail-Body auslesen kann? Ich sitze jetzt schon einige Stunden an diesem Problem und bin über jeden Tip dankbar ...

Viele Grüße

koehlerbv:
Hier wirst Du um die Windows API nicht herumkommen, da die Notes API hier verständlicherweise nur rudimentäre Funktionalität mit sich bringt.

Bernhard

falko_psa:
Danke für diesen Hinweis Bernhard.
Damit ist das Problem zwar noch nicht gelöst aber ich habe festgestellt, dass Notes im Hintergrund den IE verwendet, um den Mail-Body anzuzeigen und zwar immer dann, wenn das Kopieren nicht funktioniert. Wenn dagegen die Notes eigene Rich Text Klasse zum Anzeigen verwendet wird, funktioniert das Kopieren in die Zwischenablage. Meine ursprüngliche Annahme, dass es nur bei Plain Text Mails funktioniert, ist damit auch nicht richtig. Es geht nur bei HTML-Mails nicht. Ein Stück weiter hast Du mir geholfen.

Jetzt ist natürlich die Frage, wie bekomme ich den im Hintergrund werkelnden IE dazu, seinen Text in die Zwischenablage zu plazieren. Wenn man an das COM-Interface (IHTMLDocument) herankäme, wäre es einfach. Da fällt mir im Moment keine Lösung ein. Hat hier im Forum schon mal jemand so was gemacht?

Falko

Peter Klett:
Bei einem ähnlichen Problem mit Mails in einem zentralen Posteingang (keine Mailschablone, sondern eigenentwickelte Datenbank), in dem die Mitarbeiter nur Autorenrechte haben (also kein Bearbeitungsrecht auf eingegangene Mails, da die kein Autorenitem besitzen), habe ich das so gelöst:

Im QueryOpenDocument der Ansicht wird geprüft, ob im Dokument das Item Mime_Version vorhanden ist. Falls nicht, mache ich nichts weiter.
Auf dem Server wird ein Agent getriggert, der in das betroffene Dokument ein Autorenitem mit einem "*" schreibt.
Im PostOpen wird das Dokument in den EditMode versetzt, im Frontend gespeichert, Mime_Version und das Autorenitem gelöscht, nochmals im Frontend gespeichert und dann in den Lesemodus versetzt.

Auf diese Weise werden Mime-Mails automatisch in Richtext umgewandelt und können im Folgeschritt so verarbeitet werden, wie zu den guten alten Zeiten, als Notes-Mails noch richtige Notes-Mails waren ;)

falko_psa:
Interessante Lösung Peter.
Für mich hört sich das wie eine Konvertierung an. Ändert sich dadurch die Mail, soll heissen, bekommt der Anwender davon etwas mit?

Ich habe für mein Problem eine Teillösung gefunden. Es liegt allein an dem embedded Browser. Den kann ich per Preferences abschalten (Disable embedded browser for MIME mail) und dann funktioniert es. Das geht praktisch in die gleiche Richtung wie in Rich Text umwandeln.

Allerdings löst das mein Problem nicht wirklich, da ich diese Funktion ja eigentlich an unsere Kunden ausliefern muss. Ich weiss nicht, wie die reagieren, wenn ich verlange den embedded Browser für MIME-Mails abzuschalten.

Falko

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln