ウインドウアプリとコンソールアプリを分岐させ動作させたい – プログラミング – Home

ウインドウアプリとコンソールアプリを分...
 
通知
すべてクリア

ウインドウアプリとコンソールアプリを分岐させ動作させたい


えな
 えな
(@えな)
ゲスト
結合: 14年前
投稿: 2
Topic starter  

1つのプログラムで 実行時の引数により
ウインドウプログラムとコンソールプログラムのどちらも動かせるように
したいと思ってます。
実際にWinMainでウインドウプログラムを作成してから
コマンドラインで動作するように作ってみましたが、
printfのような出力メッセージが機能しません。

printfを出力させるためにはどうしたらよいのでしょうか?


引用解決済
トピックタグ
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 18年前
投稿: 178
 

GUIで起動した場合は標準入出力が設定されていません。
のでprintf()は出力先がないことになります。

AllocConsole()でコンソールを開けるようですが…

適当に検索してみると
http://www.f13g.com/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0/C_C++/Windows/GUI%A4%C8CUI%A4%F2%BA%AE%BA%DF%A4%B5%A4%BB%A4%EB/
こんなページを見つけました。
試してみる価値はある…かと思われます。

# CUIからプロセス起動させた場合に、呼び出し元のCUIが使えるのか…というのはありま
すが……。


返信引用
えな
 えな
(@えな)
ゲスト
結合: 14年前
投稿: 2
Topic starter  

返信ありがとうございます。

AllocConsole()は私も試してみたのですが
これは、別のコンソール用のウインドウが立ち上がるもののようで
コマンドプロンプト画面に直接文字を出力してくれないようなのです。

私としてはコマンドプロンプト画面に直接文字を出力してほしいので
こちらの方法以外のやり方を探しております。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

逆に、consoleで起動して、
別スレッドでメッセージループを回すのはどうでしょうか。
コンソールアプリでもwin32でメッセージポンプさえしてあげれば
ウィンドウも表示動作できますので、いけそうな気がします。
(私が以前やったときはコンソール側は出力専用にしてましたので
入力は未確認ですが)


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

追伸
私も同じようなことをしたことがありますがその時は、
ウィンドウメイン時は
コンソールのHWNDを取ってそれを非表示にしました。


返信引用
かもねぎ
 かもねぎ
(@かもねぎ)
ゲスト
結合: 17年前
投稿: 61
 

1つのプログラムで・・・ということですが

3つプログラムを用意してはいかがでしょうか?

CmdSwitch.exeはWinMainがエントリーでコマンドラインを分析

コマンドラインの結果で

GUI.exe か CUI.exe のどちらかを起動する


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

なぜ「1つのプログラム」である必要があるのか疑問です。
そのあたりの理由がはっきりすれば他の選択肢もあるんじゃないでしょうかね。

私なら、処理を行う部分(共通部分)をDLLにして、ユーザインターフェースを
2種類作成します。
最初に起動されるプログラムはCUI/GUIのどちらでもいいですが、コマンドライ
ンの解析結果によって逆のプログラムを起動するようにしておけばいいだけの
ような気がします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました