升级Office365后VBScript调用Access关闭时闪现窗口问题咨询
问题原因
这个退出时窗口闪现的问题是Office 365版本Access的已知逻辑改动导致的:2016及之后的Access版本重构了进程退出阶段的资源清理逻辑,旧版Access退出时会直接销毁进程上下文,不会触发UI渲染;新版会在退出前强制重绘一次主窗口、加载启动页资源,该步骤会忽略此前设置的Visible = False属性,因此会出现短暂的窗口闪现。
该问题和数据库格式、脚本宿主(cscript/wscript)的位数无关,因此你之前的调整无法解决问题。
修复方案
- 方案1:调整脚本逻辑,新增显式关库步骤
在调用Quit方法前先执行CloseCurrentDatabase显式关闭已加载的数据库,同时禁用启动对话框加载,新版Access的清理逻辑会跳过无数据库加载状态下的窗口重绘,可解决绝大多数场景的闪现问题。
修改后的脚本参考:
<job id="wsf"> <script language="VBScript"> db_dir = "//mytestnetworkpath.com/somefolder/test.accdb" Set app = CreateObject("Access.Application") app.Visible = False app.UserControl = False app.SetOption "Show Startup Dialog Box", False ' 禁用启动对话框渲染 app.OpenCurrentDatabase(db_dir) ' 此处放置你的业务逻辑代码 app.CloseCurrentDatabase ' 先关闭数据库再执行退出 app.Quit Set app = Nothing </script> </job>
- 方案2:静默终止进程(仅适合无未保存数据的场景)
如果方案1仍存在闪现问题,可以在完成所有业务操作、保存全部数据后,通过WMI查询匹配对应Access进程的PID,调用Terminate方法直接销毁进程,不走Access自带的退出逻辑,完全避免UI渲染触发。
内容的提问来源于stack exchange,提问作者eign
相关产品推荐
相关产品推荐

