如何将项目的文件路径放到控制台应用程序窗口中?

我希望能够让用户将文件拖放到我的控制台应用程序窗口,这样他们就不会被迫将文件拖放到应用程序的图标上(或链接,甚至更糟糕的是在控制台中编写命令行)。 如何获取我放入应用程序窗口的文件路径列表?

你可以只听取键盘。 将文件拖到控制台窗口时,窗口会获取键盘事件,就像直接输入文件名一样。

这就是你可以在cmd或PowerShell窗口上删除文件并获得完整文件名的方式,就像直接输入一样,它也适用于你自己的应用程序。

控制台应用程序不拥有其窗口, csrss.exe确实如此。 因此,即使您找到窗口HANDLE ,您也无法注册拖放或处理丢弃消息。 因此,您的控制台应用程序仅限于csrss.exe通过Console API转发的消息类型。 它们列在这里: http : //msdn.microsoft.com/en-us/library/windows/desktop/ms683499.aspx拖放不在其中,尽管控制台内有鼠标事件。

您最好的选择可能是使应用程序看起来像一个控制台应用程序,但不使用Windows控制台。 相反,您可以在屏幕上绘制文本和光标并进行键盘输入,从而创建命令行界面。

这种事情被称为“控制台模拟器”,您可能会发现已经构建满足您需求的一个。

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

包含控制台应用程序的窗口是CMD应用程序(cmd.exe)的窗口,您无法更改Windows控制台的基本行为。

CMD的工作方式类似于终端(putty,telnet,ssh等) – 它将字符从键盘发送到应用程序(确切地说 – 它将字符发送到“标准输入”)并显示由应用程序的“标准输出”生成的字符。

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

我的Windows 7下CMD.exe的行为

我可以通过拖放传递文件名(带完整路径)。 在cmd窗口中删除一个“文件图标”将“键入”文件名 – 但没有CR / LF(换行符)字符,因此“readline”函数将不起作用。

删除多个文件图标只会传递一个文件。

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