是否可以在应用程序窗口中嵌入系统命令行?
我希望能够让命令行在我的C ++应用程序的底部占用一些空间,并且我的应用程序可以占用上述空间。理想情况下它应该可以在Mac,Linux和Windows上运行,但对于初学者来说,Windows是我在开发它时的主要目标。
答案 0 :(得分:1)
在Windows中,您可以使用某些WinAPI函数执行此操作,例如ShellExecute
和CreateProcess
(还有一些我不记得了)。您从GUI获取命令字符串,将其传递给其中一个WinAPI函数,然后将输出发送回GUI。
您希望在多个平台上执行此操作,因此我建议创建一个通用模块(函数的类或命名空间,无论哪种最适合您),允许使用OS终端与实际的底层操作系统无关。然后。当您想将应用程序移植到另一个操作系统时,您只需更改此模块的实现。
注意:Boost已经(有?)正在开发的库,这使得更容易运行shell命令Boost.Process。但它目前的版本为0.4,并且自2010年10月4日以来一直没有更新(尽管它的状态仍在“继续”)。
答案 1 :(得分:1)
对于Windows而言,Windows控制台窗口是“特殊的”,因为它得到特殊处理,与系统上的任何其他窗口不同。你不会成功地操纵它以供自己使用。举个好例子,尝试在控制台窗口上使用Spy ++。
请注意,使用AllocConsole
创建的窗口不是命令行解释器,它只是一个控制台窗口。
您应该实现自己的控制台窗口,就解释命令而言,我可以根据您的期望,行为方式和复杂性来考虑一些可供选择的选项: