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

发布于 2024-12-14 04:12:06 字数 463 浏览 1 评论 0原文

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

 infodisplayer filename.pdf >> info.txt

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

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

Okay, so my gui program depends on another third-party console program to display info on pdfs. The console program takes the filename of the pdf as an argument and displays the info. I store the displayed info in a textfile. My gui program then reads the text file and displays it in an edit window. For storing the displayed info in a text file , right now I am using the system call:

 infodisplayer filename.pdf >> info.txt

Which stores the output into "info.txt" which my gui program then reads. Now this displays an irritating console window because it needs a command processor. I want to not display the console window. So is there some way using the WinApi , Glib , Gtk+ or the C Standard Library that stores the output of a console program in a text file so that I won't have to resort to a system call? Thanks.

Sorry I know the I didn't describe my problem well, but what I am doing is this:
Logic

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜夜流光相皎洁 2024-12-21 04:12:06

下面的程序应该可以解决问题。顺便说一句,这个程序使用 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);

}

Follwing program should do the trick. BTW, this program uses Windows API.

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

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

You can put this code block in a Timer event to check the existence of Console Window frequently. or even better you can use this:

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

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文