public static int DoDragDropHook(NativeMethods.IDataObject pDataObj, NativeMethods.IDropSource pDropSource, uint dwOKEffects, uint[] pdwEffect) { try { log.Info("Drag started"); if (!DataObjectHelper.GetDataPresent(pDataObj, "FileGroupDescriptorW")) { log.Info("No virtual files found -- continuing original drag"); return(NativeMethods.DoDragDrop(pDataObj, pDropSource, dwOKEffects, pdwEffect)); } //Start new drag log.Info("Virtual files found -- starting new drag adding CF_HDROP format"); log.InfoFormat("Files: {0}", string.Join(",", DataObjectHelper.GetFilenames(pDataObj))); NativeMethods.IDataObject newDataObj = new OutlookDataObject(pDataObj); int result = NativeMethods.DoDragDrop(newDataObj, pDropSource, dwOKEffects, pdwEffect); //Get result log.InfoFormat("DoDragDrop result: {0}", result); return(result); } catch (Exception ex) { log.Warn("Dragging error", ex); return(NativeMethods.DRAGDROP_S_CANCEL); } }
public static extern int DoDragDrop(NativeMethods.IDataObject pDataObj, NativeMethods.IDropSource pDropSource, uint dwOKEffects, uint[] pdwEffect);