控制台应用程序的拖放事件处理程序

时间:2018-11-30 09:28:41

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

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

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

如果我可以创建一个单独的处理程序以在写入路径之前对其进行拦截,则可以在返回字符串之前在单个位置清除引号。有什么办法吗?

1 个答案:

答案 0 :(得分:5)

在控制台模式应用程序中不支持拖放。这仅是因为conhost.exe实现了它,它是拥有控制台窗口的进程。您不能混淆它的作用,不同的过程。顺便说一句,也是将conhost.exe添加到Win7的原因,有必要允许从Explorer拖动到运行UAC提升的控制台应用程序。通常不允许。

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

相关问题