AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Outlook-Emails per Drag und Drop auf App ziehen...

Outlook-Emails per Drag und Drop auf App ziehen...

Ein Thema von Darkmorph · begonnen am 17. Jun 2008 · letzter Beitrag vom 18. Jun 2008
Antwort Antwort
Darkmorph

Registriert seit: 24. Mär 2003
37 Beiträge
 
Delphi 6 Professional
 
#1

Outlook-Emails per Drag und Drop auf App ziehen...

  Alt 17. Jun 2008, 14:46
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
  Mit Zitat antworten Zitat
Tyrolean

Registriert seit: 3. Jul 2003
76 Beiträge
 
Delphi 7 Professional
 
#2

Re: Outlook-Emails per Drag und Drop auf App ziehen...

  Alt 17. Jun 2008, 17:51
Hallo!

Das mache ich mit dem Dropmaster von Raize (http://www.raize.com/DevTools/DropMaster/Default.asp).
Geht ganz gut.

Gruß aus den Bergen
Günter
  Mit Zitat antworten Zitat
Darkmorph

Registriert seit: 24. Mär 2003
37 Beiträge
 
Delphi 6 Professional
 
#3

Re: Outlook-Emails per Drag und Drop auf App ziehen...

  Alt 18. Jun 2008, 10:24
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...
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.347 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Outlook-Emails per Drag und Drop auf App ziehen...

  Alt 18. Jun 2008, 10:56
Such mal hier im Forum nach Hier im Forum suchenShellDropper. Damit konnte ich jedenfalls mit 10 Zeilen Code wenigstens Anlagen aus Oulook in meine Anwendung plumpsen lassen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
axellang

Registriert seit: 3. Mai 2003
Ort: München
138 Beiträge
 
Delphi XE2 Enterprise
 
#5

Re: Outlook-Emails per Drag und Drop auf App ziehen...

  Alt 18. Jun 2008, 13:39
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 MelanderBlog herunter, übrigens kostenlos mit Source, und sehe Dir
die Outlook Demo an. In dieser Demo wird genau das gemacht was du willst bzw. benötigst.

Gruß

Axel
Alexander Lang
  Mit Zitat antworten Zitat
Darkmorph

Registriert seit: 24. Mär 2003
37 Beiträge
 
Delphi 6 Professional
 
#6

Re: Outlook-Emails per Drag und Drop auf App ziehen...

  Alt 18. Jun 2008, 13:45
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:
Von Betreff Erhalten Größe
Campusspeicher Team Campusspeicher - Neuigkeiten Sa 14.06 14 KB
Zattoo Support Deutschland User Support Sa 14.06 11 KB
Ich könnte jetzt einfach auf die Schlagworte "Vov", "Betreff", "Erhalten" und "Größe" prüfen, aber das scheint mir doch zu laienhaft in Bezug auf Mehrsprachigkeit von Outlook, Versionsabhängigkeit usw.

Delphi-Quellcode:
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;
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?

Vielen Dank für die bisherige Hilfe und das was da noch kommen mag

Gruß
Benjamin
  Mit Zitat antworten Zitat
Darkmorph

Registriert seit: 24. Mär 2003
37 Beiträge
 
Delphi 6 Professional
 
#7

Re: Outlook-Emails per Drag und Drop auf App ziehen...

  Alt 18. Jun 2008, 13:49
@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.
  Mit Zitat antworten Zitat
Darkmorph

Registriert seit: 24. Mär 2003
37 Beiträge
 
Delphi 6 Professional
 
#8

Re: Outlook-Emails per Drag und Drop auf App ziehen...

  Alt 18. Jun 2008, 14:41
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:
    //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';
Selection ist eine Olevariant-Variable, welche das folgende Ergebnis hält: Outlook.Application.ActiveExplorer.Selection.
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf