【问题标题】:VB SCript - CreateObject hangs programVB SCript - CreateObject 挂起程序
【发布时间】:2020-04-09 17:01:48
【问题描述】:

背景:我写了一个VB脚本来将一个文件夹中的所有word文档合并到一个文件中。我从 C++ 代码运行这个 VB 脚本。 当我在服务器本身上运行这个 VB 脚本时,它工作正常。但是,当从客户端计算机触发此服务器代码时,它会挂起(此 VB 脚本仍仅在服务器计算机上运行)。

我已经从 VB 脚本中删除了我的整个逻辑以查找根本原因,并且只有以下代码,没有别的。

Dim wdApp
Set wdApp = CreateObject("Word.application")
wdApp.visible = false
wdApp.Quit
Set wdApp = Nothing

这个 CreateObject 导致系统挂起,然后逐渐消耗内存并导致分页。

我尝试设置 wdApp.visible = true -> 没有错误消息。

【问题讨论】:

  • 听起来你需要描述客户端 -> 服务器场景多一点你是如何从服务器上的客户端执行 VBScript 的?
  • @Lankymart 这是一个普通的N层架构。从客户端我调用一个特定的操作,它触发了服务器端的并行功能。服务器端 C++ 调用这个 VB 脚本。我的观察是,如果服务器客户端在同一台机器上它工作正常,但是如果在不同的机器上我遇到了这个问题。

标签: vbscript freeze createobject


【解决方案1】:

CreateObject("Word.Application") 创建 Word 应用程序对象的新实例

你应该首先尝试获得一个已经运行的

这是正确的方法

Dim wdApp As Object

On Error Resume Next
Set wdApp = GetObject(, "Word.Application") ' try getting a running instance of Word
If Err.Number <> 0 Then Set wdApp = CreateObject("Word.Application") ' if unsuccessful, try creating a new instance of Word
On Error GoTo 0

If wdApp Is Nothing Then
    MsgBox "couldn't get or create an instance of Word"
    Exit Sub
End If

wdApp.Visible = False

' your code with wdApp

wdApp.Quit
Set wdApp = Nothing

【讨论】:

  • 感谢您的回复 HTH,但是此代码也导致了相同的结果。当我从客户端触发此服务器代码时,此脚本会挂起系统。 (再次提及,当我直接在服务器上运行此代码时,它工作正常。但是当我从客户端触发此代码在服务器上运行时,它会导致此问题
  • 客户端是否安装了Microsoft Word?
  • @Lankymart 是的 MS Office 已安装在客户端上
猜你喜欢
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
相关资源
最近更新 更多