【问题标题】:Drag and drop event handler for console apps控制台应用程序的拖放事件处理程序
【发布时间】:2018-11-30 09:28:41
【问题描述】:

这个问题不是关于如何通过将文件拖放到exe上然后访问文件路径作为参数来打开控制台应用程序。

相反,这是用于处理将文件拖放到已打开的控制台窗口上。如果您在等待Console.ReadLine() 上的输入时曾经这样做过,您就会知道它会将拖放的文件路径输入到控制台窗口中,以便您可以访问它。问题是它想将路径用双引号括起来,这会导致 IO 命名空间中的许多方法出现问题。

如果我可以在路径写入之前创建一个处理程序来拦截路径,那么我可以在返回字符串之前在一个地方清除引号。有什么办法吗?

【问题讨论】:

    标签: .net drag-and-drop console-application


    【解决方案1】:

    控制台模式应用程序不支持拖放。这仅是因为 conhost.exe 实现了它,即拥有控制台窗口的进程。你不能弄乱它的作用,不同的过程。 Fwiw,也是需要将 conhost.exe 添加到 Win7 的原因,有必要允许从资源管理器拖动到使用 UAC 提升运行的控制台应用程序。通常不允许。

    添加双引号是为了使命令处理器更易于使用。它需要这些双引号来正确处理带有嵌入空格的路径。编写代码来处理它们应该是直截了当的,String.Replace() 可以完成工作。双引号在路径字符串中永远无效,因此您甚至不必检查它们是否出现在开头和结尾。

    【讨论】:

    • 只是想澄清一下,我说的是把文件拖到一个已经打开的控制台窗口上,所以不会有任何命令解析。我现在正在做的是在我的应用程序请求路径输入时使用 `.Trim('"')' 删除双引号,但是每次都这样做有点乏味。基于拖放到打开的控制台窗口上的答案也是如此?
    • 是的,它基于任何控制台窗口。
    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2012-07-07
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多