如何将程序的控制台输出存储在文本文件中?

时间:2011-11-04 05:48:16

标签: c winapi gtk glib

好的,所以我的gui程序依赖于另一个第三方控制台程序来显示pdf上的信息。控制台程序将pdf的文件名作为参数并显示信息。我将显示的信息存储在文本文件中。然后我的gui程序读取文本文件并将其显示在编辑窗口中。为了将显示的信息存储在文本文件中,我现在正在使用系统调用:

 infodisplayer filename.pdf >> info.txt

将输出存储到我的gui程序读取的“info.txt”中。现在这显示了一个恼人的控制台窗口,因为它需要一个命令处理器。我想不显示控制台窗口。那么有没有办法使用WinApi,Glib,Gtk +或C标准库将控制台程序的输出存储在文本文件中,这样我就不必诉诸系统调用了?感谢。

抱歉,我知道我没有很好地描述我的问题,但我正在做的是: Logic

1 个答案:

答案 0 :(得分:3)

Follwing程序应该可以解决问题。顺便说一句,这个程序使用Windows API。

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

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

您可以将此代码块放在Timer事件中,以经常检查控制台窗口是否存在。或者更好的是你可以使用它:

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);

}