![]() |
Outlook-Emails per Drag und Drop auf App ziehen...
Hi Leute,
bin am verzweifeln. Suche eine Möglichkeit Emails aus Outlook, per Drag und Drop, in meine Anwendung zu schiessen. Wie man Emails per Oleautomatation oder ExMapi einliesst, weiß ich, aber ich möchte ein Feature bauen, das den Anwender spezifische Emails aus Outlook in mein Programm ziehen laesst. Es würde mir ja reichen, wenn ich nur die EntryId's bekommen würde. Darüber könnte ich auch auf die Messages zugreifen. Im Zweifelsfall, würde es mir schon reichen, zu wissen, das ein Drag Drop von Outlook aus initiiert wurde, dann nämlich würde ich über ActiveExplorer einfach die aktuelle Selektion in Outlook abarbeiten. Währe echt cool, wenn ich hilfreichen Input von euch kriegen könnte. In diesem Sinne, noch einen schönen Tag. Gruß Benjamin |
Re: Outlook-Emails per Drag und Drop auf App ziehen...
Hallo!
Das mache ich mit dem Dropmaster von Raize ( ![]() Geht ganz gut. Gruß aus den Bergen Günter |
Re: Outlook-Emails per Drag und Drop auf App ziehen...
Vielen Dank für deine Antwort, aber ich dachte eher an ein paar Zeilen Code, den ich bei mir integrieren kann, nicht an eine ComponentSuite, welche ich auch noch bezahlen soll :)
Ich werde mal weiter forschen, bin guter Dinge :) Inputs sind trotzdem immer noch mehr als Willkommen... |
Re: Outlook-Emails per Drag und Drop auf App ziehen...
Such mal hier im Forum nach
![]() |
Re: Outlook-Emails per Drag und Drop auf App ziehen...
Hallo Darkmorph,
das mit Outlook ist so ne Sache. Mit Drag and Drop alleine geht das nicht. Um Nachrichten per D&D aus Outlook zu ziehen brauchst Du ein wenig MAPI usw.. Lade Dir die Drag & Drop Component Suite für Delphi von ![]() die Outlook Demo an. In dieser Demo wird genau das gemacht was du willst bzw. benötigst. Gruß Axel |
Re: Outlook-Emails per Drag und Drop auf App ziehen...
Ich benutze nun das IDROPINTERFACE, um ein InterApp-DROP-Event zu erhalten. Daraufhin prüfe ich, per ActiveExplorer.Selection, ob in Outlook Nachrichten selektiert sind und übertrage diese per Ole Automatation. Das funzt auch alles Super, nur wie gehe ich auf Nummer sicher, das der Drop SENDER Outlook ist? Ich bekomme beim Drop-Event, wenn ich Clipboard-Format CF_TEXT einstelle, nur ein Ergebnis wie das folgt:
Zitat:
Delphi-Quellcode:
Dieser Code empfängt verarbeitet das Dropen, es handelt sich dabei um kopierten COde ausm Netz, wo kann oder muß ich in dem COde ansetzen, um die Source-Applikation sicher zu ermitteln?
function TForm1.Drop(const dataObj: IDataObject; grfKeyState: Integer;
pt: TPoint; var dwEffect: Integer): HResult; var aFmtEtc: TFORMATETC; aStgMed: TSTGMEDIUM; pData: PChar; begin {Make certain the data rendering is available} if (dataObj = nil) then raise Exception.Create('IDataObject-Pointer is not valid!'); with aFmtEtc do begin cfFormat := CF_TEXT; ptd := nil; dwAspect := DVASPECT_CONTENT; lindex := -1; tymed := TYMED_HGLOBAL; end; {Get the data} OleCheck(dataObj.GetData(aFmtEtc, aStgMed)); try {Lock the global memory handle to get a pointer to the data} pData := GlobalLock(aStgMed.hGlobal); { Replace Text } Memo1.Text := pData; finally {Finished with the pointer} GlobalUnlock(aStgMed.hGlobal); {Free the memory} ReleaseStgMedium(aStgMed); end; Result := S_OK; end; Vielen Dank für die bisherige Hilfe und das was da noch kommen mag :) Gruß Benjamin |
Re: Outlook-Emails per Drag und Drop auf App ziehen...
@axellang
hab ich schon getan, der Code war mir zu kryptisch und Umfangreich. Mit meiner Methode hab ich die gleiche und mehr Funktionalität mit einem Bruchteil des Codes. Der einzigste Vorteil bisher, solange ich keine alternative hab, wäre, das ich mit der Suit prüfen kann, ob es sich um Outlook-Messages handelt bei dem Drop. Aber dafür installiere ich keine Komplette Komponentenpalette. Nichts desto Trotz, vielen Dank. |
Re: Outlook-Emails per Drag und Drop auf App ziehen...
So, hab mir nochmal Gedanken gemacht und prüfe nun wie folgt. Das dürfte ziemlich sicher sein, falls jemand eine API-Funktion hat, die das sicherer macht, immer her damit. Nun aber zu meinem Ergebnis:
Delphi-Quellcode:
Selection ist eine Olevariant-Variable, welche das folgende Ergebnis hält: Outlook.Application.ActiveExplorer.Selection.
//erst prüfen, ob etwas in Outlook markiert ist
if(Selection.Count>0) then //einfacher Test, ich weiss das Outlook eine Headerzeile + 1 Zeile pro Email ausgibt if(Selection.count=(WordCount5A(pData,#13)-1)) then //ist die Betreffzeile der ersten Email in pData vorhanden? if(pos(Selection.Item[1].Subject,pData)>0) then Memo1.Text := IntToStr(WordCount5A(pData,#13)-1)+' Emails'; WordCount5A ist eine Methode, die die Anzahl von Vorkommnissen eines Chars in einem String ermittelt. pData enthält die DropData als Text. Wenn man noch sicherer gehen will, könnte man testen, ob von allen markierten Emails der Betreff in pData vorhanden ist, das würde aber den Rahmen sprengen, finde ich, und deshalb belasse ich es so, bis mir was besseres daherkommt. Gruß und Dank Benjamin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz