2011-11-04 2 views
0

그래, 내 gui 프로그램은 다른 타사 콘솔 프로그램에 따라 PDF 정보를 표시합니다. 콘솔 프로그램은 pdf의 파일 이름을 인수로 취하여 정보를 표시합니다. 표시된 정보를 텍스트 파일에 저장합니다. 내 gui 프로그램은 텍스트 파일을 읽고 편집 창에 표시합니다. 내 GUI 프로그램은 다음 읽기 "info.txt"에 출력을 저장프로그램의 콘솔 출력을 텍스트 파일에 저장하는 방법은 무엇입니까?

infodisplayer filename.pdf >> info.txt 

을 : 지금 나는 시스템 호출을 사용하고, 텍스트 파일에 표시되는 정보를 저장하십시오. 이제 명령 프로세서가 필요하기 때문에 짜증나는 콘솔 창을 표시합니다. 콘솔 창을 표시하지 않습니다. 그래서 WinApi, Glib, Gtk + 또는 C 표준 라이브러리를 사용하여 콘솔 프로그램의 출력을 텍스트 파일에 저장하여 시스템 호출에 의존하지 않아도되는 방법이 있습니까? 감사.

죄송합니다 나는 내가 아니라 내 문제를 설명하지 않았다 알고 있지만, 내가 무엇을하고 있는가하는 것은 이것이다 : 트릭을 할해야 Logic

+0

기술적으로 당신이 파일에 쓸 수있는 시스템 호출없이 .... 당신이 할 수있는 것은 출력하거나 인쇄라는 방법을 만들고 해당 파일에 추가해야이다 호출 될 때마다 –

+0

대신 print 문으로 교체 할 수 있습니다. 그러면 타사 콘솔 프로그램의 정보를 어떻게 저장할 수 있습니까? – ApprenticeHacker

+0

C#에서 콘솔 리디렉션을 할 수 있지만 WinAPI가이 기능을 C++/C로 내 보내면 확실하지 않습니다. –

답변

3

follwing을 프로그램. BTW,이 프로그램은 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); 

} 
관련 문제