osc*_*tin 2 .net drag-and-drop console-application
这个问题不是关于如何通过将文件拖放到exe上然后作为参数访问文件路径来打开控制台应用程序.
相反,这是用于处理文件在已打开的控制台窗口上的拖放.如果您在等待输入时已经完成此操作Console.ReadLine(),您将知道它会将拖放/删除的文件路径输入控制台窗口,以便您可以访问它.问题是它想要用双引号包装路径,这会导致IO命名空间中的许多方法出现问题.
如果我可以创建一个处理程序来在它写入之前拦截路径,我可以在返回字符串之前清除单个位置的引号.有什么办法吗?
控制台模式应用程序中没有拖放支持.这只是因为conhost.exe实现它,即拥有控制台窗口的进程.你不能搞砸它做什么,不同的过程.Fwiw,也是需要将conhost.exe添加到Win7的原因,有必要允许从资源管理器拖动到以UAC提升运行的控制台应用程序.通常不允许.
添加双引号是因为这意味着使命令处理器更易于使用.它需要这些双引号来正确处理带有嵌入空格的路径.编写代码来处理它们应该是直截了当的,String.Replace()可以完成工作.双引号在路径字符串中永远不会有效,因此您甚至不必检查它们是否出现在开头和结尾.