Как сохранить вывод программы на консоль в текстовом файле? - PullRequest
0 голосов
/ 04 ноября 2011

Хорошо, моя графическая программа зависит от другой сторонней консольной программы для отображения информации в формате PDF. Консольная программа принимает имя файла PDF в качестве аргумента и отображает информацию. Я храню отображаемую информацию в текстовом файле. Моя графическая программа затем читает текстовый файл и отображает его в окне редактирования. Для хранения отображаемой информации в текстовом файле, сейчас я использую системный вызов:

 infodisplayer filename.pdf >> info.txt

Который сохраняет выходные данные в "info.txt", который затем читает моя программа графического интерфейса. Теперь это отображает раздражающее консольное окно, потому что ему нужен командный процессор. Я хочу, чтобы не отображать окно консоли. Так есть ли способ использовать WinApi, Glib, Gtk + или стандартную библиотеку C, которая хранит вывод консольной программы в текстовом файле, чтобы мне не пришлось прибегать к системному вызову? Спасибо.

Извините, я знаю, что плохо описал свою проблему, но я делаю так: Logic

1 Ответ

3 голосов
/ 04 ноября 2011

Программа Follwing должна сделать свое дело. Кстати, эта программа использует Windows API.

HWND hWnd = FindWindow(null, "Console Window title here");

if (hWnd != NULL)
 {
      ShowWindow(hWnd, 0); // 0 = SW_HIDE               
 }

Вы можете поместить этот блок кода в событие таймера, чтобы часто проверять наличие консольного окна. или даже лучше, вы можете использовать это:

char MyCommand[]="cmd.exe /c infodisplayer filename.pdf >> info.txt"; 
int res = CreateProcess(NULL, MyCommand , NULL, NULL, FALSE, CREATE_NO_WINDOW ,
                        NULL, NULL, &StartInfo, &ProcInfo);
if (res)
{

   WaitForSingleObject(ProcInfo.hThread, INFINITE);

}
...