是否有可能嵌入您的应用程序窗口内系统的命令行吧?在窗口内嵌入命令行?
我希望能够有命令行承担我的C++应用程序,和我的应用程序采取上述空间的底部一定的空间。理想情况下,它应该可以在Mac,Linux和Windows上运行,但对于初学者来说,Windows是我开发它的主要目标。
是否有可能嵌入您的应用程序窗口内系统的命令行吧?在窗口内嵌入命令行?
我希望能够有命令行承担我的C++应用程序,和我的应用程序采取上述空间的底部一定的空间。理想情况下,它应该可以在Mac,Linux和Windows上运行,但对于初学者来说,Windows是我开发它的主要目标。
在Windows中,您可以使用一些WinAPI函数(如ShellExecute
和CreateProcess
(还有其他一些我不记得的东西))来实现。您从GUI获取命令字符串,将它传递给这些WinAPI函数之一,然后将输出发送回您的GUI。
你想在多个平台上做到这一点,所以我建议制作一个通用模块(函数的类或名称空间,无论你最适合),允许使用操作系统终端不知道实际的下层操作系统。然后。当你想将应用程序移植到另一个操作系统时,只需更改此模块的实现。
注:(?有)升压正在开发一个库,由运行shell命令更容易,Boost.Process。但目前它的版本为0.4,并且自2010年10月4日以来尚未更新(即使其状态仍“持续”)。
这个工作是否可以让交互式命令行工作?例如,考虑Linux less或者Git的log命令,它们有交互作用。 – Tower
谈到针对Windows,Windows控制台窗口是“特殊”,因为它得到特殊待遇,比系统上的任何其他窗口不同。您不会成功操纵它以供您自己使用。举一个很好的例子,尝试在控制台窗口上使用Spy ++。
注意与AllocConsole
创建的窗口不是一个命令行解释器,它只是一个控制台窗口。
你应该实现自己的控制台窗口,并尽可能解释命令我能想到的几个选项取决于你所期望的,探索的行为,明智和复杂明智:
你说的“需要一些空间”是什么意思?你想在你的窗口上显示命令行吗?或者你想嵌入可执行文件吗?如果你想将它嵌入到可执行文件中,它应该是哪个命令行?最后一次调用? – RedX
我想在窗口内显示命令行,并在用户移动窗口时在窗口内移动。我希望它能正常工作,所以它只是嵌入在那里。嵌入可执行文件,或者以某种方式渲染/放入系统cmd。 – Tower
看到tenfours的答案,它是一个GUI应用程序或控制台应用程序? – RedX