Dateien von MS Outlook per Drag'n Drop empfangen
Verfasst: 22.01.2013 15:20
Hat es schon jemand geschafft eine Email oder einen Anhang der per Drag'n Drop
aus MS Outlook gedroppt wird zu empfangen und zu speichern?
Mit folgendem Code kann man zumindest die Dateinamen auslesen, aber an die
Inhalte komme ich irgendwie nicht ran
Kann jemand helfen?
aus MS Outlook gedroppt wird zu empfangen und zu speichern?
Mit folgendem Code kann man zumindest die Dateinamen auslesen, aber an die
Inhalte komme ich irgendwie nicht ran

Kann jemand helfen?
Code: Alles auswählen
; http://www.purebasic.fr/english/viewtopic.php?p=243486#p243486
Structure _FILEDESCRIPTOR
dwFlags.l
clsid.CLSID
sizel.SIZE
pointl.POINT
dwFileAttributes.l
ftCreationTime.FILETIME
ftLastAccessTime.FILETIME
ftLastWriteTime.FILETIME
nFileSizeHigh.l
nFileSizeLow.l
cFileName.c[#MAX_PATH]
EndStructure
Structure _FILEGROUPDESCRIPTOR
cItems.l
fgd._FILEDESCRIPTOR[0]
EndStructure
#Window = 0
Enumeration ; Images
#ImageSource
#ImageTarget
EndEnumeration
Enumeration ; Gadgets
#TargetOutlook
EndEnumeration
If OpenWindow(#Window, 0, 0, 760, 310, "Drag & Drop", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
; Create some images for the image demonstration
;
CreateImage(#ImageSource, 136, 136)
If StartDrawing(ImageOutput(#ImageSource))
Box(0, 0, 136, 136, $FFFFFF)
DrawText(5, 5, "Drag this image", $000000, $FFFFFF)
For i = 45 To 1 Step -1
Circle(70, 80, i, Random($FFFFFF))
Next i
StopDrawing()
EndIf
CreateImage(#ImageTarget, 136, 136)
If StartDrawing(ImageOutput(#ImageTarget))
Box(0, 0, 136, 136, $FFFFFF)
DrawText(5, 5, "Drop images here", $000000, $FFFFFF)
StopDrawing()
EndIf
ListIconGadget(#TargetOutlook, 0, 0, 700, 300, "Drop Email here", 200)
; Register the private clipboard formats of Outlook
cf_content = RegisterClipboardFormat_(#CFSTR_FILECONTENTS)
; We need to use Non unicode version of CFSTR_FILEDESCRIPTOR even in unicode build
cf_descrip = RegisterClipboardFormat_(#CFSTR_FILEDESCRIPTOR)
cf_email = RegisterClipboardFormat_("Internet Message (rfc822/rfc1522)")
EnableGadgetDrop(#TargetOutlook, #PB_Drop_Files, #PB_Drag_Copy)
EnableGadgetDrop(#TargetOutlook, #PB_Drop_Text, #PB_Drag_Copy)
EnableGadgetDrop(#TargetOutlook, cf_email, #PB_Drag_Copy)
EnableGadgetDrop(#TargetOutlook, cf_descrip, #PB_Drag_Copy)
EnableGadgetDrop(#TargetOutlook, cf_content, #PB_Drag_Copy)
Repeat
Event = WaitWindowEvent()
; DragStart event on the source gadgets, initiate a drag & drop
;
If Event = #PB_Event_Gadget And EventType() = #PB_EventType_DragStart
ElseIf Event = #PB_Event_GadgetDrop
Select EventGadget()
Case #TargetOutlook
Select EventDropType()
Case #PB_Drop_Text
AddGadgetItem(#TargetOutlook, -1, "Text: " + EventDropText())
Case #PB_Drop_Files
AddGadgetItem(#TargetOutlook, -1, "Files: " + EventDropFiles())
Case cf_email
ClearGadgetItemList(1)
ClearGadgetItemList(2)
*Buffer = EventDropBuffer()
msg$ = PeekS(*Buffer)
Subject = FindString(msg$, "Subject:", 1) + 9
eos = FindString(msg$, #CRLF$, Subject)
subject$ = Mid(msg$, Subject, eos - Subject)
AddGadgetItem(#TargetOutlook, -1, "Email: " + subject$ + PeekS(*Buffer))
Case cf_content
MessageRequester("Hey", "#CFSTR_FILECONTENTS is working", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
Case cf_descrip
*fgdBuffer._FILEGROUPDESCRIPTOR = EventDropBuffer()
eml$ = PeekS(@*fgdBuffer\fgd[0]\cFileName)
AddGadgetItem(#TargetOutlook, -1, "Descr: "+ eml$)
EndSelect
;AddGadgetItem(#TargetOutlook, -1, PeekS(EventDropBuffer()))
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
End