VFP表单打开Excel文档时无法关闭表单的问题求助
问题原因与解决方法
你的问题根源在run方法的第三个参数.T.——这个参数会让VFP一直等待Excel程序关闭后才继续执行后续代码,相当于把表单的线程给阻塞了,所以Excel开着的时候表单根本没法响应关闭操作。
解决方法1:修改WScript.Shell调用参数
把第三个参数改成.F.,让VFP调用Excel后不等待,直接回到表单的交互状态:
excelDoc = CREATEOBJECT("wscript.shell") excelDoc.run("Excel"+ " " + filePath, 3, .F.)
解决方法2:用VFP自带的ShellExecute函数(推荐)
不需要依赖WScript.Shell,直接调用系统API更稳定,同样不会阻塞表单:
DECLARE INTEGER ShellExecute IN shell32.dll ; INTEGER hndWin, ; STRING cAction, ; STRING cFileName, ; STRING cParams, ; STRING cDir, ; INTEGER nShowWin ShellExecute(0, "open", filePath, "", "", 3)
这里的3对应最大化窗口显示,和你原来的run方法效果一致。
内容的提问来源于stack exchange,提问作者Big Gerry
相关产品推荐
相关产品推荐

