

Windowsでコンソールエミュレータを作りたいのですがどのようにすればよいのでしょうか?  
ここでいうコンソールエミュレータとはConEmuのようなものです。  
cmd.exeやPowershellではきれいにフォントを表示できないので自作を考えています。

タブ機能を実装してみたいのですが、どうも`AllocConsole`は一つのプロセスで一回までと決まっており、2つ以上のコンソールを開けません。  
どうすればよいのでしょうか?

また、AllocConsoleを呼ぶとcmd.exeのような画面が表示されてしまいます。  
これを表示せずに自前で実装したいのですが、うまく表示させない方法はありますか?  
ちなみにC++を使っています

OS:Windows10 1803


CC BY-SA 4.0
2018-07-30T14:56:06.927
47106
2022-01-03T08:30:42.463
2021-07-31T07:53:15.477
3060
5246
question
c++ windows visual-studio windows-10 console
自作コンソールエミュレータで複数のコンソールを表示する


[`SetParent`](https://msdn.microsoft.com/en-
us/library/windows/desktop/ms633541\(v=vs.85\).aspx)というWindows
APIがあります。これを使うことで任意のウィンドウに対して親ウィンドウを変更することができます。`AllocConsole`で作られるウィンドウに対して親ウィンドウを自作アプリに指定することで実現できるかなと思います。


CC BY-SA 4.0
2018-07-31T13:27:35.597
47137
2018-07-31T13:27:35.597
4236
47106
answer


[ConEmu](https://conemu.github.io/en/Source.html "ConEmu")
は折角のオープンソースですから、ソースを見てみてはいかがですか。

ただ、何となくアプローチが間違っているような気がします。  
このようなソフトは、標準入出力・エラー出力をパイプって、入力・出力を自分で行うのではないでしょうか。  
(昔、cygwinのターミナルソフトを自作した時は、そのようにした)

Win32であれば、こんな感じです。(出力だけですが)

  * [パイプにより標準出力をエディットボックスに取り込む](http://yamatyuu.net/computer/program/sdk/base/cmdpipe1/index.html "パイプにより標準出力をエディットボックスに取り込む")

ちょっとずれているかもしれませんが、参考になれば。


CC BY-SA 4.0
2018-07-31T15:43:01.527
47141
2021-07-31T07:53:36.283
2021-07-31T07:53:36.283
3060
15473
47106
answer


Windows Terminal という有名なオープンソースのプロダクトがあるのですが、ご存知ですか？

最初からご自身でターミナルソフトを開発するのではなく、まずはこのWindows Terminalを改造したり、Windows
Terminalのアドオンを作るところから初めてはいかがでしょう。

<https://github.com/microsoft/terminal>


CC BY-SA 4.0
2022-01-03T08:30:42.463
85462
2022-01-03T08:30:42.463
37017
47106
answer