Неконсольноя приложение - вывод в консоль Win C++
никак.
Собранные при помощи mingw приложения норовят создавать stdout.txt и stderr.txt.
создать новую консоль не подходит?
создать новую консоль не подходит?будет вывод в новую консоль, а хотят в старую.
AttachConsole(ATTACH_PARENT_PROCESS);должен прицепить тебя к консоли папы, после чего заработают cout, printf, итп.
Спасибо, работает. Единственное, что printf и cout << не работают, приходится _cprintf использовать.
printf и cout << не работаютА ты им сообщаешь, что у тебя новая консоль? Ну, там, cout было бы неплохо на неё перенацелить, и у сишной среды тоже какие-то методы были.
http://bytes.com/forum/thread665637.html
Делает то, что обещает. Правда пользы от этого особой нет, результат такой-же, как если использовать _cprintf;
Вот, нашел такую функцию
#include <Tlhelp32.h>
#include <cstdio>
#include <io.h>
#include <fcntl.h>
#include <iostream>
#include <ios>
BOOL RedirectIOToConsole(DWORD dwParent)
{
int hConHandle;
long lStdHandle;
FILE *fp;
// allocate a console for this app
BOOL bRet = AttachConsole(dwParent);
if (!bRet)
return bRet;
// redirect unbuffered STDOUT to the console
lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "w");
*stdout = *fp;
setvbuf(stdout, NULL, _IONBF, 0);
// redirect unbuffered STDIN to the console
lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "r");
*stdin = *fp;
setvbuf(stdin, NULL, _IONBF, 0);
// redirect unbuffered STDERR to the console
lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "w");
*stderr = *fp;
setvbuf(stderr, NULL, _IONBF, 0);
// make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog
// point to console as well
ios::sync_with_stdio;
return bRet;
}
Делает то, что обещает. Правда пользы от этого особой нет, результат такой-же, как если использовать _cprintf;
Оставить комментарий
Devid
Как можно вывести что-нибудь в консоль, из которой было запущенно неконсольное приложение?Например, как сделать чтобы на команду "app.exe -h" выводился help?
cout <<, printf не выводят.