2011-11-04 60 views
0

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

infodisplayer filename.pdf >> info.txt 

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

对不起,我知道我没有描述我的问题很好,但我做的是这样的: Logic

+0

从技术上讲,你不能写入文件,而无需系统调用....你可以做的就是创建一个方法调用的输出或打印,并有附加到文件每次它被调用,你可以用你的打印语句替换它 –

+0

那么我将如何存储来自第三方控制台程序的信息?您可以在C#中执行 – ApprenticeHacker

+0

,您可以执行控制台重定向,但不知道WinAPI是否也将此功能导出到C++/C。 –

回答

3

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

} 
相关问题