1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #pragma once
-
- #include "tchar.h"
- #include "windows.h"
- class CProcess
- {
- public:
- // 管道类型
- enum PipeType { pIn, pOut, pErr };
- // 读写方式
- enum Direction { Read, Write };
- // 程序执行的方式
- enum ExecType { ASYNC, SYNC };
- CProcess();
- CProcess(ExecType execType);
- ~CProcess();
- // 创建一个指定执行方式的进程类
- BOOL Create(ExecType execType);
- // 执行脚本
- BOOL Execute(LPCTSTR Command);
- // 进程类是否正常
- BOOL IsOk() { return m_hPipes[pIn][Write] != INVALID_HANDLE_VALUE; }
- // 获取进程id
- DWORD GetPid() { return m_dwProcessId; }
- // 从管道读取一行
- size_t ReadLine(LPVOID lpBuffer, size_t len, char seq = '\n');
- // 向管道写入
- size_t WriteSome(LPVOID lpBuffer, size_t len);
- // 关闭管道
- void ClosePipes();
- protected:
- BOOL CreatePipes();
-
- private:
- DWORD m_dwProcessId;
- HANDLE m_hPipes[3][2];
- ExecType m_execType;
- };
|