6 Star 3 Fork 0

阿甘/CTestAutoJudge

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
myprocess.h 3.04 KB
一键复制 编辑 原始数据 按行查看 历史
//用于实现进程调用的类-------------------------------------------------------
//该类实现了对CreateProcess的包装
#ifndef myprocessH
#define myprocessH
//---------------------------------------------------------------------------
class __declspec(dllexport) TMyProcess
{
private:
bool FReDirectInOut;
AnsiString FErrFileName;
void __fastcall SetWorkDir(AnsiString value);
void __fastcall SetTimeOut(int value);
void __fastcall SetInputFileName(AnsiString value);
void __fastcall SetOutputFileName(AnsiString value);
protected:
//可执行文件名,不包含路径,如bcc32.exe
AnsiString fileName;
//应用程序的工作目录,如C:\\program files\\,默认的工作目录为应用程序所在目录
AnsiString workDir;
//可执行文件输入重定向文件路径,如c:\\test\\input.txt ,默认程序是没有输入文件的
AnsiString inputFile;
//可执行文件输出重定向文件路径,如c:\\test\\output.txt,默认的文件名的基本名和可执行程序一致,且
//扩展名为.txt
AnsiString outputFile;
//程序执行超时时间,若该值为0(默认值),表示不限定执行时间,单位ms
int timeOut;
public:
//构造函数
//exeFileName:被调用进程对应的程序文件名,如d:\\test\hello.exe
//运行程序
//paprams:运行参数,表示命令行参数,为""表示不需要参数
//showWindow:是否显示窗口,true表示显示窗口
//返回值为0,表示子进程正常结束,为1表示子进程因为超时而被程序自动结束,为2表示有异常发生
int RunApp(AnsiString params,bool showWindow);
//构造函数,
//exeFileName:表示可执行程序文件
//使用此构造函数,工作目录由被调用的进程自行决定,设置workDir无效
//通常不建议使用该构造函数,因为该构造函数意味着无法自由设定被调用进程的工作目录
TMyProcess(AnsiString exeFileName);
//默认构造函数,如果要自定义被调用进程的工作目录或被调用进程的路径是由系统环境变量决定的,则应使用该构造函数
//使用此构造函数,RunApp中的para不能为空,否则调用RunApp将产生异常,将使用workDir及环境变量
TMyProcess();
//获取或设定应用程序的工作目录,只有当RunApp函数中的params参数不为空,且构造类对象时
//使用默认构造函数时才有效 ,默认值为被调用进程所在目录
__property AnsiString WorkDir = { read=workDir, write=SetWorkDir };
//设置被调用进程的超时时间,为0表示一直等到被调用进程执行文本,RunApp才退出,
//否则,一旦超时,自动结束被调用进程,设置一个大于0的值有助于自动结束有可能产生死循环的进程或长时间不退出的子进程
__property int TimeOut = { read=timeOut, write=SetTimeOut };
//获取或设置输入重定向文件,如:c:\test\input.txt,该值默认为"",表示没有输入重定向文件,也即被调用的子进程不需要输入,若设置的是一个不存在的
//文件,将会导致异常
__property AnsiString InputFileName = { read=inputFile, write=SetInputFileName };
//获取或设置输出重定向文件,如:c:\test\output.txt,该值默认为"",如果设置ReDirectInOut为true,则必须给出一个合法的存在的输出重定向文件
__property AnsiString OutputFileName = { read=outputFile, write=SetOutputFileName };
//是否对输入输出重定向,若设为false,这忽略InputFileName,OutputFileName设置
__property bool ReDirectInOut = { read=FReDirectInOut, write=FReDirectInOut };
__property AnsiString ErrFileName = { read=FErrFileName, write=FErrFileName };
};
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/gancaijun/CTestAutoJudge.git
git@gitee.com:gancaijun/CTestAutoJudge.git
gancaijun
CTestAutoJudge
CTestAutoJudge
develop

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385