Jump to content

Dropping Outlook attachments onto GUI


MFerris
 Share

Recommended Posts

Hi all - hoping some of you OLE/COM/DLL gurus could possibly help me out with a task that has really got me stumped - mostly because I am not terribly familiar with hooking into DLLs and the whole 'DllStruct' arena. I can usually find a solution to my problems by searching these forums as well as VB related scripts and tend to post here only as a last resort - which is where I find myself now.

I am attempting to write a utility which will accept attachments dragged out of Outlook onto my GUI and then save the files to a specified directory. This behavior is not allowed by default. I am able to set up the GUI to accept files dropped onto it with no problem, but attempting to drag an attachment from Outlook onto the GUI shows the 'no action' icon. I've done plenty of searching on how this can be done in VB. I have found some solutions, but I can't figure out how to convert it to AutoIt code. In doing some searches here on the forum, I found which I *think* might be a step in the right direction, however it more or less deals with clipboard data, not actual dropped items onto a control.

I'm not asking for anyone to code this for me, but only to pick the brains of those who understand this a little more clearly and can steer me in the right direction. Also if there is a good tutorial on how to use DLLs with the DLLStruct and DLLStructCreate functions.

Note: Some further code example which sounds like nearly exactly what I'm trying to do (but in VB).

http://social.msdn.microsoft.com/Forums/is/vblanguage/thread/c30b87fa-3257-4b0b-b36b-350b0dd5b397

Private Sub listbox1_DragEnter(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.DragEventArgs) _
         Handles ListBox1.DragEnter
     If (e.Data.GetDataPresent(DataFormats.FileDrop) = True) Then
         e.Effect = DragDropEffects.Copy
     End If
End Sub
Private Sub listbox1_DragDrop(ByVal sender As Object, _
         ByVal e As System.Windows.Forms.DragEventArgs) _
         Handles ListBox1.DragDrop
     For Each oneFile As String In _
             e.Data.GetData(DataFormats.FileDrop)
         ListBox1.Items.AddRange(IO.File.ReadAllLines(oneFile))
     Next oneFile
End Sub
Edited by MFerris
Link to comment
Share on other sites

I can't help you with the "drag" part but for the "Outlook" part you might have a look at my OutlookEX UDF (please check my signature).

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

Thanks, water. I've actually used your UDF for other purposes and it's worked great - thanks for your contribution. I think the bigger nut to crack is getting the AutoIt GUI to accept the dragged attachment as a droppable item, as my research shows that the data contained in the outloook 'droppable' is a list of the items being dragged (or possibly binary data of the items themselves - this part I'm not entirely clear on). So I don't really think there's much to do as far as hooking into Outlook is concerned. I may look into whether the clipboard route may work as a last resort. (CTRL+C on an attachement in Outlook triggers the DropEffect script that i linked to - haven't explored that route very much yet as that's not the optimal solution.)

Update: It seems the VB code isn't really going to help as I was researching the use of 'System.Windows.Forms' doesn't really apply to AutoIt GUIs - So I'm guessing now I'm looking for something that will allow the AutoIt GUI to accept the drop action. I found another solution for C# here but the same construct applies. I just need to find a DLL or OLE hook that will let me force AutoIt to allow the drop and read the stream of data that it receives.

Edited by MFerris
Link to comment
Share on other sites

looks like a good start for the drag & drop issue.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...