CProcess.h 836 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #pragma once
  2. #include "tchar.h"
  3. #include "windows.h"
  4. class CProcess
  5. {
  6. public:
  7. // 管道类型
  8. enum PipeType { pIn, pOut, pErr };
  9. // 读写方式
  10. enum Direction { Read, Write };
  11. // 程序执行的方式
  12. enum ExecType { ASYNC, SYNC };
  13. CProcess();
  14. CProcess(ExecType execType);
  15. ~CProcess();
  16. // 创建一个指定执行方式的进程类
  17. BOOL Create(ExecType execType);
  18. // 执行脚本
  19. BOOL Execute(LPCTSTR Command);
  20. // 进程类是否正常
  21. BOOL IsOk() { return m_hPipes[pIn][Write] != INVALID_HANDLE_VALUE; }
  22. // 获取进程id
  23. DWORD GetPid() { return m_dwProcessId; }
  24. // 从管道读取一行
  25. size_t ReadLine(LPVOID lpBuffer, size_t len, char seq = '\n');
  26. // 向管道写入
  27. size_t WriteSome(LPVOID lpBuffer, size_t len);
  28. // 关闭管道
  29. void ClosePipes();
  30. protected:
  31. BOOL CreatePipes();
  32. private:
  33. DWORD m_dwProcessId;
  34. HANDLE m_hPipes[3][2];
  35. ExecType m_execType;
  36. };