代替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
蚜虫的资料
PINGCO#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)))
directdrawRETURN
ENDIF
IF gnExitCode != 0
=MSG_ERR("ARJ 压缩出错! ARJ 退出码:"+ALLTRIM(STR(gnExitCode)))
RETURN
刷式密封
ENDIF