如何编个表单调用两个子系统(EXE文件)?
在一个目录下有两个子目录A和B,分别放有两个子系统A.EXE 和B.exe,如何编个主表单调用子系统,最后还能分别回到主表单,再重新调用。路径问题搞不好。
[解决办法]
在一个目录下有两个子目录A和B
把这个目录放到你的程序当前目录,然后在你的主程序加代码:
Public gcNowPath
gcNowPath=Addbs(Justpath(Sys(16)))
Set Default To (gcNowPath)
调用时:
ox=CreateObject("WScript.Shell")
ox.Run(gcNowPath+"目录\子目录\A.exe",1,1) && 第3个参数0表示调用后马上将控件权返回原调用程序,1表示直到被调用程序结束后才将控件权返回原调用程序(调用外部文件时让系统一直等待,直到运行结束才返回控制权就可以了)。
Release ox
[解决办法]
ox.run(...) 之前加一句:Application.Visible = .f.
以免用户看到两个界面,而主界面又在死等 a 或 b 结束并返回控制权
[解决办法]
* ================================================================= \\ 【设置系统环境】 SET EXCLUSIVE OFF SET TALK OFF SET SAFETY OFF SET DELETED ON SET EXACT ON SET ESCAPE OFF SET LOCK OFF SET NULLDISPLAY TO '' SET CENTURY ON &&指定日期的年为4位数 SET DATE AMERICAN && 月日年 SET HOURS TO 24 && 时间为24小时制 SET SYSMENU OFF &&关闭系统菜单 SET NOTIFY off CLEAR CLEAR ALL * --------------------------------------------- \\ 获得当前系统目录 DECLARE LONG GetSystemDirectory IN WIN32API STRING @ , LONG DECLARE LONG GetWindowsDirectory IN WIN32API STRING @ , LONG DECLARE LONG GetCurrentDirectory IN WIN32API LONG , STRING @ public LCSYSDIR , LCWINDIR , LCCURDIR , LNSTRINGLEN,n_dy LCSYSDIR = SPACE(200) + CHR(0) LCWINDIR = SPACE(200) + CHR(0) LCCURDIR = SPACE(200) + CHR(0) LNSTRINGLEN = GETSYSTEMDIRECTORY(@LCSYSDIR,200) LCSYSDIR = LEFT(LCSYSDIR,LNSTRINGLEN) LNSTRINGLEN = GETWINDOWSDIRECTORY(@LCWINDIR,200) LCWINDIR = LEFT(LCWINDIR,LNSTRINGLEN) LNSTRINGLEN = GETCURRENTDIRECTORY(200,@LCCURDIR) LCCURDIR = LEFT(LCCURDIR,LNSTRINGLEN) Sys(987,.T.) && 汉字兼容 set defa to &lccurdir _SCREEN.WINDOWSTATE = 1* ================================================================== \\ 【执行主程序】 DO FORM cx\sys_kl READ event CLEAR CLEAR ALL CLOSE all QUIT
[解决办法]