Tower
Tower

Reputation: 102785

Embed command line inside window?

Is it possible to embed system command line right inside your application window?

I want to be able to have the command line take some space on the bottom of my C++ application, and my application to take the above space. Ideally it should work on Mac, Linux and Windows, but for starters Windows is the primary goal as I am developing on it.

Upvotes: 2

Views: 1747

Answers (2)

Paul Manta
Paul Manta

Reputation: 31577

In Windows, you can do that using some WinAPI functions like ShellExecute and CreateProcess (there are a few others that I don't remember). You get the command string from your GUI, pass it to one of these WinAPI functions, then send the output back to your GUI.

You want to do this on multiple platforms, so I would suggest making a generic module (class or namespace of functions, whatever fits you best) that allows using the OS terminal agnostic of the actual underling OS. Then. when you want to port your app to another OS, you just change the implementation of this module.

Note: Boost has (had?) a library under development that made running shell commands easier, Boost.Process. But it's currently on version 0.4 and hasn't been updated since October 4, 2010 (even though its status is still "on going").

Upvotes: 1

tenfour
tenfour

Reputation: 36896

Speaking for Windows, the Windows console window is "special" in that it gets special treatment, different than any other window on the system. You will not succeed in manipulating it for your own use. For a good example, try using Spy++ on a console window.

Note that the window created with AllocConsole is not a command-line interpreter, it's just a console window.

You should implement your own console window, and as far as interpreting the commands I can think of a few options to explore depending on what you expect, behavior-wise and complexity-wise:

  1. Delegate commands to a hidden cmd.exe
  2. Interpret commands yourself
  3. There are probably open-source solutions for command line interpreting.

Upvotes: 1

Related Questions