如何使用VBScript检查MS Word是否正在运行

Our*_*nas 2 vbscript process

我们有一个运行MS Word(隐藏)以打印文档的应用程序。

如果其中一台打印机有问题,则在等待后台处理程序返回“排队”消息时,Word将挂起。

我们发现如果使Word可见(例如,通过在Excel中使用VBA GetObjectoWordApp.visible=true),该过程将继续打印其他文档而不会出现问题。

我们希望通过对正在运行的进程中的Word进行VBScript检查来使其更加自动化,如果找到它,使其可见,等待几秒钟,将其隐藏,然后退出...

但是我有一个问题,如果VBScript GetObject函数尚未运行,它会实例化Word。

如何在不创建单词实例的情况下使用VBScript检查该单词是否正在运行?

这是我在VBScript文件中拥有的代码:

dim oWord, WScriptShell

set oWord = getobject("", "Word.Application")
set WScriptShell = CreateObject("WScript.Shell")

if isobject(oWord)  then 'and oWord.Documents.count>0
    wscript.echo("Word is running")
    oWord.visible=true
    WScript.Sleep 1000
    oWord.visible=false
else
    wscript.echo("Word not running")
end if
Run Code Online (Sandbox Code Playgroud)

所以我应该使用什么来检查word是否在运行而不创建它的实例?

Kek*_*mau 5

只需更改GetObject("", "Word.Application")GetObject(, "Word.Application"),它就不会启动实例。
但这会在Word 运行时引发错误,因此您可以像这样使用它:

msgbox wordIsRunning

function wordIsRunning
    dim wdApp
    on error resume next
    set wdApp = GetObject(, "Word.Application")
    wordIsRunning = (err.Number = 0)
    set wdApp = nothing
end function
Run Code Online (Sandbox Code Playgroud)