应用进程对其他应用程序的调用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();

}

}

相关文档
最新文档