我希望能够让用户将文件拖放到我的控制台应用程序的窗口,使他们不会被强迫拖放文件到应用程序的图标(或链接,或者甚至更糟写在控制台命令行)。 我如何得到我的文件拖放到我的应用程序窗口的路径列表?
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的”功能将不起作用。
删除多个文件图标将只通过一个文件。
对不起,如果我做了一些语言错误。