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

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

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

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

如果我可以创建一个处理程序来在写入路径之前拦截路径,那么我可以在返回字符串之前清除单个位置的引号。有办法做到这一点吗?

最佳答案

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

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

关于.net - 控制台应用程序的拖放事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53554693/

相关文章:

c# - 枚举作为标志使用、设置和移动

c# - Entity Framework 在删除前执行更新,我想停止这个

java - 为什么我的 JavaFX 应用程序的拖动例程在 JavaFX 8 中中断?

drag-and-drop - HTML5 - 使用 div 和内部图像拖放

asp.net - 从 asp.net 调用控制台应用程序

c# - 与索引比较查找数组中的值

.net - 如何使用 System.Uri .NET 类来检查 URL 是否有效?

c# - 如何比较泛型类型的值?

javascript - 最好的js拖放框架是什么?

c# - 无法从传输连接读取数据 : The connection was closed error in console application