代替 VFP 的 RUN 命令的最好方法

代替 VFP 的 RUN 命令的最好方法(VC6写的ShellExW.DLL,源程序ShellExW.CPP见我的主页)  
   ShellExW.CPP --- VC6 编译,生成一个供 VFP 等调用的 .DLL  

   代替 VFP 的 RUN 命令的最好方法:在 VFP 数据库应用程序设计中,经常需要调用一些以前在 MS-DOS 环境下运行的应用程序。这时候我们经常会想到 RUN 命令。利用 RUN 命令确实可以运行 MS-DOS 应用程序,但是却会跳出一个令人讨厌的黑屏幕。曾有人提出用 Win32 API 的 WinExec 来解决。但它和 RUN 命令一样也无法知道 MS-DOS 应用程序是否执行完成,无法取得 MS-DOS 应用程序的退出码(在 DOS 的 .BAT 中可用 IF ERRORLEVEL ... 检测)。使用本程序提供的函数ShellExecWait(),你可以运行 MS-DOS 应用程序或 Windows 应用程序直到其结束并取得其退出码,可以控制窗口是否显示和显示模式。  

   执行一个外部程序直到结束,返回结果码(0=ok)和外部程序退出码。  
   如果外部程序要使用输入输出重定向,请写一个 .BAT  
   外部程序执行时窗口是否显示和显示模式由n_ShowWinMode参数指定,参见 VC6的 WINUSER.H:  
#define SW_HIDE             0  
#define SW_SHOWNORMAL       1  
#define SW_NORMAL           1  
#define SW_SHOWMINIMIZED    2  
#define SW_SHOWMAXIMIZED    3  
#define SW_MAXIMIZE         3  
#define SW_SHOWNOACTIVATE   4  
#define SW_SHOW             5  
#define SW_MINIMIZE         6  
#define SW_SHOWMINNOACTIVE  7  
#define SW_SHOWNA           8  
#define SW_RESTORE          9  
#define SW_SHOWDEFAULT      10  
#define SW_FORCEMINIMIZE    11  
#define SW_MAX              11  

   VFP 调用举例:  

DECLARE INTEGER ShellExecWait IN ShellExW.DLL ;  
        STRING lpProgName, STRING lpParms, ;  
        SHORT n_ShowWinMode, INTEGER @ExitCode  

rc = ShellExecWait("../ARJ.EXE"+CHR(0),"A ../ARJ/"+c_SEL_DATE+".ARJ"+;  
              " ../OUTPUT/"+c_SEL_DATE+"*.*"+CHR(0),;  
              gnDOSpgmShowWinMode, @gnExitCode)  
*出错处理  
IF rc != 0  
    =MSG_ERR("调用 ARJ 压缩出错! 出错码:"+ALLTRIM(STR(rc)))  
    RETURN  
ENDIF  
IF gnExitCode != 0  
    =MSG_ERR("ARJ 压缩出错! ARJ 退出码:"+ALLTRIM(STR(gnExitCode)))  
    RETURN  
ENDIF
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值