shenjxcn 2021-12-30 05:08 采纳率: 100%
浏览 210
已结题

将邮件项目拖放到vb.net桌面保存为指定文件夹的文件

求助:

邮件系统中,可以将邮件项目拖放到桌面,自动保存为文件。

问题:

通过vb.net,也实现同样的操作:
将邮件项目拖放到winform桌面(开发程序窗体),自动保存为指定目录下面的文件。

试了一下,代码如下,问题出在ms对象为nothing,无法获取对象。

对如何处理流数据,不太懂。

请高手帮忙、指导一下?[玫瑰][玫瑰]

img

Private Sub 文件名称_DragDrop(sender As Object, e As DragEventArgs) Handles Me.DragDrop

    If e.Data.GetDataPresent("FileGroupDescriptor") Then



        Dim theStream As Stream = DirectCast(e.Data.GetData("FileGroupDescriptor"), Stream)

        Dim fileGroupDescriptor As Byte() = New Byte(512) {}

        theStream.Read(fileGroupDescriptor, 0, 512)



        Dim objFileName As New StringBuilder()



        Dim i As Integer = 76

        While fileGroupDescriptor(i) <> 0

            objFileName.Append(Convert.ToChar(fileGroupDescriptor(i)))

            i += 1

        End While



        Dim strSaveFileName As String = "D:\" + objFileName.ToString()



        Dim ms As System.IO.MemoryStream

        ms = e.Data.GetData("FileContents", True)

        Dim fs As FileStream

        fs = New FileStream(strSaveFileName, FileMode.Create)



        fs.CopyTo(ms)



        fs.Close()

        theStream.Close()



    End If



End Sub
  • 写回答

10条回答 默认 最新

  • CSDN专家-showbo 2021-12-30 09:53
    关注

    题主有否试过获取拖拽文件所在路径,直接拷贝这个路径的文件就行,我这里测试用Foxmail直接拖到textbox上Foxmail会生成临时文件。没outlook,题主可以自己试试outlook

    img

    using System;
    using System.IO;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp7
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void evt_DragDrop(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    var filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));
                    textBox1.Text+= string.Join("\r\n", filePaths);
    
                    foreach (var f in filePaths)
                        File.Copy(f, @"F:\Temp\" + Path.GetFileName(f),true);
                }
            }
    
            private void evt_DragEnter(object sender, DragEventArgs e)
            {
                e.Effect = DragDropEffects.All;
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(9条)

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 已采纳回答 12月31日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名