注册 登录
编程论坛 VFP论坛

求WScript.Shell运行外部程序写法

weiyisc 发布于 2023-07-03 14:36, 771 次点击
执行文件路径含参数:D:\RMClient\RM.StartWebBrowser.exe his_param_mode=3 url=http://10.10.100.3:8888 rmkj_userno=1000 his_param_dept=37 his_param_ward=37 his_param_patno=2301275 his_param_patid= his_param_patname= his_param_inpno= his_param_pattype= his_param_hospital= his_param_idcard= his_param_barcode= inpdate=2023-05-10 outdate=2023-05-10

下面写法报错:
ox=CreateObject("WScript.Shell")
ox.Run(["&q"],1,0)
RELEASE ox

只有本站会员才能查看附件,请 登录


求教。。。。
8 回复
#2
laowan0012023-07-03 14:51
MESSAGEBOX( "&q")    && asdasd
MESSAGEBOX( ["&q"])    && "asdasd"
#3
weiyisc2023-07-03 14:57
以下是引用laowan001在2023-7-3 14:51:20的发言:

MESSAGEBOX( "&q")    && asdasd
MESSAGEBOX( ["&q"])    && "asdasd"


版主,什么意思?没有看懂。。。。
#4
csyx2023-07-03 15:10
看上去 q 很长,应该超出宏替换允许的长度了,况且也不需要用宏替换
两端是否需要加引号?一定要加的话也该是这样:
ox.Run(["]+q+["],1,0)

[此贴子已经被作者于2023-7-3 15:12编辑过]

#5
weiyisc2023-07-03 15:26
回复 4楼 csyx
是有点长。我在试试
#6
weiyisc2023-07-03 15:45
回复 4楼 csyx
是有点长。我在试试
#7
laowan0012023-07-03 16:59
以下是引用weiyisc在2023-7-3 14:57:00的发言:



版主,什么意思?没有看懂。。。。


MESSAGEBOX( "&q")    && asdasd
MESSAGEBOX( ["&q"])    && "asdasd"
两种写法的结果是不一样的,上面两句是运行后的结果
你出错的写法是第2种,相当于 ox.RUN("asdasd",1,0),就是你的q值两边加上了双引号,可以试试下面的写法
 ox.RUN(q,1,0)
#8
csyx2023-07-03 18:05
两边加引号并没有错,而且是推荐的写法,路径中存在空格时就必须加双引号。例如:
vfp = home() + 'vfp9.exe'   && 默认安装路径 C:\Program Files (x86)\Microsoft Visual FoxPro 9\ 是带空格的
ox.run(vfp)     && 出错
ox.run(["] + vfp + ["])   && 正常启动

楼主的错误不是引号的原因,而是 "&q" 展开后的字符串超出了 vfp 字符串【字面长度】不能大于 255 的限制。
1. 如果是 ox.run("&q"),则 len(q) 应该 <= 255
2. 如果是 ox.run(["&q"]),则 len(q) 应该 <= 255 - 2
所以这里不能用 &

楼主要执行的 exe 路径没有空格,因此,不需要带参数的话
q = 'D:\RMClient\RM.StartWebBrowser.exe'
ox.run(q)
或者
ox.run(["] + q + ["])
都可以正常运行

但楼主的需求是必须带参数,因此双引号就是必须的,语法如下:
exe = 'D:\RMClient\RM.StartWebBrowser.exe'
arg = 'his_param_mode=3 url=http://10.10.100.3:8888 ' + .......
ox.run(["] + exe + [" ] + arg)    && 注意第二个双引号后有一空格

或者干脆简单点,q 赋值时就加上双引号
q = '"D:\RMClient\RM.StartWebBrowser.exe" his_param_mode=3 ' + ....
ox.run(q)


[此贴子已经被作者于2023-7-3 18:17编辑过]

#9
weiyisc2023-07-05 15:31
回复 8楼 csyx
感谢感谢!
1