12429


[AppVeyor](http://www.appveyor.com/)を利用してWin32デスクトップアプリケーションの自動テストを行いたいと考えています。

テスト結果をコンソールに出力させたいのですが、デスクトップアプリ本体から呼び出し元コンソールに直接文字列を書き込む方法はあるのでしょうか？

今のところは、ファイルにテストの実行結果を書き込み、アプリケーション終了後に中身をコンソールにまとめて出力する方法で代用しています。ただしアプリケーション終了まで結果が表示されないため、テスト実行中にAppVeyor側がタイムアウトするとテスト結果がごっそり抜け落ちてしまい実用性に欠けます。

また、`AllocConsole`関数を利用したプログラムでは新規にコンソールが割り当てられるため、結果としてログに残りませんでした。

[code]

    AllocConsole();
    freopen("CONIN$", "r+t", stdin);
    freopen("CONOUT$", "w+t", stdout);
    printf("TEST TEST TEST");
    
[/code]

* * *

### 追記

アプリからコンソールへの出力方法は解決しましたが、どういうわけかAppVeyor環境ではこの方法でもビルドコンソールにログを残すことができませんでした。


CC BY-SA 3.0
2015-07-15T20:09:18.997
12399
2015-07-17T04:15:50.663
2015-07-17T04:15:50.663
2391
2391
question
c windows winapi
Windowsデスクトップアプリのテスト結果をコンソールに出力させたい


[stackoverflow](https://stackoverflow.com/questions/30098229/win32-application-
write-output-to-console-using-printf/)でも似たような質問を見つけて解決しました。

以下のように[`AttachConsole`](https://msdn.microsoft.com/en-
us/library/windows/desktop/ms681952.aspx)関数を呼び出すことで、呼び出し元コンソールへの文字列出力ができるようになります。（エラー処理は省略）

[code]

    AttachConsole(ATTACH_PARENT_PROCESS);
    freopen("CONIN$", "r", stdin);
    freopen("CONOUT$", "w", stdout);
    freopen("CONOUT$", "w", stderr);
    
[/code]


CC BY-SA 3.0
2015-07-16T18:50:42.323
12429
2015-07-16T18:50:42.323
2017-05-23T12:38:56.083
-1
2391
12399
answer