Drag&Drop für Outlook und pdf

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Drag&Drop für Outlook und pdf

Beitrag von satmax »

Ich soll per drag & drop Outlook Mails und PDF-Anhänge ins Programm aufnehmen und auch speichern. Das Problem, mit so Windows Sachen wie Drag&Drop habe ich noch nie gearbeitet. Dementsprechend auch null Ideen wie ich das angehen soll. Brauche ich da externe Tools, gibt es Beispielprogramme oder Tools?

Gruß
Markus
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drag&Drop für Outlook und pdf

Beitrag von brandelh »

Mann kann den einzelnen Controls beibringen, dass sie auf ein DROP reagieren sollen ... XbpWindow():dragDrop := {|p1,p2,oXbp| tuwas(p1,p2,oXbp) }
Was allerdings von "Outlook Mails und PDF-Anhänge" ankommt und wie die Funktion das umsetzt, weiß ich nicht.
Grundsätzlich reagiert das Fenster auf den Event und ruft den von dir angegebenen Codeblock auf. Dieser muss die Daten zerlegen und sinnvoll verarbeiten.

Eventuell geht es besser über die Zwischenablage: XbpClipBoard()

In der Onlinehilfe und auch hier gibt es schöne Beispiele.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Drag&Drop für Outlook und pdf

Beitrag von AUGE_OHR »

satmax hat geschrieben:Ich soll per drag & drop Outlook Mails und PDF-Anhänge ins Programm aufnehmen und auch speichern.
siehe dir mal c:\ALASKA\XPPW32\Source\samples\basics\DRAGDROP\DROP.EXE an.

nun kannst du aus dem Explorer etwas "raus-ziehen" und es auf das Demo "fallen lassen".

Code: Alles auswählen

METHOD MainDialog:ValidateFormat( oData )
...
IF oData:QueryGetFormat()
und da hast du die erste "Begrenzung" von Xbase++
Vordefinierte Datenformate

Konstante Beschreibung

XBPCLPBRD_TEXT Daten im ASCII-Textformat
XBPCLPBRD_BITMAP Grafik im Bitmap-Format
XBPCLPBRD_METAFILE Grafik im Metafile-Format
XBPCLPBRD_FILELIST Liste mit Dateien
also wenn du ein PDF aus dem Explorer nimmst wird er es nicht "annehmen" ...

nun das ganze mit Outlook und einer eMail mit Bild (JPG). ich versuche nun das Bild per DragDrop und dem Demo und ... NICHTS !!!
"das" DragDrop hat was mit OLE zu tun und das kann Xbase++ gar nicht "so" handlen ...

Ich würde die Sache evtl. anders angehen :
a.) per activeX ein Browse auf die "IN-Box" um an die Attachments zu kommen
b.) per activeX / DynamicCast den "Drop - Event" abfangen ...

oder man nimmt eine 3PP LIB wie SEE32 und holt damit die Emails / Attachments ab.
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Drag&Drop für Outlook und pdf

Beitrag von georg »

Hallo, Markus -


Xbase++ unterstützt nur eine Auswahl der Möglichen Objekte, die per Drag-and-Drop übertragen werden können. Ich habe das vor Jahren mit Lotus Notes Mails versucht, die man zwar auf den Desktop ziehen konnte (= unterstützter Objekt-Typ), die aber von Xbase++ nicht akzeptiert wurden.

Am besten schaust Du Dir im Debugger mal an, was da für ein Objekt-Typ ankommt.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Drag&Drop für Outlook und pdf

Beitrag von satmax »

Hallo,

Ich habe mir jetzt das Beispiel drop.exe etwas angesehen. Bei PDF's komme ich schon klar, ich benötige nur den Filenamen. Ich kann dann entscheiden ob ich mir nur den Filenamen merke oder die Datei auch gleichzeitig verschiebe / kopiere. Das sollte so weit in Ordnung gehen.

Mit den Mails komme ich noch nicht ganz klar. Ein Abholen ist nicht sehr sinnvoll da ich nur eine kleine Anzahl der Mails archivieren möchte. Wobei da theoretisch ein weiterleiten an eine bestimmte Mailadresse funktionieren könnte. Diese Mails müsste man aus dem Programm direkt abholen und zuordnen, was aber zumindest zwei Benutzerschritte voraussetzt.

Ziehe ich eine Mail aus Outlook auf drag.exe wird mir der Header angezeigt. Ziehe ich die Mail zuvor auf den Desktop wird eine Datei erstellt und ich kann ich die Mail vom Desktop auf drag.exe ziehen und erhalte dort ebenfalls den Filenamen. Der Benutzer müsste halt wieder 2 Schritte durchführen,
1. Mail in (File-) Ordner ziehen
2. Mail vom Ordner in die Anwendung ziehen (Ich kann mir dann den Pfad wieder merken und/oder die Datei verschieben/kopieren).

Im Prinzip soll das ein Archivierungssystem werden wo man verschiedene Dokumente einem Auftrag zuordnen kann. Wobei für den Beginn reicht sicher eine PDF Variante und eben die Mails. Theoretisch könnte ich die Mails auch in ein PDF drucken und dann das PDF archivieren, sind aber eben wieder zumindest 2 Schritte...


Gruß
Markus
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drag&Drop für Outlook und pdf

Beitrag von brandelh »

wie gesagt, du solltest das empfangene Objekt im debugger untersuchen, es könnte sein, dass es den Text der eMail irgendwie enthält.
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Drag&Drop für Outlook und pdf

Beitrag von satmax »

brandelh hat geschrieben:wie gesagt, du solltest das empfangene Objekt im debugger untersuchen, es könnte sein, dass es den Text der eMail irgendwie enthält.
Habe ich versucht, bei den Mails kommen nur die Headerdaten.

