2010-02-07 2 views
4

표준 출력에 로그 메시지를 작성하는 관리되지 않는 DLL이 있습니다. 이 DLL을 WPF 응용 프로그램에서 P-invokes로 호출하고 표준 출력 스트림 로그를 가져와야합니다. Console.SetOut을 시도했지만 Console.Write 등을 사용하여 작성된 정보 만 캡처하는 것 같습니다.비 관리 DLL을 p-invoked 할 때 stdout을 얻는 중입니까?

누구나 아이디어가 있습니까? 다른 곳에서 묻는 similar questions을 찾았지만 답변이 없습니다.

+0

이 DLL을 호출하는 중개 기본 DLL을 작성하고 표준 출력을 캡처 한 다음 P/Invoke를 통해 모든 것을 다시 관리합니까? –

+0

그럴 수도 있습니다. 비록 그것이 돌아 왔을 때 데이터를 표시하기를 원했기 때문에 정말 짜증나는 일 이었지만 폴링과 여분의 래퍼 라이브러리가 필요했습니다. 나는 그것을하는 더 깨끗한 방법이 있기를 바라고 있습니다. – RandomEngy

답변

2

이미 PInvoke에게 전화를하고 있으므로 SetStdHandle에 대한 추가 전화는 신경 쓰지 않아도됩니다. 유사한 스레드가 여기에 있습니다 Redirect stdout+stderr on a C# Windows service

+0

나는 질문을 한 후에 그것을 실제로 발견했지만 슬프게도 나를 위해 일하지 않았다. 아마 이것이 MinGW에서 크로스 컴파일된다는 사실은 어떻게 든 출력 스트림을 엉망으로 만든다. 다른 DLL을 얻고 빌드 방법이 변경되는지 확인하겠습니다. – RandomEngy

+0

동의 함 ... 교차 컴파일 된 MinGW .dll이 다르게 작동합니다. 나는 자신의 출력을 포착하고 Pinvoke를 통해 콜백을 호출해야했습니다. – RandomEngy

관련 문제