You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
////////////////////////////////////////////////////////////////////// |
|
// |
|
// Redirector - to redirect the input / output of a console |
|
// |
|
// Developer: Jeff Lee |
|
// Dec 10, 2001 |
|
// |
|
////////////////////////////////////////////////////////////////////// |
|
|
|
#if !defined(AFX_REDIR_H__4FB57DC3_29A3_11D5_BB60_006097553C52__INCLUDED_) |
|
#define AFX_REDIR_H__4FB57DC3_29A3_11D5_BB60_006097553C52__INCLUDED_ |
|
|
|
#if _MSC_VER > 1000 |
|
#pragma once |
|
#endif // _MSC_VER > 1000 |
|
|
|
class CRedirector |
|
{ |
|
public: |
|
CRedirector(); |
|
virtual ~CRedirector(); |
|
|
|
protected: |
|
HANDLE m_hThread; // thread to receive the output of the child process |
|
HANDLE m_hEvtStop; // event to notify the redir thread to exit |
|
DWORD m_dwThreadId; // id of the redir thread |
|
DWORD m_dwWaitTime; // wait time to check the status of the child process |
|
|
|
HANDLE m_hStdinWrite; // write end of child's stdin pipe |
|
HANDLE m_hStdoutRead; // read end of child's stdout pipe |
|
HANDLE m_hChildProcess; |
|
|
|
BOOL LaunchChild(LPCTSTR pszCmdLine, LPCTSTR pszCurrentDirectory, |
|
HANDLE hStdOut, HANDLE hStdIn, HANDLE hStdErr); |
|
int RedirectStdout(); |
|
void DestroyHandle(HANDLE& rhObject); |
|
|
|
static DWORD WINAPI OutputThread(LPVOID lpvThreadParam); |
|
|
|
protected: |
|
// overrides: |
|
virtual void WriteStdOut(LPCSTR pszOutput); |
|
virtual void WriteStdError(LPCSTR pszError); |
|
|
|
public: |
|
BOOL Open(LPCTSTR pszCmdLine, LPCTSTR pszCurrentDirectory = NULL); |
|
virtual void Close(); |
|
BOOL Printf(PRINTF_FORMAT_STRING LPCTSTR pszFormat, ...); |
|
|
|
void SetWaitTime(DWORD dwWaitTime) { m_dwWaitTime = dwWaitTime; } |
|
}; |
|
|
|
#endif // !defined(AFX_REDIR_H__4FB57DC3_29A3_11D5_BB60_006097553C52__INCLUDED_)
|
|
|