Gruß
Markus
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Drag&Drop für Outlook und pdf

Beitrag von satmax »

AUGE_OHR hat geschrieben: Ich würde die Sache evtl. anders angehen :
a.) per activeX ein Browse auf die "IN-Box" um an die Attachments zu kommen
b.) per activeX / DynamicCast den "Drop - Event" abfangen ...
Hallo Jimmy,

jetzt geht es ans eingemachte, da wird es für mich jetzt richtig schwierig, mit ActiveX und Fremd-Dlls habe ich noch nie gearbeitet. Ich möchte mir das aber gerne mal etwas ansehen da ich es auch für andere Parts benötige.

Gibt es Samples wie man externe Dll's einbindet und deren Funktionen aufruft?

Gruß
Markus
Gruß
Markus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Drag&Drop für Outlook und pdf

Beitrag von Koverhage »

Wenn Du die Mail speicherst, wird diese normalerweise als EML Datei gespeichert
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drag&Drop für Outlook und pdf

Beitrag von brandelh »

du solltest dir wirklich mal die Beispiele auf der Platte ansehen ;-)

?\XPPW32\source\samples\activex ...
?\XPPW32\source\samples\basics\ExtDll

irgendwo meine ich auch mal ein outlook Beispiel gesehen zu haben, aber selbst habe ich outlook nie genutzt.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Drag&Drop für Outlook und pdf

Beitrag von Tom »

per activeX ein Browse auf die "IN-Box" um an die Attachments zu kommen
Das geht auch per SOCMAPI.DLL, die ziemlich robust und überschaubar ist. Es gibt sie kostenlos und mit brauchbarer Dokumentation auf der Alaska-Site:

ftp://ftp.alaska-software.com/acsn/socmapi3.zip

Damit kommt man an die Inbox und kann die Mails z.B. in einer Tabelle in der App anzeigen, sie auch filtern und ggf. automatisch zuordnen.

Dragging aus Outlook heraus greift immer nur bestimmte Teilelemente einer Mail, ist also nutzlos.

Alternativ könnte man auch mit der SOCMAPI oder z.B. auch den Mailtools von Marshallsoft einen eigenen Mailklienten ins Programm einbauen, der Mails von bestimmten Accounts abholt, im Idealfall, ohne sie vom Server zu löschen. Das scheitert aber, wenn andere Mailprogramme genau diese Mails vorher schon abgeholt und eben gelöscht haben. Also lieber per SOCMAPI direkt an die Inbox.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Drag&Drop für Outlook und pdf

Beitrag von AUGE_OHR »

satmax hat geschrieben:Bei PDF's komme ich schon klar, ich benötige nur den Filenamen.
ja das ist die Option XBPCLPBRD_FILELIST
satmax hat geschrieben:Ziehe ich eine Mail aus Outlook auf drag.exe wird mir der Header angezeigt. Ziehe ich die Mail zuvor auf den Desktop wird eine Datei erstellt und ich kann ich die Mail vom Desktop auf drag.exe ziehen und erhalte dort ebenfalls den Filenamen.
der Desktop ist das Listview vom Explorer und diese "alte" Art von DragDrop kann Xbase++ "nur".

hier ein Beispiel mit ot4xb (/PM:PM linken) was o:DropZone := .T. (WS_EX_ACCEPTFILES) im Prinzip macht.

Code: Alles auswählen

#include "ot4xb.ch"
#include "winuser_constants.ch"
//----------------------------------------------------------------
proc main
local hWnd := SetAppWindow():GetHWnd()

ot4xb_subclasswindow(hWnd,MyHandler(),NIL,"Drop_wndproc")
delegated_eval( {||@shell32:DragAcceptFiles(hWnd,1)} )

while inkey(0) != 27
end

return
//----------------------------------------------------------------
CLASS MyHandler
EXPORTED:
INLINE CLASS METHOD Drop_wndproc(hWnd,nMsg,wp,lp)
local p,cb,aFiles,n,nn
if nMsg == WM_DROPFILES
   nn := @shell32:DragQueryFileA(wp,-1,0,0)
   if nn > 0
      aFiles := Array(nn)
      p := _xgrab(260)
      for n := 1 to nn
         cb := @shell32:DragQueryFileA(wp,n-1,p,260)
         aFiles[n] := PeekStr(p,,cb)
      next
      _xfree(p)
      ? aFiles
      // or PostAppEvent(custom_event, aFiles,, oXbp)
   end
   return NIL
end
return NIL
ENDCLASS
es sind also "nur" die SHELL32.DLL API Function die Xbase++ nutzen kann.

nun gibt es aber auch den WM_DROPFILES Event den eine "registrierte" Applikation empfangen / auswerten können muss.
... aber an solche Events kommst du nicht mit "pure" Xbase++
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Drag&Drop für Outlook und pdf

Beitrag von satmax »

@All

Danke erst mal. Kurz zusammengefasst: einfach eine komplette Mail per Drag&Drop zu übernehmen ist nicht.

Ich muss dass nochmals überdenken aber es sind einige Interessante Ansätze von Euch dabei.

Gruß
Markus
Gruß
Markus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Drag&Drop für Outlook und pdf

Beitrag von AUGE_OHR »

satmax hat geschrieben:Kurz zusammengefasst: einfach eine komplette Mail per Drag&Drop zu übernehmen ist nicht.
Das hab ich nicht gesagt ... nur ist es eben nicht "so" einfach wie mit dem Explorer / Desktop.
mal sehen ob ich von Pablo eine Demo bekommen kann ... wäre auch ein Thema für die nächste Devcon.
gruss by OHR
Jimmy
Antworten