我如何获得项目的文件路径下降到一个控制台应用程序窗口?(How do I get file path

2019-08-01 01:25发布

我希望能够让用户将文件拖放到我的控制台应用程序的窗口,使他们不会被强迫拖放文件到应用程序的图标(或链接,或者甚至更糟写在控制台命令行)。 我如何得到我的文件拖放到我的应用程序窗口的路径列表?

Answer 1:

你可以只监听键盘。 当将文件拖动到控制台窗口的窗口获取键盘事件,如果文件名是直接输入。

这就是你可以在删除一个文件cmd或PowerShell窗口,并获得完整的文件名,如果直接输入和它的作品同样为自己的应用程序了。



Answer 2:

控制台应用程序没有自己的窗口, csrss.exe一样。 其结果是,即使你找到的窗口HANDLE ,您将无法为拖动和下降登记或办理下降的消息。 因此控制台应用程序被限制到由转发的类型的消息csrss.exe通过控制台API。 他们在这里列出: http://msdn.microsoft.com/en-us/library/windows/desktop/ms683499.aspx拖和下降并不在其中,但在控制台中的鼠标事件的。

最好的办法可能是让这看起来像一个控制台应用程序的应用程序,但不使用Windows控制台。 相反,你会绘制文本,并在屏幕上的光标,并采取键盘输入,创建一个命令行界面。

这样的事情被称为“游戏机模拟器”,你也许可以找到一个已经建成,以满足您的需求。



Answer 3:

你不能因为控制台应用程序没有窗户。 它具有标准的输入,输出和错误流。

包含控制台应用程序窗口CMD应用程序(CMD.EXE)的窗口,你不能改变Windows控制台的基本行为。

CMD工作方式类似终端(油灰,TELNET,SSH等) - 它发送字符从键盘向应用(准确地说 - 它发送字符“标准输入”)并显示由应用程序的“标准输出”而生成的字符。

阅读一些关于标准流。 http://en.wikipedia.org/wiki/Standard_streams

我在Windows下的cmd.exe行为7

我可以通过从拖/放文件名(带完整路径)。 上cmd窗口丢弃一个“文件图标”,将“类型”的文件名 - 但没有CR / LF(换行)字符,所以“readline的”功能将不起作用。

删除多个文件图标将只通过一个文件。

对不起,如果我做了一些语言错误。



文章来源: How do I get file paths of items dropped onto a console application window?