应用进程对其他应用程序的调用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用进程对其他应用程序的调用
在我们设计的应用程序中,很可能会用到其他应用程序来完成某一特定功能。例如,当我们为了便于数据的传输而对诸多文件进行压缩和解压缩时,一种做法是我们自己设计一个这样的压缩/解压缩程序,然后以动态链接库(DLL)或者函数库的形式由主应用程序调用。但更方便而且高效的做法是利用这方面现有的优秀软件,如ARJ.EXE等,并以进程的形式调用它,再在适当时候关闭它。下面将以此为例,具体介绍后一种方法的实现过程。
1. 在需要调用ARJ.EXE进行压缩/解压缩的类中,创建一个成员函数,不妨称作CreateBat(),其作用是生成一个批处理文件。由该批处理文件调用ARJ.EXE,并给出具体压缩/解压缩参数。然后,利用MS-DOS的DIR命令生成一个临时文件,
以作为压缩/解压缩工作完成的标志。
编者注:Createbat源代码发表
/98/skill/default.htm。下同。欢迎访问!
该函数执行后,将生成一个批处理文件,内容大致是:
ARJ A -V1440 压缩后文件的路径名+文件名被压缩文件的路径名+文件名-Y -JM
DIR >临时文件名
或者是:
ARJ E -V1440 被解压缩文件的路径名+文件名解压缩后文件的路径名+文件名-Y -JM
DIR >临时文件名
2. 在需要调用ARJ.EXE进行压缩/解压缩的类中,再创建一个成员函数,不妨称作RunBat(),
其作用是创建和执行进程来运行上述所生成的批处理文件,并在适当时候撤消进程。
3. 同时按下Ctrl和W键或直接单击工具条上的ClassWizard按钮,打开ClassWizard对话框。在类名(Class name)列表框中选择需要调用ARJ.EXE进
行压缩/解压缩的类,在Object IDs列表框中选择该类的类名,在消息(Messages) 列表框中选择WM_TIMER消息并双击它,这时ClassWizard就会在该类中加入
一个OnTimer()函数。该函数将以一定的时间间隔检查压缩/解压缩程序是否
已经执行完毕,即检查作为标志的临时文件是否已经存在,并及时修改状态
变量“Search”,以便通知RunBat()函数结束进程。voidCMyCompress::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default CFile file;
CFileException Error;
if (file.Open(ExitFlag,CFile::modeRead,&Error)) {
Search=FALSE;
file.Close();
}
}