【问题标题】:C# measuring copy time thought windows explorerC# 测量复制时间思考 Windows 资源管理器
【发布时间】:2013-10-05 19:44:09
【问题描述】:

我正在尝试创建一个复制文件或文件夹并测量复制时间的函数

 public static TimeSpan CopyFileExplorer(string filePath, string fileDestination)
    {

        string command = @"/select, " + filePath;
        System.Diagnostics.Process.Start("explorer.exe", command);
        SendKeys.Send("^(C)");
        command = @"/select, " + fileDestination;
        System.Diagnostics.Process.Start("explorer.exe",command);
        DateTime startCopy = DateTime.Now;
        SendKeys.Send("^(V)"); 

        //need to be catched when explorer finishes the copy
        DateTime endCopy = DateTime.Now;

        return endCopy - startCopy;
    }

我试图找到资源管理器的“复制窗口”何时消失,但我没有成功...

【问题讨论】:

  • 有什么理由不使用File.Copy(sourceFileName, destFileName)
  • 我需要使用 Windows 资源管理器...并像用户一样执行
  • 为什么?仍然不明白,永远不会有理由使用这样的东西,并且从表单应用程序中发送关键命令并打开资源管理器窗口是非常糟糕的做法......
  • @Ela 一个有效的论点是通过资源管理器复制允许复制到不是简单目录的位置(ZIP 文件、FTP 服务器等)。这仍然不需要向其他进程发送密钥,但这将是不使用File.Copy 的原因。 (我认为IFileOperation 是正确的选择,但我并不完全确定。)
  • 我知道这是一种糟糕的方式...而且人们会以这种方式复制文件...我的目标是像使用 Windows 的普通用户一样执行文件的复制浏览器并测量所花费的时间

标签: c#


【解决方案1】:

虽然我不明白你为什么会做这种可怕的事情

你应该试试SendKeys.SendWait("");

关于发送ctrl+c、ctrl+v到资源管理器窗口的解决方案,这里有一些关于如何使用资源管理器的其他线程:

Send Folder Rename Command to Windows Explorer

C# Send Commands

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多